|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июн 1, 2004 19:08:42 · Поправил: a111 Помогите разобраться, сам уже никак не могу. У меня есть модальное диалоговое окно, а на нем edit-control. Как мне узнать, что был нажат enter, при фокусе на этом edit`e? Пробовол отловить по WM_CHAR, но не получается так как нужно TranslateMessage, а ее нету, так как окошко создается из ресурса и обрабатывает сообщения по-особому(через свою процедуру). Вопрос: как быть? |
|
|
Дата: Июн 1, 2004 19:22:16.IF uMsg == WM_COMMAND
mov eax,wParam
.IF ax == IDOK
invoke GetFocus
.IF eax == hMyEditControl
; Это был Enter :-)
.ENDIF
.ENDIF
.ENDIFЗЫ: Извиняюсь за макросы, но так понятней. |
|
|
Дата: Июн 1, 2004 20:05:52 Чего-то не выходит. Edit вообще не получает WM_COMMAND при нажатии enter`a. Можно ли как-нибудь поймать WM_CHAR, и через него и фокус определить, что это enter. Но куда присобачить Translatemessage? |
|
|
Дата: Июн 1, 2004 20:13:15 · Поправил: Quantum WM_COMMAND получает не Edit, а процедура диалогового окна. Ещё предполагается, что окно имеет дефолтовую кнопку с идентификатором IDOK. Всё работает. |
|
|
Дата: Июн 1, 2004 20:32:58 Кнопку в смысле button? Но я все это затеял потому что хочу вводить текст не переводя фокус, а автоматом. |
|
|
Дата: Июн 1, 2004 20:44:46 a111 Поправочка: кнопки может и не быть. Только что проверил. |
|
|
Дата: Июн 1, 2004 21:04:47 · Поправил: a111 Для интереса сделал так: .if umsg==WM_COMMAND mov eax,wparam .if lparam!=0 .if ax==ID_EDIT int 3h .endif .endif .endif При нажатии enter на edit программа не прерывается. Как ее отследить, что это был именно enter, ведь в edit набивается строчка, а в конце он самый? p.s Как заставить работать оформление сообщения в форуме(кнопочки над вводом)? |
|
|
Дата: Июн 1, 2004 21:22:01 a111 Не ID_EDIT, а IDOK!!! |
|
|
Дата: Июн 1, 2004 22:11:22 А я просто сабклассинг делал - мне еще надо было пару фич добавить. |
|
|
Дата: Июн 2, 2004 09:43:29 Никак не пойму, а причем тут idok? Мы ведь enter жмем когда стоим в edit`e. И почему должно прийти WM_COMMAND из-за кнопки? |
|
|
Дата: Июн 2, 2004 09:56:13 Когда жмешь ентер в едите, РОДИТЕЛЬСКОМУ ОКНУ посылается сообщение WM_COMMAND с указанием контрола, и условного кода. Вот этот условный код для енетера и есть IDOK. А контрол - это твой IDC_EDIT1. Все просто как самогонный аппарат! Кстати, это я когда-то давно прочитал в МСДНе (про сообщения, а не про аппарат). |
|
|
Дата: Июн 2, 2004 10:36:37 Спасибо всем, заработало! |