永远也不完美的程序

不断学习,不断实践,不断的重构……

常用链接

统计

积分与排名

好友链接

最新评论

VC,MFC下组合键的处理问题。

        网上很多人问组合键的处理,例如要同时按上ctrl+某个键的响应,不过网上很多文章没讲清楚具体要如何做,只是说了用GetAsyncKeyState等函数,在普通的windows程序中,的确可以用这个函数再加上一些消息响应来判断,不过在mfc中就另一回事了。
        MFC中,一般在WM_KEYUP或WM_KEYDOWN中,普通的按键可以实现组合,但ctrl,shirt这些却不能,这个是什么原因,我自己也不清楚。但解决的方法如下:
        可以在mainframe等类中重载pretranslatemessage函数,然后这样实现:
BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
{
    
// TODO: Add your specialized code here and/or call the base class
    char nChar = pMsg->wParam;
    
if(nChar == 'Z' && ((GetAsyncKeyState( VK_LCONTROL ) & 0x8000)))
    
{
        AfxMessageBox(
"ctrl + z");
    }


    
return CFrameWndEx::PreTranslateMessage(pMsg);
}

posted on 2010-10-03 18:14 狂烂球 阅读(4371) 评论(1)  编辑 收藏 引用 所属分类: Windows编程

评论

# re: VC,MFC下组合键的处理问题。 2010-10-04 12:06 itprograms

这个是在MFC下面的,如果是使用Win32API的普通窗体的话建议看
http://msdn.microsoft.com/en-us/library/ms646337(v=VS.85).aspx
如果是使用对话框Dialog Box的话可以看这里:
http://hi.baidu.com/tianligen/blog/item/6ca5bbdb02dd9068d0164efa.html  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理