![]() |
|
![]() ![]() ![]() |
|
I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: нет Всего: 15 |
Добрый день
Как узнать, что пользователь вводит значение в текстовое поле? Просто по аналогии с главным окном. Там происходит регистрация класса (RegisterClass), у которого есть параметр lpfnWndProc. И в этой процедуре сообщение сравнивается, например, с WM_COMMAND или WM_LBUTTONDOWN. И если они равны, то переход и т.д. А вот с текстовым полем этого нет. В CreateWindowEx создается поле с классом Edit. Т.е. класс ведь не регистрируется и поэтому не понятно, как задать ему его lpfnWndProc и обрабатывать сообщения (например, WM_SETTEXT). Подскажите пожалуйста чайнику! ![]() Это сообщение отредактировал(а) I_Am_Rock - 21.7.2010, 12:15 |
|||
|
||||
JAPH |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 8.1.2007 Где: Ленобласть Репутация: 5 Всего: 23 |
Непонятный вопрос. Вы хотите создать свое текстовое поле со специфическим поведением?
Если создаете стандартный системный класс, то он посылает уведомления родительскому окну через сообщение WM_COMMAND. http://msdn.microsoft.com/en-us/library/bb775458(VS.85).aspx
wParam = EN_UPDATE << 16 | id edit-а lParam = hwnd edit-а А если вы хотите более полный контроль над окном, то можно сделать сабклассинг: SetWindowLong(hwndEdit, GWL_WNDPROC, lpfnNewWndProc). http://www.wasm.ru/article.php?article=1001020 Это сообщение отредактировал(а) JAPH - 21.7.2010, 15:18 -------------------- Что непонятно - спрашиваем ![]() |
|||
|
||||
I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: нет Всего: 15 |
Спасибо большое.
![]() Только один вопрос - в случае со всеми другими компонентами так же, как и в этом случае, посылается WM_COMMAND главному окну? Это сообщение отредактировал(а) I_Am_Rock - 21.7.2010, 15:51 |
|||
|
||||
JAPH |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 8.1.2007 Где: Ленобласть Репутация: 5 Всего: 23 |
Не всегда. Обычно способ нотификации указывается в документации контрола)
http://msdn.microsoft.com/en-us/library/bb...4(v=VS.85).aspx
-------------------- Что непонятно - спрашиваем ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm для начинающих" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm для начинающих | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |