如何使用标准按钮创建无模式 CPropertySheet
2013-04-17 10:28
681 查看
本文介绍如何在无模式的CPropertySheet对象中实现标准的确定、取消和应用按钮。
我们知道,在MFC中,如果是普通的Dialog,模态显示使用DoModal,非模态显示就稍微麻烦一些:
CSampleDlg *dlg = new CSampleDlg(IDD_SAMPLE_DLG);
if(NULL == dlg)
return;
dlg->Create(this);
if(dlg->GetSafeHWnd() == NULL)
return;
dlg->ShowWindow(SW_NORMAL);
销毁:
dlg->DestroyWindow();
delete dlg;
dlg = NULL;
但是CPropertySheet如果采用类似的方法创建非模态显示,是无法显示出下方的标准按钮的:Apply/OK/Cancel
可以通过这种方法解决:
对于无模式CPropertySheet,Microsoft 基础类 (MFC) 调整表的大小,并隐藏中的CPropertySheet::OnInitDialog成员函数的标准按钮。若要防止 MFC 执行此操作,请执行以下步骤:
从CPropertySheet派生类和重写OnInitDialog函数。
设置为 FALSE 时"m_bModeless",并删除"m_nFlags"的 WF_CONTINUEMODAL 样式。
调用CPropertySheet::OnInitDialog
将"m_bModeless"重新设置为 TRUE,并将 WF_CONTINUEMODAL 的样式添加到"m_nFlags"。
下面的代码示例阐释了这种技术:
// CMySheet is derived from CpropertySheet.
// Compile options needed: default.
BOOL CMySheet::OnInitDialog()
{
m_bModeless = FALSE;
m_nFlags |= WF_CONTINUEMODAL;
BOOL bResult = CPropertySheet::OnInitDialog();
m_bModeless = TRUE;
m_nFlags &= ~WF_CONTINUEMODAL;
return bResult;
}
无模式的CPropertySheet对象中的确定和取消按钮不关闭属性表在被单击时。他们不要向工作表中,发送 WM_COMMAND 消息来使用 IDOK 或 IDCANCEL, OnOK或OnCancel函数调用的页。若要关闭该工作表,可以为 IDOK 和CPropertySheet中的 IDCANCEL 实现 ON_COMMAND 处理程序,并调用EndDialog函数,以关闭表。
我们知道,在MFC中,如果是普通的Dialog,模态显示使用DoModal,非模态显示就稍微麻烦一些:
CSampleDlg *dlg = new CSampleDlg(IDD_SAMPLE_DLG);
if(NULL == dlg)
return;
dlg->Create(this);
if(dlg->GetSafeHWnd() == NULL)
return;
dlg->ShowWindow(SW_NORMAL);
销毁:
dlg->DestroyWindow();
delete dlg;
dlg = NULL;
但是CPropertySheet如果采用类似的方法创建非模态显示,是无法显示出下方的标准按钮的:Apply/OK/Cancel
可以通过这种方法解决:
对于无模式CPropertySheet,Microsoft 基础类 (MFC) 调整表的大小,并隐藏中的CPropertySheet::OnInitDialog成员函数的标准按钮。若要防止 MFC 执行此操作,请执行以下步骤:
从CPropertySheet派生类和重写OnInitDialog函数。
设置为 FALSE 时"m_bModeless",并删除"m_nFlags"的 WF_CONTINUEMODAL 样式。
调用CPropertySheet::OnInitDialog
将"m_bModeless"重新设置为 TRUE,并将 WF_CONTINUEMODAL 的样式添加到"m_nFlags"。
下面的代码示例阐释了这种技术:
// CMySheet is derived from CpropertySheet.
// Compile options needed: default.
BOOL CMySheet::OnInitDialog()
{
m_bModeless = FALSE;
m_nFlags |= WF_CONTINUEMODAL;
BOOL bResult = CPropertySheet::OnInitDialog();
m_bModeless = TRUE;
m_nFlags &= ~WF_CONTINUEMODAL;
return bResult;
}
无模式的CPropertySheet对象中的确定和取消按钮不关闭属性表在被单击时。他们不要向工作表中,发送 WM_COMMAND 消息来使用 IDOK 或 IDCANCEL, OnOK或OnCancel函数调用的页。若要关闭该工作表,可以为 IDOK 和CPropertySheet中的 IDCANCEL 实现 ON_COMMAND 处理程序,并调用EndDialog函数,以关闭表。
相关文章推荐
- 如何使用 IBM Rational Software Architect 创建复合模式
- 如何使用UGUI创建制作不规则按钮
- js中使用document.createElement()创建按钮的时候如何让传递参数
- MFC中如何去掉CPropertySheet界面下方的四个按钮?
- MFC中如何去掉CPropertySheet界面下方的按钮
- 怎样使用CPropertyPage类和CPropertySheet类创建属性表
- CPropertySheet里的帮助按钮如何去掉
- IOS小技巧——如何使用GCD创建单例模式
- 【vs】如何使用visual studio2010创建按钮等控件
- MFC中如何去掉CPropertySheet界面下方的按钮?
- 如何使用 Google spreadsheet 创建一个账本?
- (CEGUI)如何创建控件 ------菜单MenuBar的使用
- 如何创建多线程环境下的可序列化单例模式
- [转]如何使用MFC和类型库创建自动化项目
- iOS开发的一些小技术:让UIImage有缩放功能、控制log的输出、xcode修改文件注释、随机数的使用、在UIImageView 中旋转图像、在Quartz中如何设置旋转点、创建.plist文件并存储
- 一行代码不用敲,15分钟轻松搞定GIS开发,GISer福音,教你如何从下载到使用webappbuilder创建第一个应用程序(不用申请有使用期限的企业账号哦!)
- 在Qt中如何使用QtDesigner创建的UI文件(二)
- [WM]MFC里面的PropertySheet使用
- WCF服务创建与使用(请求应答模式)
- MFC中CPropertySheet与CTabCtrl的使用