建了一基于对话框的工程,一非模态子对话框中有一list control和一按钮,当选中列表中某一行时,已经实现点击按钮可以把其删除,现在想选中某一行时,按“Delete”键将其删掉。
我的做法是
1.添加Accelerator,键选择“VK_DELETE”,ID为“ID_ACCELERATORDELETE”
2.Dialog2.h中添加public型的HACCEL m_hAccel; //定义快捷对象
3.初始化中添加 m_hAccel = ::LoadAccelerators(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_ACCELERATOR1));
4.PreTranslateMessage()中添加 if(m_hAccel != NULL)
{
if (TranslateAccelerator(m_hWnd, m_hAccel, pMsg))
return TRUE;
}
5.OnCommand()中添加
switch(LOWORD(wParam))
{
case ID_ACCELERATORDELETE: //加速键ID
OnBnClickedButton1();
break;
}
运行可以实现按“Delete”实现删除的效果,但是程序关闭后出现 “
TODO:<文件说明>遇到问题需要关闭。我们对此引起的不便表示抱歉。”。试过此时用按钮删除也不出现该消息框。所以肯定是快捷键的处理处了问题了。请教问题出在哪了?
不是VK_DELETE;2.3.没有错误;4.消息这样子加入:
BOOL CMfcDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(m_hAccel != NULL)
{
if (TranslateAccelerator(m_hWnd, m_hAccel, pMsg))
{
OnBnClickedButton1();//加在这里;
return TRUE;
}
}
return CDialog::PreTranslateMessage(pMsg);
}5.无用,这样就可以了;
1.是对的;此致十二万分的sorry.
照你说的试了,跟我的效果一样,关闭程序后弹出消息框“TODO:<文件说明>遇到问题需要关闭。我们对此引起的不便表示抱歉”