【发布时间】:2011-06-21 10:32:04
【问题描述】:
我看过很多关于如何防止转义键关闭 CDIAlog 的帖子,但在我的情况下,我想关闭对话框但它没有。
我创建了一个示例 MFC 对话框应用程序,它添加了属性表和 2 个属性页。我尝试将 pretranslatemessage、OnCancel、KillFocus 覆盖放入属性页和对话框中,但没有受到影响。 使用以下代码:
#include "proppage1.h"
#include "proppage2.h"
#include "mySheet.h"
// ......
protected:
// proppage1,proppage2 are the class dervied from CPropertyPage
proppage1 pg1;
proppage2 pg2;
// mySheet is the class dervied from CPropertySheet
mySheet *m_sheet;
在 MFCDlg.CPP 的 CMFCDlg::OnInitDialog() 中
m_sheet = new mySheet(L"mySheet",this,0);
m_sheet->AddPage(&pg1);
m_sheet->AddPage(&pg2);
m_sheet->Create(this, WS_CHILD | WS_VISIBLE , 0);
m_sheet->ModifyStyleEx (0, WS_EX_CONTROLPARENT);
m_sheet->ModifyStyle( 0, WS_TABSTOP );
我没有在属性页和对话框中触发任何事件。 如果我在属性页上放置一些控件,则会触发事件并且可以在属性页中捕获这些事件。 但是,在其他情况下,为什么不会触发 Esc 和其他事件?
请推荐?
谢谢, 尼基尔
【问题讨论】:
-
我认为这可能是焦点问题? CDialog 有一个属性表,上面有 2 页。他们中的一个是否会从主对话中窃取焦点并阻止这种情况发生?但我不确定这是否是焦点问题,因为我所做的一件事就是在控件具有焦点时在属性页上添加控件,事件被触发。