在我的应用程序中,我使用CFrameWnd::OnHelp来打开一个word文档,而不是我们以前的.hlp文件。然而,当我按F1时,我注意到这个函数被执行了两次。我检查了这些堆栈,发现AfxWndProcBase正在接收命令0x1E146,然后CWnd::OnCommand在调用CFrameWnd::OnCmdMsg时将其截断到0xE146,而0xE146是ID_HELP命令。然后紧接着,AfxWndProcBase将接收0xE146命令,并再次运行帮助命令。经过一些实验,我发现当第一条消息被处理时,第二条消息在对AfxMessageBox的调用中被接收和处理。
处理程序在这里:
void C
这在主"example dlg.cpp“文件中:
void CHelixV3Dlg::OnBnClickedCancel()
{
CEdit* editbox = (CEdit*)GetDlgItem(IDC_EDIT1);
//works fine, defined as: *CWnd GetDlgItem(int nID); in this file
}
这是test.cpp源文件
void test()
{
CEdit* editbox = (CEdit*)GetDlgItem(IDC_EDIT1);
//does not work at all, see