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 没反应。 展开
建立快捷键资源 IDR_ACEEL_MYACEEL
包括 ID_SHOW_MSG = CTRL+A
打开类向导。
CMyDlg->MessageMap->ID_SHOW_MSG->COMMAND->建立消息处理函数->OnSHOWMSG();
函数体:
AfxMessageBox("快捷键测试成功");
运行时再怎么按 CTRL+A 没反应。 展开
展开全部
基于对话框的吧。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);
}
在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->
你这个是文档视图?呵呵,是自定义对话框吧,这个和我上面说的是一个情况,必须在对话框类中导入快捷键资源并预处理消息。
另外,还有一种方式,我没试验过,你可以试试。就是对话框不使用模态弹出,而是非模态,这样在文档视图中可以接收快捷键消息,再从视图类中发送消息到对话框(模态对话框不能这样做)
展开全部
基于对话框的。 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);}
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);}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
基于对话框的。 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);}
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);}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询