使用箭头键在Windows对话框中导航

时间:2015-07-02 18:20:43

标签: windows api dialog arrow-keys

我使用普通的Windows API。 我想使用箭头键VK_UP,VK_DOWN在对话框的文本框之间导航。 VK_LEFT,VK_RIGHT。 为了得到WM_CHAR,我已经将Textboxs子类化了,我得到了每一次击键,包括退格,删除等,但没有箭头键! 我究竟做错了什么? 谢谢你的建议!

    //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
}

1 个答案:

答案 0 :(得分:1)

应该是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);
}