为基于对话框程序中的菜单添加自定义快捷键,过程和主要代码如下:
1、在资源编辑框中新建一个快捷键表,如IDR_ACCELERATOR1,并定义快捷键为CTRL+P
2、使用API函数LoadAccelerators()装载快捷键表
3、重写BOOL PreTranslateMessage(MSG* pMsg)函数
代码如下:
HACCEL Accelerator;
BOOL CTestDlg::OnInitDialog()
{
  ......
  HINSTANCE hInstance=::AfxGetInstanceHandle();
  Accelerator=::LoadAccelerators(hInstance,MAKEINTRESOURCE(IDR_ACCELERATOR1));
  return TRUN;
}BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
  TranslateAccelerator(this->m_hWnd,Accelerator,pMsg);
  return CDialog::PreTranslateMessage(pMsg);
}void CTestDlg::OnBnClickedBtnctrlp()
{  
   //CTRL+P加速键对应
   MessageBox("响应加速键表","信息提示",MB_OK);
}
问题:上面代码运行起来是没有问题的,但是将CTestDlg::OnBnClickedBtnctrlp()改写如下就有错误
void CTestDlg::OnBnClickedBtnctrlp()
{  
   //CTRL+P加速键对应
   CTest dlg;//CTest是个另一个对话框的类,加速键的目的就是要弹出这个对话框,
   dlg.DoModal();
}
此函数能够正确弹出CTest对话框,但单击CTest对话框的OK按钮就会报出现异常:Debug Assertion Failed!
Program:D:\...Test.exe
File:wincore.cpp
Line:875
For information on how your program can cause an assertion failure,see the Visual C++ documentation on asserts.
(Press Retry to debug the application)请问报这种错的原因是什么?要怎样处理才行?