如何解决将功能键分配给Dialog的简单方法?
| 我有一个MFC对话框,我想将功能键分配给不同的方法。那可能吗? 例如,我想输入F9并得到与按下按钮相同的结果。解决方法
对于基于对话框的应用程序。在资源编辑器中为对话框创建IDR_ACCELERATOR1。并添加所需的键,并为对话框的键创建一个事件。
在sampledlg.h中,请添加
HACCEL m_haccel;
在OnInitDialog()中的sampledlg.cpp中,请添加
m_haccel = LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_ACCELERATOR1));
在PreTranslateMessage(MSG * pMsg)的sampledlg.cpp中,请添加
if (m_haccel)
{
if ((::TranslateAccelerator(*this,m_haccel,pMsg)))
{
return(TRUE);
}
}
,如果您的意思是在基于对话框的应用程序的主对话框中,则可以检查
http://www.codeproject.com/Articles/37130/Implement-Accelerators-in-a-Dialog-Based-Applicati.aspx
如果用于文档/视图应用程序中的对话框:
http://support.microsoft.com/kb/117500/zh-CN
http://support.microsoft.com/kb/222829/en-us
,比我想的要容易。我不知道这是否是最好的解决方案,但这是我所做的:
BOOL MainDlg::PreTranslateMessage(MSG *pMsg)
{
if ( pMsg->message == WM_KEYDOWN)
{
if (( pMsg->wParam == VK_F9))
OnBnClickedButton1(); // Delete Item
}
return CDialog::PreTranslateMessage(pMsg);
}
现在,每次按下功能键F9时,都会调用功能OnBClickedButton1()。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。