wxWidgets下如何处理windows键盘消息

gabriel1017 2014-10-23 11:45:02
我写了一个wx窗口 MainDialog,重载了以下函数:
WXLRESULT MainDialog::MSWWindowProc(WXUINT message,
WXWPARAM wParam,
WXLPARAM lParam);
但是在我转换 lParam 的时候出问题了,无论我如何转都是还是long。取不到我想要的键码。
代码如下:


WXLRESULT MainDialog::MSWWindowProc(WXUINT message,
WXWPARAM wParam,
WXLPARAM lParam) {

if (set && message == WM_GKEY) {
void * l = (void *)lParam;
// KBDLLHOOKSTRUCT* lp = (KBDLLHOOKSTRUCT *) lParam;
// KBDLLHOOKSTRUCT* lp = static_cast<KBDLLHOOKSTRUCT *>(lParam);
// KBDLLHOOKSTRUCT* lp = dynamic_cast<KBDLLHOOKSTRUCT *>(lParam);
KBDLLHOOKSTRUCT* lp = reinterpret_cast<KBDLLHOOKSTRUCT *>(l);
cout << "MSWWindowProc() " << (lp->vkCode) << ":" << (lp->flags) << endl;
}

//
// switch (message) {
// case WM_SYSCOMMAND:
// switch (wParam) {
// case SC_SCREENSAVE:
// //::wxMessageBox(_T("Screensaver active!"), _T("Screensaver"), wxOK | wxICON_ERROR);
// break;
// }
// }
return _MainDialog::MSWWindowProc(message, wParam, lParam);
}



求高手告诉我如何解析 WXLPARAM 参数。

问题补充:
dll中代码是正常的,解析LPARAM是可以取到键码的。代码如下:

// Hook STDCALL
GCALL LRESULT KeyboardHookProc( int nCode,
WPARAM wParam,
LPARAM lParam) {
cout << "KeyboardHookProc() " << lParam << endl;
KBDLLHOOKSTRUCT *lp = (KBDLLHOOKSTRUCT*) lParam;
cout << "KeyboardHookProc() nCode=" << nCode << " lp->vkCode=" << lp->vkCode << " lp->flags=" << lp->flags << endl;

if (nCode < 0 || nCode == HC_NOREMOVE) {
cout << "KeyboardHookProc() nCode < 0 || nCode == HC_NOREMOVE." << endl;
return ::CallNextHookEx(g_hHook, nCode, wParam, lParam);
}
else if (lParam & 0x40000000) { //重复的消息交给下一个hook链
cout << "KeyboardHookProc() next." << endl;
return ::CallNextHookEx(g_hHook, nCode, wParam, lParam);
}
else {
//通知主窗口,wParam参数为虚拟键码,lParam参数包含了此键的信息
if (g_hWndCaller != NULL) {
cout << "KeyboardHookProc() PostMessage" << endl;
::PostMessage(g_hWndCaller, WM_GKEY, wParam, lParam);
}
// MessageBox(NULL, L"内容", L"11111111", MB_OK);
return ::CallNextHookEx(g_hHook, nCode, wParam, lParam);
}
}


求高手告诉我为什么同是long的定义,为什么在dll中能解析成struct并取到键码,在exe下却不能?
...全文
204 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gabriel1017 2014-10-24
  • 打赏
  • 举报
回复
引用 2 楼 SiGoYi 的回复:
弱弱地问一下楼主WXwidgets是什么东东,随便帮顶一下吧!
谢谢 !
SiGoYi 2014-10-24
  • 打赏
  • 举报
回复
弱弱地问一下楼主WXwidgets是什么东东,随便帮顶一下吧!
gabriel1017 2014-10-23
  • 打赏
  • 举报
回复
自己顶,难道是这个问题太偏了吗

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧