2015-04-09 3 views
0

Мне нужен WM, который отправляется при нажатии клавиши TAB или Enter. Осматривая этот список (я не знаю, если это полный список WM): http://www.pinvoke.net/default.aspx/Constants/WM.html Я пробовал несколько WM нравится:Какой WM отправляется там, где нажата клавиша TAB или клавиша Enter?

WM_CHAR 
WM_KEYDOWN 

Но ни один из этого Заботьтесь о TAB и Enter. Есть ли WM, который имеет отношение к этим ключам? Спасибо!

Обновлено: Это код, который я использую:

Class NW 
    Inherits NativeWindow 
    Public Sub New(hwnd As IntPtr) 
     AssignHandle(hwnd) 
    End Sub 

    Const WM_CHAR As Integer = &H102 

    Protected Overrides Sub WndProc(ByRef m As Message) 
     If m.Msg = WM_CHAR Then 
      Return 
     End If 
     MyBase.WndProc(m) 
    End Sub 
End class 

ответ

0

Предполагая, что вы способный захватить эти ключи, то должны быть WM_CHAR, так как они оба просто символы от клавиатура.

Но я подозреваю, что вы испытываете является тот факт, что все, что контроль вы в это улавливать эти ключи и интерпретации их сама, вкладка, чтобы перейти к следующему элементу управления и введите выбрать значение по умолчанию действие.

Поскольку WM_CHAR сообщения построены в TranslateMessage() в ответ на WM_KEYDOWN сообщений, это позволило бы перехватом на этом уровне, и вы, возможно, никогда даже см в WM_CHAR сообщения.


Чтобы реально увидеть в деталях, какие сообщения были отправлены в вашу процедуру Windows, так что вы можете выяснить, что происходит, вы можете использовать Spy++, доступный из меню TOOLS, по крайней мере в VS2013.

+0

Спасибо! Это код, который я использую: Защищенные переопределения Sub WndProc (ByRef m As Message) Если m.Msg = WM_CHAR Затем Возврат Конец If. , MyBase.WndProc (m) End Sub Но не работает для Enter и TAB – alex

+0

Хорошо, но видите ли вы какое-либо решение для моего кода? – alex

+0

Извините, я не нашел Spy ++ внутри моей Visual studio. Но с вашими предложениями вы говорите, что сообщение, отправленное в таком случае, неизвестно или меняется каждый раз и зависит от случая? – alex