我要获取ctrl+a
然后在窗口上用 textout输出 我已经按下了ctrl+a
问题是
WM_KEYDOWN里 不能用VK_A
而且 我用if((wParam&VK_CONTROL)&&(wParam&VK_A))
结果是 没用
要怎么实现  同时按下CTRL+A窗口才会输出那句话

解决方案 »

  1.   

    这样: if(pMsg->message == WM_KEYDOWN)
    {
    if(::GetKeyState(VK_CONTROL)<0)
    {
    if(pMsg->wParam == 0x61)//‘a‘的ASCII码
    {
    ::SetActiveWindow(::FindWindowW(_T("CLookDynamicDlg"),0));
    }
    }
    }
      

  2.   

    键盘钩子
    LRESULT CALLBACK KeyBoardProc(int nCode, WPARAM wParam, LPARAM lParam) 

    BOOL bCtrlKeyDown =
    GetAsyncKeyState(VK_CONTROL)>>((sizeof(SHORT) * 8) - 1);
    if((lParam & 0x80000000 )==0)//键盘按下
    {
    if (nCode==HC_ACTION) 
    {
    if (wParam == VK_F3 )//&& bCtrlKeyDown) // Ctrl+Esc
    {
    AfxMessageBox(_T("vk_f"));
    }
    } if(wParam == 'A'&& bCtrlKeyDown)
    {
     
    AfxMessageBox(L"A+ctrl");
    }
    ...
    }
      

  3.   

    重载PreTranslateMessage函数,直接写里面即可。
      

  4.   

    PreTranslateMessage 添加一下即可
      

  5.   

    不用手动添加,通过ClassWizard可以直接添加,很方便的。
      

  6.   


    case WM_SYSKEYDOWN :
    if (GetKeyState (18) < 0) //Alt键
    {
    if (LOWORD (wParam) == 67) // C 键
    {
    SendMessage (GetParent (hwnd), WM_CLOSE, 0, 0);
    }
    }
    break;
    C/SDK