Мой WM_KEYDOWN не работает, когда мой элемент управления MultiLineEdit находится в фокусе - PullRequest
0 голосов
/ 30 декабря 2010

у меня есть окно, созданное с моим зарегистрированным классом с именем CLS1

invoke CreateWindow,addr CLS1,addr title,WS_OVERLAPPED,
10,10,300,300,NULL,NULL,hInstance,NULL
mov hwnd,ax

У меня есть окно в моем окне, как это:

invoke CreateWindow,addr clsed,NULL,WS_CHILD or WS_VISIBLE or ES_MULTILINE 
or ES_AUTOVSCROLL or WS_BORDER or WS_TABSTOP,10,10,280,250,hwnd,123,hInstance,NULL

и мой цикл сообщений:

.while TRUE
  invoke GetMessage,addr msg,NULL,0,0
  .break .if (ax == 0)
  invoke IsDialogMessage, hwnd,addr msg
  .if (!ax)
     invoke TranslateMessage,addr msg
     invoke DispatchMessage,addr msg
  .endif
 .endw

В моем WndProc я хочу (для теста), чтобы сообщение WM_KEYDOWN работало, и показывать окно сообщений, когда я нажимаю букву «А». Итак, я попробовал это:

.if (message == WM_KEYDOWN)
   .if (wParam == 41h)        ;41h = A or a
      invoke MessageBox,NULL,addr keypress,addr title,48
   .endif

Но это просто не работает!

Если у кого-то есть решение ... пожалуйста, помогите мне.

Извините, мой английский ... я не американец (смеется)

1 Ответ

0 голосов
/ 30 декабря 2010

Вы пишете для 16-битных окон? Если нет, проверка 16-битных возвращаемых значений и использование 16-битных дескрипторов не годятся:

mov hwnd,ax
.break .if (ax == 0)
.if (!ax)

используйте eax и, возможно, все пойдет лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...