Windows图形界面(GUI)-MFC-C/C++ - 属性页对话框
创始人
2024-11-14 12:05:29
  • 公开视频 -> 链接点击跳转公开课程
  • 博客首页 -> ​​​链接点击跳转博客主页

目录

属性页对话框

概念

流程

示例


属性页对话框

概念
  • 属性页对话框由一个主对话框和多个属性页组成。每个属性页是一个单独的对话框模板,它们共享同一个对话框窗口。用户可以通过点击不同的标签来切换不同的属性页。

  • CPropertyPage

    • 这是每个属性页的基类。它继承自CDialog类,用于管理单个属性页的外观和行为。

    • 主要方法和成员:

    • OnInitDialog():初始化对话框。

    • OnOK():当用户点击“确定”时调用,用于保存更改。

    • OnCancel():当用户点击“取消”时调用,用于取消更改。

  • CPropertySheet

    • 这是属性页对话框的主类,它管理所有的属性页。

    • 主要方法和成员:

    • AddPage(CPropertyPage*):添加一个属性页到属性页对话框中。

    • DoModal():显示模态属性页对话框。

    • Create():显示非模态属性页对话框。

流程
  • 定义属性页类

    • 为每个属性页创建一个类,继承自CPropertyPage。

    • 在资源编辑器中设计对话框模板,并将其与属性页类关联。

  • 定义属性页对话框类

    • 创建一个CPropertySheet的派生类,用于管理所有的属性页。
  • 添加属性页到属性页对话框

    • 在属性页对话框类的适当位置(如构造函数或初始化函数),使用AddPage()方法添加所有属性页。
  • 显示属性页对话框

    • 使用DoModal()Create()方法显示属性页对话框。
示例
  • 属性页 - 资源文件添加3个对话框 并 继承于CMFCPropertyPage

    • 重写函数OnSetActive结合GetParent以及SetWizardButtons设置按钮属性

  • 管理类 - 添加对应类继承于 CPropertySheet

    • 构造函数中通过AddPage将上述对话框进行关联

  • class CProSheet : public CPropertySheet { public: 	CProSheet(UINT nIDCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0); 	CProSheet(LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0);  public: 	CProPage1 m_Page1; 	CProPage2 m_Page2; 	CProPage3 m_Page3; };  CProSheet::CProSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage) 	:CPropertySheet(nIDCaption, pParentWnd, iSelectPage) { 	AddPage(&m_Page1); 	AddPage(&m_Page2); 	AddPage(&m_Page3); }  CProSheet::CProSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage) 	:CPropertySheet(pszCaption, pParentWnd, iSelectPage) { 	AddPage(&m_Page1); 	AddPage(&m_Page2); 	AddPage(&m_Page3); }  void CMainDlg::OnBnClickedButton13() { 	CProSheet mainSheet(_T("游戏问卷调查")); 	mainSheet.SetWizardMode(); 	mainSheet.DoModal(); }  BOOL CProPage1::OnSetActive() { 	// TODO: 在此添加专用代码和/或调用基类 	CProSheet* pMainSheet = (CProSheet*)GetParent(); 	pMainSheet->SetWizardButtons(PSWIZB_NEXT); 	return CMFCPropertyPage::OnSetActive(); } 

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...