【09】MFC入门到精通——MFC 属性页对话框的 CPropertyPage类 和 CPropertySheet 类

文章目录

  • 九、属性页对话框的类`CPropertyPage`类 和 `CPropertySheet` 类。
    • 9.1 CPropertyPage 类
      • (1)构造函数
      • (2)CancelToClose()函数
      • (3)SetModified()函数
      • (4)可重载函数
    • 9.2 CPropertySheet类
      • (1)构造函数
      • (2)GetActiveIndex()函数
      • (3)GetActivePage()函数
      • (4)GetPage()函数
      • (5)GetPageCount()函数
      • (6)GetPageIndex()函数
      • (7)SetActivePage()函数
      • (8)SetWizardButtons()函数
      • (9)SetWizardMode()函数
      • (10)SetTitle()函数
      • (11)AddPage()函数
      • (12)PressButton()函数
      • (13)RemovePage()函数

九、属性页对话框的类CPropertyPage类 和 CPropertySheet 类。

属性页对话框的分类

属性页对话框想必大家并不陌生,XP系统中桌面右键点属性,弹出的就是属性页对话框,它通过标签切换各个页面。另外,我们在创建MFC工程时使用的向导对话框也属于属性页对话框,它通过点击“Next”等按钮来切换页面。

属性页对话框就是包含一般属性页对话框向导对话框两类。它将多个对话框集成于一身,通过标签或按钮来切换页面。

我们使用属性页对话框时,用到的类主要有两个:CPropertyPage类 和 CPropertySheet 类。

CMFCPropertySheet和CMFCPropertyPage都是vs08sp1以后引入的新类,扩充了已有的CPropertySheet和CPropertyPage这两个类。

9.1 CPropertyPage 类

CPropertyPage类继承自CDialog类,它被用于处理某单个的属性页,所以要为每个属性页都创建一个继承自CPropertyPage的子类。大家可以在VS2010的MSDN中查找CPropertyPage类以及它的成员的详细说明。下面就为大家讲解MSDN中列出的CPropertyPage类的部分主要成员函数。

(1)构造函数

这里讲三个CProperty类的构造函数,函数原型为:

CPropertyPage( );
explicit CPropertyPage(UINT nIDTemplate,UINT nIDCaption = 0,DWORD dwSize = sizeof(PROPSHEETPAGE));
explicit CPropertyPage(LPCTSTR lpszTemplateName,UINT nIDCaption = 0,DWORD dwSize = sizeof(PROPSHEETPAGE));
  • 第一个是没有任何参数的构造函数。

  • 第二个构造函数中,参数nIDTemplate是属性页的对话框资源ID,

    • 参数nIDCaption是属性页对话框选项卡的标题所用字符串资源的ID,若设为0,则选项卡标题就使用该属性页的对话框资源的标题。
  • 第三个构造函数中,参数lpszTemplateName为属性页的对话框资源的名称字符串,不能为NULL。参数nIDCaption同上。

(2)CancelToClose()函数

在模态属性页对话框的属性页进行了某不可恢复的操作后,使用CancelToClose() 函数

将“OK”按钮改为“Close”按钮,并禁用“Cancel”按钮。函数原型为:

void CancelToClose( );

(3)SetModified()函数

调用此函数可激活或禁用“Apply”按钮,函数原型为:

void SetModified(BOOL bChanged = TRUE);

(4)可重载函数

CPropertyPage类提供了一些消息处理函数,来响应属性页对话框的各种消息。

我们重载这些消息处理函数,就可以自定义对属性页对话框操作的处理。

可重载的消息处理函数包括:

OnApply:处理属性页的“Apply”按钮被单击的消息OnCancel:处理属性页的“Cancel”按钮被单击的消息OnKillActive:处理属性页当前活动状态被切换的消息,常用于数据验证OnOK:处理属性页的“OK”按钮、“Apply”按钮或者“Close”按钮被单击的消息OnQueryCancel:处理属性页的“Cancel”按钮被单击前发出的消息OnReset:处理属性页的“Reset”按钮被单击的消息OnSetActive:处理属性页被切换为当前活动页的消息OnWizardBack:处理属性页的“Back”按钮被单击的消息,仅在向导对话框中有效OnWizardFinish:处理属性页的“Finish”按钮被单击的消息,仅在向导对话框中有效OnWizardNext:处理属性页的“Next”按钮被单击的消息,仅在向导对话框中有效

9.2 CPropertySheet类

CPropertySheet类继承自CWnd类,它是属性表类,负责加载、打开或删除属性页,并可以在属性页对话框中切换属性页。它跟对话框类似,也有模态和非模态两种。下面就讲解CPropertySheet类的部分成员函数。

(1)构造函数

这里依然列出CPropertySheet类的三个构造函数:

CPropertySheet( );
explicit CPropertySheet(UINT nIDCaption,CWnd* pParentWnd = NULL,UINT iSelectPage = 0);
explicit CPropertySheet(LPCTSTR pszCaption,CWnd* pParentWnd = NULL,UINT iSelectPage = 0);
  • 参数 nIDCaption: 标题的字符串资源的ID。

  • 参数 pParentWnd: 属性页对话框的父窗口,若设为NULL,则父窗口为应用程序的主窗口。

  • 参数 iSelectPage: 初始状态时,活动属性页的索引,默认为第一个添加到属性表的属性页。

  • 参数 pszCaption: 标题字符串。

(2)GetActiveIndex()函数

获取当前活动属性页的索引。函数原型为:

int GetActiveIndex( ) const;
  • 返回值:当前活动属性页的索引。

(3)GetActivePage()函数

获取当前活动属性页对象。函数原型为:

CPropertyPage* GetActivePage( ) const;
  • 返回值:当前活动属性页对象的指针。

(4)GetPage()函数

获取某个属性页对象。函数原型为:

CPropertyPage* GetPage(int nPage) const;
  • 参数nPage: 目标属性页的索引。

  • 返回值: 目标属性页对象的指针。

(5)GetPageCount()函数

获取属性页的数量。函数原型为:

int GetPageCount( ) const;
  • 返回值:属性页的数量。

(6)GetPageIndex()函数

获取某属性页在属性页对话框中的索引。函数原型为:

int GetPageIndex(CPropertyPage* pPage);
  • 参数pPage: 要获取索引的属性页对象的指针。

  • 返回值: 属性页对象在属性页对话框中的索引。

(7)SetActivePage()函数

设置某个属性页为活动属性页。函数原型为:

BOOL SetActivePage(int nPage);BOOL SetActivePage(CPropertyPage* pPage);
  • 参数 nPage: 要设置为活动属性页的索引。

  • 参数 pPage: 要设置为活动属性页的对象指针。

(8)SetWizardButtons()函数

在向导对话框上启用或禁用Back、Next或Finish按钮,应在调用DoModal之前调用此函数。

函数原型为:

void SetWizardButtons(DWORD dwFlags);

参数dwFlags:设置向导按钮的外观和功能属性。可以是以下值的组合:

PSWIZB_BACK 启用“Back”按钮,如果不包含此值则禁用“Back”按钮。PSWIZB_NEXT 启用“Next”按钮,如果不包含此值则禁用“Next”按钮。PSWIZB_FINISH 启用“Finish”按钮。PSWIZB_DISABLEDFINISH 显示禁用的“Finish”按钮。

(9)SetWizardMode()函数

设置属性页对话框为向导对话框模式,应在调用DoModal之前调用此函数。函数原型为:

void SetWizardMode( );

(10)SetTitle()函数

设置属性对话框的标题。函数原型为:

void SetTitle(LPCTSTR lpszText,UINT nStyle = 0);
  • 参数lpszText:标题字符串。

  • 参数nStyle:指定属性表标题的风格。应当为 0 或 PSH_PROPTITLE。

如果设为PSH_PROPTITLE,则单词“Properties”会出现在指定标题之后。

例如,SetTitle(“Simple”,PSH_PROPTITLE)这种调用会使得属性表标题为 “Simple Properties”。

(11)AddPage()函数

为属性对话框添加新的属性页。函数原型为:

void AddPage(CPropertyPage *pPage);
  • 参数pPage:要添加的新的属性页的对象指针。

(12)PressButton()函数

模拟按下某指定的按钮。函数原型为:

void PressButton(int nButton);
  • 参数nButton:要模拟按下的按钮,它可以是下列值之一:
PSBTN_BACK 选择“Back”按钮。PSBTN_NEXT 选择“Next”按钮。PSBTN_FINISH 选择“Finish”按钮。PSBTN_OK 选择“OK”按钮。PSBTN_APPLYNOW 选择“Apply”按钮。PSBTN_CANCEL 选择“Cancel”按钮。PSBTN_HELP 选择“帮助”按钮。

(13)RemovePage()函数

删除某属性页。函数原型为:

void RemovePage(CPropertyPage *pPage);
void RemovePage(int nPage);
  • 参数pPage:要删除的属性页的对象指针。

  • 参数nPage:要删除的属性页的索引。

属性对话框和相关的两个类就先介绍到这,主要是为后面使用属性页对话框做准备。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/89565.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/89565.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python学习笔记4

时间:2025.7.18学习内容&#xff1a;【语法基础】if判断、比较运算符与逻辑运算符一、if判断if判断基本格式&#xff1a;if要判断的条件&#xff0c;条件成立时要做的事情注意&#xff1a;input内默认存储的是字符串age17 if age<18:print(未成年不能上网) scoreinput(你的成…

20250718-2-Kubernetes 应用程序生命周期管理-Pod对象:基本概念(豌豆荚)_笔记

二、Kubernetes应用程序生命周期管理&#xfeff;1. 课程内容概述主要内容&#xff1a;Pod资源共享实现机制管理命令应用自修复&#xff08;重启策略健康检查&#xff09;环境变量Init container静态Pod2. Pod对象介绍&#xfeff;1&#xff09;Pod基本概念&#xfeff;&#x…

为Notepad++插上JSON格式化的翅膀

文章目录概要安装步骤效果展示概要 JSMinNPP.dll 是一个 Notepad 插件&#xff0c;用于压缩 JavaScript 代码和格式化JSON字符床。以下是安装和使用的详细步骤&#xff1a; 安装步骤 下载 JSMinNPP.dll 插件 https://pan.quark.cn/s/73dd0ac225be 放置 DLL 文件 打开 Notepa…

STM32-第七节-TIM定时器-3(输入捕获)

一、简介&#xff1a;1.名称&#xff1a;IC&#xff0c;输入捕获2.电路&#xff1a;如图为通用定时器框图&#xff0c;下半部分的左半模块&#xff0c;与输出比较部分共用捕获/比较寄存器与引脚。3.功能&#xff1a;当通道输入引脚出现电平跳变时&#xff0c;当前CNT的值&#…

Console 纳管 Elasticsearch 9(二):日志监控

前面介绍过 INFINI Console 纳管 Elasticsearch 9&#xff08;一&#xff09;&#xff0c;进行指标监控、数据管理、DSL 语句执行&#xff0c;但日志监控功能需要结合 Agent 才能使用。现在来实现一下&#xff1a; Agent 需要和 ES 部署到同一机器上&#xff0c;这里是在我本地…

实训十——路由器与TCP/IP模型

补充拓扑图&#xff08;交换机串联通信&#xff09;电脑A——交换机S1——交换机S2——电脑B问&#xff1a;A和B如何通信&#xff1f;首先A会将通信的数据封装好&#xff0c;将源端口、目标端口&#xff0c;源地址、目标地址&#xff0c;源MAC、目标MAC封装起来&#xff0c;但是…

【Android】ViewBinding(视图绑定)

一、什么是ViewBindingViewBinding是Android Studio 3.6推出的新特性&#xff0c;旨在替代findViewById(内部实现还是使用findViewById)。通过ViewBinding&#xff0c;可以更轻松地编写可与视图交互的代码。在模块中启用ViewBinding之后&#xff0c;系统会为该模块中的每个 XML…

泛型与类型安全深度解析及响应式API实战

一、泛型通配符&#xff1a;灵活与安全的平衡术 在Java动物收容所系统中&#xff0c;我们常需要处理不同动物类型的集合。通过泛型通配符&#xff0c;可以构建更灵活的API&#xff1a; class Shelter<T extends Animal> {private List<T> animals new ArrayList&l…

Cookie 与 Session概述

在 Web 开发中&#xff0c;会话跟踪是一个核心问题。HTTP 协议是无状态的&#xff0c;这意味着服务器无法直接记住客户端的状态。而 Cookie 和 Session 技术的出现&#xff0c;正是为了解决这一难题。一、Cookie概述Cookie&#xff0c;翻译成中文是小甜点、小饼干的意思。在 HT…

阿里云alicloud liunux3-安装docker

你这个错误&#xff1a;Curl error (35): SSL connect error for https://download.docker.com/linux/centos/8/x86_64/stable/... Error: Failed to download metadata for repo docker-ce-stable: Yum repo downloading error说明你的机器访问 download.docker.com 的 HTTPS …

【世纪龙科技】汽车故障诊断与排除仿真教学软件

在汽车产业智能化、电动化转型加速的今天&#xff0c;汽车维修行业对技术人才的要求已从传统经验型向“理论实践数字化”复合型转变。然而&#xff0c;实车实训成本高、安全隐患大、教学场景受限等问题&#xff0c;始终制约着职业教育的高质量发展。江苏世纪龙科技有限公司立足…

柴油机活塞cad【4张】三维图+设计说明书

1015柴油机活塞结构设计及温度场分析 摘 要 随着科研的进步&#xff0c;内燃机技术得到了快速的发展&#xff0c;低排放高效率的内燃机的发展成为内燃机发展的主要趋势&#xff0c;活塞作为内燃机的主要组成部件&#xff0c;在内燃机中扮演着至关重要的作用。活塞在内燃机中始终…

雪豹大模型驱动效率革命 华鼎冷链科技重构餐饮供应链神经网络

当餐饮行业的开店率高达67.5%、闭店率达61.2%时&#xff0c;供应链该如何进行革新与升级&#xff1f; 在郑州盛大启幕的第三届中国火锅烧烤领潮峰会上&#xff0c;华鼎冷链科技CEO王君以“AI驱动智慧供应链赋能餐饮行业新升级”为主题分享时称&#xff0c;当前餐饮行业高闭店率…

汽车功能安全 -- TC3xx外部看门狗

之前聊过TC3xx SMU关于内部看门狗&#xff08;CPU Watchdog 和Safety Watchdog&#xff09;Alarm的处理方法。 汽车功能安全--TC3xx SMU之看门狗alarm处理 在里面我们提到了这些Alarm关联的功能安全机制&#xff1a; SM[HW]:SCU:ENDINIT_WATCHDOG SM[HW]:SCU:SAFETY_WATCHD…

如何为“地方升学导向型”语校建模?Prompt 框架下的宇都宫日建工科专门学校解析(7 / 500)

如何为“地方升学导向型”语校建模&#xff1f;Prompt 框架下的宇都宫日建工科专门学校解析&#xff08;7 / 500&#xff09; 系列说明 500 所日本语言学校结构化建模实战&#xff0c;第 7 篇。每篇拆解 1 所学校在 Prompt-QA 系统中的建模策略&#xff0c;分享工程经验&#x…

Flutter 入门指南:从基础到实战

介绍 Flutter Flutter 是 Google 开发的开源移动应用软件开发工具包&#xff08;SDK&#xff09;&#xff0c;用于快速在 iOS 和 Android 上构建高质量的原生界面。Flutter 的一大特点是其跨平台功能&#xff0c;让开发者能够使用同一套代码基础为两个平台构建应用。这一点通过…

八字命理:枭印夺食的形成原理与解决办法

枭印夺食(|)含义:原局食神伤官为喜用&#xff0c;印为忌正印/偏印克制了食神/伤官&#xff0c;克制形式可以是盖头/截脚/同在天干或者地支时相克(2)表现症状:emo、敏感、好面子、不敢开口说话、被环境压制(3)症状剖析:印为忌&#xff1d;他人即地狱&#xff0c;不论正印(吉神)还…

数组和对象的深拷贝和浅拷贝的方法

数组和对象的深拷贝、浅拷贝方法有所不同&#xff0c;以下是常见的实现方式&#xff1a;一、浅拷贝方法&#xff08;数组和对象通用/专用&#xff09;浅拷贝只复制表层数据&#xff0c;嵌套的引用类型仍共享内存。1. 数组的浅拷贝- 扩展运算符&#xff08;...&#xff09;&…

【RK3576】【Android14】开发板概述

获取更多相关的【RK3576】【Android14】驱动开发&#xff0c;可收藏系列博文&#xff0c;持续更新中&#xff1a; 【RK3576】Android 14 驱动开发实战指南 1. 引言 RK3576处理器简介&#xff1a; RK3576 是一颗高性能、低功耗的应用处理器芯片&#xff0c;专为ARM PC、边缘计算…

凸优化课程学习笔记(一)

凸优化课程学习笔记(一) 课程:B站清华大学陈剑博士《凸优化基础理论与应用》 优化理论概述 1. 优化序论 定义:凸优化是一门应用极为广泛的学科,主要研究如何对决策问题进行最优选择,探讨最优解的性质,寻找高效的计算方法,并分析这些方法的理论基础与实际应用表现。…