Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

EM_SETCUEBANNER глючит на текстовом поле

7
24 марта 2015 года
@pixo $oft
3.4K / / 20.09.2006
Имеется текстовое поле, обыкновенный EDIT. Пишу следующий код в WM_INITDIALOG:
Цитата:
SendDlgItemMessage(hDlg,TxtPwd,EM_SETCUEBANNER,0,(LPARAM)"Щёлкните для изменения");

В результате получаю следующую картину:Как видите, в поле «Пароль» почему-то получается всякая байда вместо серого текста cue banner'а. ЧЯДНТ?

P.S. Объясните значение параметра LPARAM для EM_SETCUEBANNER, а то MSDN не открывает статью по этому сообщению, да и по многим другим тоже.

326
24 марта 2015 года
sadovoya
757 / / 19.11.2005
Прикольно, первый случай, когда справка по API из Delphi оказалась полезней MSDN :) Вот цитата из Delphi Help:
Цитата:
EM_SETCUEBANNER Message

--------------------------------------------------------------------------------

The EM_SETCUEBANNER message sets the textual cue, or tip, that is displayed by the edit control to prompt the user for information. For more discussion of this, see the Remarks section.

Syntax


To send this message, call the SendMessage function as follows.
lResult = SendMessage( // returns LRESULT in lResult
(HWND) hWndControl, // handle to destination control
(UINT) EM_SETCUEBANNER, // message ID
(WPARAM) wParam, // = 0; not used, must be zero
(LPARAM) lParam // = (LPARAM) (LPCWSTR) lParam;
);
Parameters

wParam
Not used; must be zero.
lParam
Pointer to a Unicode string that contains the text to display as the textual cue.
Return Value

If the message succeeds, it returns TRUE. Otherwise it returns FALSE.

Remarks

An edit control that is used to begin a search may display "Enter search here" in gray text as a textual cue. When the user clicks the text, the text goes away and the user can type.

Note To use this API, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see Using Windows XP Visual Styles.
Message Information

Header Declared in Commctrl.h
Minimum operating systems Windows XP

Заметьте, строка в юникод в lParam:

Цитата:
lParam
Pointer to a Unicode string that contains the text to display as the textual cue.

1.8K
24 марта 2015 года
Kuzya
184 / / 19.03.2008
интересно, если попробовать SendMessage вместо SendDlgItemMessage, результат поменяется?
7
25 марта 2015 года
@pixo $oft
3.4K / / 20.09.2006
Цитата: sadovoya
Заметьте, строка в юникод в lParam

Вот ведь ѣ! :D
Я не сомневаюсь, что MSDN тоже была бы информативной, если бы открывала мне эту статью. Но по ссылке EM_SETCUEBANNER я получаю вот что:

Попробовал с L"" — всё работает! Благодарю за помощь ☺

P.S. Думаю, замена на SendMessage ничего бы не дала, в результате-то всё равно она вызывается,

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог