如何使用标准按钮创建无模式 CPropertySheet
来源:互联网 发布:即时通讯app源码 编辑:程序博客网 时间:2024/04/30 14:08
本文介绍如何在无模式的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函数,以关闭表。
- 如何使用标准按钮创建无模式 CPropertySheet
- 如何创建和使用无模式对话框
- 如何创建和使用无模式对话框
- CPropertySheet里的帮助按钮如何去掉
- 如何创建无模式对话框
- MFC中如何去掉CPropertySheet界面下方的四个按钮?
- MFC中如何去掉CPropertySheet界面下方的按钮
- 无模式对话框的创建与使用
- 无模式对话框的创建与使用
- 怎样使用CPropertyPage类和CPropertySheet类创建属性表
- 如何使用UGUI创建制作不规则按钮
- wtl CPropertySheet 去掉 “应用”按钮
- CPropertySheet响应系统关闭按钮
- CPropertySheet的按钮的修改
- CPropertySheet的按钮的修改
- 如何删除CPropertySheet 类派生生成的标签对话框上的默认按钮 “确定”“取消”“删除”
- CPropertySheet控件使用举例
- CPropertySheet使用收集
- json读取
- 体系结构
- Java I/O 管道流实现线程间的通讯例子
- using关键字
- Android: 启动另外的APP及传递参数
- 如何使用标准按钮创建无模式 CPropertySheet
- C# 自定义光标
- Linux内核的编译控制
- 究竟什么是敏捷测试
- C++之各种后缀名的作用
- 关于flash好友列表的练习
- memcpy
- Linux内核Makefile文件(一)
- 读google的C++编码规范类部分小结