
MFC怎样将按键的虚拟码消息传到自定义的函数中?
我创建的是一个基于对话框的MFC应用程序,怎样在CTextDlg中的到用户所按键的虚拟码?急求啊!!!代码啊!只有这么点分哪!...
我创建的是一个基于对话框的MFC应用程序,怎样在CTextDlg中的到用户所按键的虚拟码?急求啊!!!代码啊!只有这么点分哪!
展开
2个回答
展开全部
在你的这个类里添加以个WM_KEYDOWN或者WM_KEYUP
void CListenTestDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}
UINT nRepCnt这个参数就是你要的虚拟码.
Winuser.h在这个头文件里有所有的虚拟码的宏
/*
* Virtual Keys, Standard Set
*/
#define VK_LBUTTON 0x01
#define VK_RBUTTON 0x02
#define VK_CANCEL 0x03
#define VK_MBUTTON 0x04 /* NOT contiguous with L & RBUTTON */
#define VK_BACK 0x08
#define VK_TAB 0x09
#define VK_CLEAR 0x0C
#define VK_RETURN 0x0D
#define VK_SHIFT 0x10
#define VK_CONTROL 0x11
#define VK_MENU 0x12
#define VK_PAUSE 0x13
#define VK_CAPITAL 0x14
#define VK_KANA 0x15
#define VK_HANGEUL 0x15 /* old name - should be here for compatibility */
#define VK_HANGUL 0x15
太多了。。自己打开这个文件看嘛
void CListenTestDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}
UINT nRepCnt这个参数就是你要的虚拟码.
Winuser.h在这个头文件里有所有的虚拟码的宏
/*
* Virtual Keys, Standard Set
*/
#define VK_LBUTTON 0x01
#define VK_RBUTTON 0x02
#define VK_CANCEL 0x03
#define VK_MBUTTON 0x04 /* NOT contiguous with L & RBUTTON */
#define VK_BACK 0x08
#define VK_TAB 0x09
#define VK_CLEAR 0x0C
#define VK_RETURN 0x0D
#define VK_SHIFT 0x10
#define VK_CONTROL 0x11
#define VK_MENU 0x12
#define VK_PAUSE 0x13
#define VK_CAPITAL 0x14
#define VK_KANA 0x15
#define VK_HANGEUL 0x15 /* old name - should be here for compatibility */
#define VK_HANGUL 0x15
太多了。。自己打开这个文件看嘛
追问
什么文件?
追答
比如像Dll。Exe的文件都是二进制的文件啊!
展开全部
1、对话框无法直接响应WM_KEYDOWN消息,需要重载PreTranslateMessage()函数
BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg)
{
if(WM_KEYDOWN == pMsg->message)
{
switch(pMsg->wParam)
{
case VK_...:
break;
....
default:
break;
}
}
2、用hook技术,相对比较麻烦。
如果你装的是VS2008,虚拟键码的定义在C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winuser.h line 375
BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg)
{
if(WM_KEYDOWN == pMsg->message)
{
switch(pMsg->wParam)
{
case VK_...:
break;
....
default:
break;
}
}
2、用hook技术,相对比较麻烦。
如果你装的是VS2008,虚拟键码的定义在C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winuser.h line 375
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询