VC怎么处理快捷键消息的啊 10

我试过:建立快捷键资源IDR_ACEEL_MYACEEL包括ID_SHOW_MSG=CTRL+A打开类向导。CMyDlg->MessageMap->ID_SHOW_MSG... 我试过:
建立快捷键资源 IDR_ACEEL_MYACEEL
包括 ID_SHOW_MSG = CTRL+A
打开类向导。
CMyDlg->MessageMap->ID_SHOW_MSG->COMMAND->建立消息处理函数->OnSHOWMSG();
函数体:
AfxMessageBox("快捷键测试成功");

运行时再怎么按 CTRL+A 没反应。
展开
 我来答
bhtzu
2013-02-19 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4199万
展开全部
基于对话框的吧。VC只有文档视结构中才默认处理了快捷键消息映射,对话框的没有,需要自己处理,方法如下:

在PreTranslateMessage函数中,通过载入快捷键资源,并建立快捷键与消息的映射的方法来实现。先插入快捷键资源,通过下面的代码来载入该资源。
HACCEL hAcc;
hAcc = LoadAccelerators(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDR_ACCELERATOR1));
在PreTranslateMessage函数中进行快捷键的翻译,如果是WM_KEYDOWN和WM_SYSKEYDOWN消息就翻译,翻译成功返回TRUE。
BOOL CAccelerator2Dlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
int iResult;
//针对WM_KEYDOWN消息和WM_SYSKEYDOWN消息,翻译快捷键
switch(pMsg->message)
{
case WM_KEYDOWN:
case WM_SYSKEYDOWN:
iResult = TranslateAccelerator(m_hWnd,hAcc,pMsg);//关键!翻译快捷键成功,返回TRUE
if(iResult)
return TRUE;
}
return CDialog::PreTranslateMessage(pMsg);
}
更多追问追答
追问
就是文档视图的
追答
CMyDlg->MessageMap->ID_SHOW_MSG->
你这个是文档视图?呵呵,是自定义对话框吧,这个和我上面说的是一个情况,必须在对话框类中导入快捷键资源并预处理消息。

另外,还有一种方式,我没试验过,你可以试试。就是对话框不使用模态弹出,而是非模态,这样在文档视图中可以接收快捷键消息,再从视图类中发送消息到对话框(模态对话框不能这样做)
pippo仔
2013-02-20 · TA获得超过7935个赞
知道大有可为答主
回答量:1.5万
采纳率:0%
帮助的人:4821万
展开全部
基于对话框的。 VC只结构化文档,默认的处理程序快捷方式的消息映射,该对话框并不需要处理自己的方法如下:

PreTranslateMessage函数,通过载入快捷键资源,并建立快捷方式关键的消息映射的方法来实现。首先插入快捷键资源,使用下面的代码加载资源。

HACCEL HACC;
HACC = LoadAccelerators(AfxGetApp() - > m_hInstance MAKEINTRESOURCE(IDR_ACCELERATOR1),);
PreTranslateMessage函数快捷键的翻译,如果是WM_KEYDOWN和WM_SYSKEYDOWN消息翻译,翻译成功返回TRUE。
BOOL CAccelerator2Dlg ::的PreTranslateMessage(MSG * PMSG)
{
/ / TODO:在此添加专用??代码和/或调用基类
诠释iResult;
/ / WM_KEYDOWN消息和WM_SYSKEYDOWN消息,翻译快捷键
开关(PMSG - >信息)
{
情况下WM_KEYDOWN:
情况下,WM_SYSKEYDOWN:
iResult = TranslateAccelerator的(m_hWnd HACC,PMSG);/ /关键!翻译的快捷方式成功,则返回TRUE
(iResult)
返回TRUE的;
}
回报的CDialog ::
的PreTranslateMessage(PMSG);}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
miceyleong
2013-02-26 · TA获得超过3531个赞
知道小有建树答主
回答量:8528
采纳率:0%
帮助的人:2223万
展开全部
基于对话框的。 VC只结构化文档,默认的处理程序快捷方式的消息映射,该对话框并不需要处理自己的方法如下:

PreTranslateMessage函数,通过载入快捷键资源,并建立快捷方式关键的消息映射的方法来实现。首先插入快捷键资源,使用下面的代码加载资源。

HACCEL HACC;
HACC = LoadAccelerators(AfxGetApp() - > m_hInstance MAKEINTRESOURCE(IDR_ACCELERATOR1),);
PreTranslateMessage函数快捷键的翻译,如果是WM_KEYDOWN和WM_SYSKEYDOWN消息翻译,翻译成功返回TRUE。
BOOL CAccelerator2Dlg ::的PreTranslateMessage(MSG * PMSG)
{
/ / TODO:在此添加专用??代码和/或调用基类
诠释iResult;
/ / WM_KEYDOWN消息和WM_SYSKEYDOWN消息,翻译快捷键
开关(PMSG - >信息)
{
情况下WM_KEYDOWN:
情况下,WM_SYSKEYDOWN:
iResult = TranslateAccelerator的(m_hWnd HACC,PMSG);/ /关键!翻译的快捷方式成功,则返回TRUE
(iResult)
返回TRUE的;
}
回报的CDialog ::
的PreTranslateMessage(PMSG);}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式