当前位置: 代码网 > 科技>操作系统>Windows > Windows图形界面(GUI)-MFC-C/C++ - 属性页对话框

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

2024年08月03日 Windows 我要评论
属性页对话框由一个主对话框和多个属性页组成。每个属性页是一个单独的对话框模板,它们共享同一个对话框窗口。用户可以通过点击不同的标签来切换不同的属性页。这是每个属性页的基类。它继承自CDialog类,用于管理单个属性页的外观和行为。:初始化对话框。OnOK():当用户点击“确定”时调用,用于保存更改。OnCancel():当用户点击“取消”时调用,用于取消更改。这是属性页对话框的主类,它管理所有的属性页。:添加一个属性页到属性页对话框中。DoModal():显示模态属性页对话框。Create()

目录

属性页对话框

概念

流程

示例


属性页对话框

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

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

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com