使用箭头键在 Windows 对话框中导航
Navigate in Windows Dialog with arrow keys
我正在使用普通 Windows API。
我想使用箭头键 VK_UP、VK_DOWN 在对话框的文本框之间导航。 VK_LEFT、VK_RIGHT。
我已经将文本框子类化以获得 WM_CHAR,并且我得到了每个击键,包括退格键、删除键等,但没有箭头键!
我究竟做错了什么?
谢谢指教!
//subclassing
SetWindowSubclass(GetDlgItem(hDlg, IDC_TEXTBOX1),TextBoxProc, IDC_TEXTBOX1,param);
和
LRESULT CALLBACK
TextBoxProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam,
UINT_PTR Id, DWORD_PTR param)
{
switch (msg)
{
case WM_CHAR:
char c= (char)wParam;
etc
}
应该是WM_KEYDOWN
而不是WM_CHAR
LRESULT CALLBACK TextBoxProc(
HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, UINT_PTR, DWORD_PTR)
{
switch (msg)
{
case WM_KEYDOWN:
{
if (wParam == VK_DOWN)
{
OutputDebugString(L"VK_DOWN\n");
return TRUE;// or break!
}
break;
}
default:break;
}
return DefSubclassProc(hWnd, msg, wParam, lParam);
}
我正在使用普通 Windows API。 我想使用箭头键 VK_UP、VK_DOWN 在对话框的文本框之间导航。 VK_LEFT、VK_RIGHT。 我已经将文本框子类化以获得 WM_CHAR,并且我得到了每个击键,包括退格键、删除键等,但没有箭头键! 我究竟做错了什么? 谢谢指教!
//subclassing
SetWindowSubclass(GetDlgItem(hDlg, IDC_TEXTBOX1),TextBoxProc, IDC_TEXTBOX1,param);
和
LRESULT CALLBACK
TextBoxProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam,
UINT_PTR Id, DWORD_PTR param)
{
switch (msg)
{
case WM_CHAR:
char c= (char)wParam;
etc
}
应该是WM_KEYDOWN
而不是WM_CHAR
LRESULT CALLBACK TextBoxProc(
HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, UINT_PTR, DWORD_PTR)
{
switch (msg)
{
case WM_KEYDOWN:
{
if (wParam == VK_DOWN)
{
OutputDebugString(L"VK_DOWN\n");
return TRUE;// or break!
}
break;
}
default:break;
}
return DefSubclassProc(hWnd, msg, wParam, lParam);
}