使用箭头键在 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);
}