关于拦截消息的问题!

herohorse 2001-10-16 10:48:24
我想拦截键盘消息,于是做了一个线程函数
UINT WorkThread(LPVOID pParam)
{
MSG msg;
HWND m_hwnd=::AfxGetMainWnd()->m_hWnd;
while(1)
{
// 检查是否按下 Escape 键

if (PeekMessage(&msg,::AfxGetMainWnd()->m_hWnd,WM_KEYFIRST,WM_KEYLAST, PM_REMOVE))
{
if (msg.message == WM_KEYDOWN&& msg.wParam ==VK_SPACE)//如果按下ESc就
{
AfxMessageBox("ddd");
}
}
::Sleep(1000);




return 0;
}




为什么拦截不到呢?用peekmessage到底行不行?


...全文
70 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
a813 2001-10-16
  • 打赏
  • 举报
回复
其实要拦截键盘只要
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
if( pMsg->message == WM_KEYDOWN&& pMsg->wParam ==VK_SPACE )
{
...........
}
}
a813 2001-10-16
  • 打赏
  • 举报
回复
其实要拦截键盘只要
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
if( pMsg->message == WM_KEYDOWN&& pMsg->wParam ==VK_SPACE )
{
...........
}
a813 2001-10-16
  • 打赏
  • 举报
回复
其实要
herohorse 2001-10-16
  • 打赏
  • 举报
回复
我用GetMessage也不行!
a813 2001-10-16
  • 打赏
  • 举报
回复
使用GetMessage
PeekMessage(&msg,::AfxGetMainWnd()->m_hWnd,WM_KEYFIRST,WM_KEYLAST, PM_REMOVE))
while(GetMessage(&msg,NULL,0,0))
{
switch(msg.message)
{
if (msg.message == WM_KEYDOWN&& msg.wParam ==VK_SPACE)//如果按下ESc就
{
AfxMessageBox("ddd");
}
}
}
herohorse 2001-10-16
  • 打赏
  • 举报
回复
谢谢a813;
重载的dlg好用
但对于单文本就不好用了。
有没有别的方法呢?但分数我一定给你,等等先!

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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