您的位置:首页 > 汽车 > 新车 > Windows图形界面(GUI)-MFC-C/C++ - 属性页对话框

Windows图形界面(GUI)-MFC-C/C++ - 属性页对话框

2024/11/17 15:35:52 来源:https://blog.csdn.net/2301_80612536/article/details/140877708  浏览:    关键词:Windows图形界面(GUI)-MFC-C/C++ - 属性页对话框
  • 公开视频 -> 链接点击跳转公开课程
  • 博客首页 -> ​​​链接点击跳转博客主页

目录

属性页对话框

概念

流程

示例


属性页对话框

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

  • 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();
    }
    

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com