我想要实现的效果是:如果鼠标左键点击某一区域,则响应键盘上 下翻 键;我是这样处理的
PreTranslateMessage(MSG* pMsg)过滤消息中,
   
  //testOnRect检测鼠标点击位置
   if((pMsg->message == WM_LBUTTONDOWN) &&testOnRect(pMsg->pt,0,325,180,395))
    {
       //转化为下翻键
       AfxMessageBox("1111");//Debug
       pMsg->message==WM_KEYDOWN;
       pMsg->wParam==VK_NEXT;    }
   
   //键盘消息转换
   if((pMsg->message == WM_KEYDOWN) && pMsg->wParam==VK_ESCAPE)
    {
       //转化为下翻键
       AfxMessageBox("2222");//Debug
       pMsg->message==WM_KEYDOWN;
       pMsg->wParam==VK_NEXT;    }
但实际运行中,鼠标点击规定的区域后,程序弹出1111的对话框,不过却没有实现下翻功能,
而点击键盘中的ESC键,则弹出2222的对话框,实现了下翻功能。为什么会这样?请指点。。,非常感谢。

解决方案 »

  1.   

    pMsg->message==WM_KEYDOWN;
           pMsg->wParam==VK_NEXT;
    语法错误,应该是:
          pMsg->message=WM_KEYDOWN;
           pMsg->wParam=VK_NEXT;
      

  2.   

    用SendMessage(hWnd, WM_KEYDOWN, VK_NEXT);就行
      

  3.   

    LRESULT SendMessage (UINT message, WPARAM wParam = 0, LPARAM lParam = 0)这是SendMessage 的原型,用SendMessage(hWnd, WM_KEYDOWN, VK_NEXT)的话编译不过,我在程序里加上:
       SendMessage(pMsg->hwnd, WM_KEYDOWN, VK_NEXT);编译提示:
    error C2664: 'SendMessageA' : cannot convert parameter 1 from 'struct HWND__ *' to 'unsigned int'
      

  4.   

    若使用  SendMessage(pMsg->message, VK_NEXT, pMsg->lParam);则跟我提的问题一样,点鼠标没反映,点键盘OK
      

  5.   

    keybd_event(VK_NEXT,0,0,NULL);
    keybd_event(VK_NEXT,0,KEYEVENTF_KEYUP,NULL);
      

  6.   

    昨天用keybd_event函数搞定了;今天上来一看果然是这样。。,嘿。