PreTranslatemessage用sdk实现源代码
别说看源码,因为源码比较复杂,我想也看不懂,
因为我学习sdk, 需要处理某些按键。
sdk中 pretranslatemessage是没有的, 该如何模拟呢?
比如:想屏蔽文本框的ctrl+v(不用钩子技术),如何模拟?
BOOL PreTranslateMessage(MSG* pMsg) { if (pMsg->message == WM_KEYDOWN) { switch(pMsg->wParam) { case 'v': case 'V': if(GetKeyState(VK_CONTROL) < 0) return TRUE; } } return FALSE; } //消息循环 while (GetMessage(&msg, NULL, 0, 0)) { if (!PreTranslateMessage(&msg) || !IsDialogMessage(hwnd, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } }
还可以用Accelerator
不能用||,而要用&&
BOOL PreTranslateMessage(MSG* pMsg) { if (pMsg->message == WM_KEYDOWN) { switch(pMsg->wParam) { case 'v': case 'V': if(GetKeyState(VK_CONTROL) < 0) return TRUE; } } return IsDialogMessage(hwndDlg, &msg); } //消息循环 while (GetMessage(&msg, NULL, 0, 0)) { if (!PreTranslateMessage(&msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } }