MFC控件篇之属性对话框

MFC(十三)多个对话框 MFC创建多个属性页最终章 阅读详情
使用属性对话框

属性对话框不同于普通对话框的是它能同时提供多个选项页,而每页都可以由资源编辑器以编辑对话框的方式进行编辑,这样给界面开发带来了方便。同时使用上也遵守普通对话框的规则,所以学习起来很方便。属性对话框由两部分构成:多个属性页(CPropertyPage)和属性对话框(CPropertySheet)。

首先需要编辑属性页,在资源编辑器中选择插入,并且选择属性对话框后就可以插入一个属性页,或者选择插入一个对话框,然后将其属性中的Style设置为Child,Border设置为Thin也可以,然后根据这个对话框资源生成一个新类,在选择基类时选择CPropertyPage,ClassWizard会自动生成相关的代码。

而对于CPropertySheet也需要生成新类,并且将所有需要加入的属性页对象都作为成员变量。属性对话框也分为有模式和无模式两种,有模式属性对话框使用DoModal()创建,无模式属性对话框使用Create()创建。下面的代码演示了如何创建属性对话框并添加属性页:

//修改CPropertySheet派生类的构造函数为如下形式
CSheet::CSheet()
        :CPropertySheet("test sheet", NULL, 0)
{
        m_page1.Construct(IDD_PAGE_1);
        m_page2.Construct(IDD_PAGE_2);
        AddPage(&m_page1);
        AddPage(&m_page2);
}
//创建有模式属性对话框
void CMy56_s1Dlg::OnMod()
{
        CSheet sheet;
        sheet.DoModal();
}
//创建无模式属性对话框
void CMy56_s1Dlg::OnUnm()
{
        CSheet *sheet=new CSheet;
        sheet->Create();
}


对于属性对话框可以使用下面的一些成员函数:

CPropertyPage* CPropertySheet::GetActivePage( )得到当前活动页的指针。
BOOL CPropertySheet::SetActivePage( int nPage )用于设置当前活动页。
int CPropertySheet::GetPageCount()用于得到当前页总数。
void CPropertySheet::RemovePage( int nPage )用于删除一页。
而对于属性页来将主要通过重载一些函数来达到控制的目的:
void CPropertyPage::OnOK() 在属性对话框上按下“确定”按钮后被调用
void CPropertyPage::OnCancel() 在属性对话框上按下“取消”按钮后被调用
void CPropertyPage::OnApply() 在属性对话框上按下“应用”按钮后被调用
void CPropertyPage::SetModified( BOOL bChanged = TRUE ) 设置当前页面上的数据被修改标记,这个调用可以使“应用”按钮为允许状态。
此外利用属性对话框你可以生成向导对话框,向导对话框同样拥有多个属性页,但同时只有一页被显示,而且对话框上显示的按钮为“上一步”,“下一步”/“完成”,向导对话框会按照你添加页面的顺序依次显示所有的页。在显示属性对话框前你需要调用void CPropertySheet::SetWizardMode()。使用向导对话框时需要对属性页的BOOL CPropertyPage::OnSetActive( )进行重载,并在其中调用void CPropertySheet::SetWizardButtons( DWORD dwFlags )来设置向导对话框上显示的按钮。dwFlags的取值可为以下值的“或”操作:
PSWIZB_BACK 显示“上一步”按钮
PSWIZB_NEXT 显示“下一步”按钮
PSWIZB_FINISH 显示“完成”按钮
PSWIZB_DISABLEDFINISH 显示禁止的“完成”按钮
void CPropertySheet::SetWizardButtons( DWORD dwFlags )也可以在其他地方调用,比如说在显示最后一页时先显示禁止的“完成”按钮,在完成某些操作后再显示允许的“完成”按钮。

在使用向导对话框时可以通过重载一些函数来达到控制的目的:

void CPropertyPage::OnWizardBack() 按下了“上一步”按钮。返回0表示有系统决定需要显示的页面,-1表示禁止页面转换,如果希望显示一个特定的页面需要返回该页面的ID号。
void CPropertyPage::OnOnWizardNext() 按下了“下一步”按钮。返回值含义与void CPropertyPage::OnWizardBack()相同。
void CPropertyPage::OnWizardFinish() 按下了“完成”按钮。返回FALSE表示不允许继续,否则返回TRUE向导对话框将被结束。
在向导对话框的DoModal()返回值为ID_WIZFINISH或IDCANCEL。下面的代码演示了如何创建并使用向导对话框:
//创建有模式向导对话框
void CMy56_s1Dlg::OnWiz()
{
        CSheet sheet;
        sheet.SetWizardMode();
        int iRet=sheet.DoModal();//返回ID_WIZFINISH或IDCANCEL
}
//重载BOOL CPropertyPage::OnSetActive( )来控制显示的按钮
BOOL CPage1::OnSetActive()
{
        ((CPropertySheet*)GetParent())->SetWizardButt
ons(PSWIZB_BACK|PSWIZB_NEXT);
        return CPropertyPage::OnSetActive();
}
BOOL CPage2::OnSetActive()
{
        ((CPropertySheet*)GetParent())->SetWizardButt
ons(PSWIZB_BACK|PSWIZB_FINISH);
        return CPropertyPage::OnSetActive();
}
 
VS2010&MFC对话框编程(3)——属性页对话框 1、简介     属性页对话框实际上是一个包含多个子对话框的对话框,这些子对话框通常被称为页(Page),每次只有一个页是可见的,在对话框的顶端有一行的选项卡,可通过点击不同的选项卡切换到不同的页。这样就可以容纳大量的控件来描述某一对象的诸多属性。     属性页对话框包括一个CPropertySheet和几个CPropertyPage。 2、创建属性页对话框例子     步骤1: 阅读详情

相关推荐

VS2019/MFC对话框系列:如何为控件添加消息处理函数

创建对话框类和添加控件变量在上一讲中已经讲过,这一讲的主要内容是如何为控件添加消息处理函数。 MFC为对话框和控件等定义了诸多消息,我们对它们操作时会触发消息,这些消息最终由消息处理函数处理。比如我们点击按钮时就会产生BN_CLICKED消息,修改编辑框内容时会产生EN_CHANGE消息等。一般为了让某种操作达到效果,我们只需要实现某个消息的消息处理函数。当功能实现了想要拥有美观的界面可以借助Toolkit Pro进行界面优化。 Xtreme Toolkit Pro:是屡获殊荣的VC界面库,是MFC开发

qq_42444778的博客 3105

关于属性页或向导的使用(CPropertySheet,CPropertyPage)

 属性对话框不同于普通对话框的是它能同时提供多个选项页,而每页都可以由资源编辑器以编辑对话框的方式进行编辑,这样给界面开发带来了方便。同时使用上也遵守普通对话框的规则,所以学习起来很方便。属性对话框由两部分构成:多个属性页(CPropertyPage)和属性对话框(CPropertySheet)。 首先需要编辑属性页,在资源编辑器中选择插入,并且选择属性对话框后就可以插入一个属性页,或者选择插

※旅程※ 4062

# vs2010下的基于对话框的MFC(统计字符长度与个数)

** 具体步骤** 1.创建MFC 2.添加3个控件 按钮控件 改为“统计” 编辑框控件 静态文本框控件 3.点击编辑框,修改编辑框属性 修改为true,否则调试时按回车会结束运行 给编辑框改为多行(Multiline)选true,修改ID为IDC_EDIT_InPut,也可自行选择增加水平和垂直滚动条分别为Horizontal Scrollbar和vertical Scrollbar ...

three_treess的博客 637

MFC对话框控件的属性、方法、消息

一、静态控件 Static 1.属性: Align text 横向对齐方式,有左对齐、居中对齐和右对齐三种,默认为左对齐 Center vertically 将文本垂直居中,为布尔型,默认为假 Notify 控件被单击时是否通过父窗口,布尔型,默认为假 Sunken

两水先木示的博客 5283

MFC 学习之 模态对话框图片控件上作图

首先说明一点,onpaint 是更新面板用的,作图的话应在控件上进行。 新建 MFC 对话框工程,面板上添加按钮 IDC_START , IDC_SHOW , IDC_STOP 添加两个对话框,ID 分别设为(简写)ld 和 cd。 ld 上添加三个图片控件,并且每一个均关联一个 CSTATIC 型变量。 cd 上添加一个图片控件,操作如上。 分别为两个对话框添加类,名称自己设,我的是

落日流沙 3813

【MFC Picture Control 控件属性】

本文介绍了MFC框架中Picture Control控件的基本概念和属性配置,重点分析了ID为IDC_IMAGE_DISPLAY2的示例控件。该控件类型为Frame,颜色为Black,主要用于静态图像显示。文章详细解读了控件的各类属性,包括基本标识、布局调整、外观设置、位置行为等,并提供了MFC代码示例说明如何动态加载图像和调整控件大小。通过属性解析,帮助开发者更好地理解和使用Picture Control控件进行Windows应用开发。

深耕CV 1563

VS2010-MFC(对话框:属性页对话框及相关类的介绍)

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

dgc70876的博客 587

MFC 一般属性页对话框

采用VS2017 的MFC,根据鸡啄米教程创建的一般属性页对话框的工程,教程链接如下:http://www.jizhuomi.com/school/c/164.html,难度不大,需要的可以下载参考。

mfc编程 孙鑫_MFC(ActiveX编程,孙鑫C++第十八讲笔记整理)

一:在VB中调用X控件,添加方法project->Add components。另外可以用Object Browser来查看控件二:在VC中创建X控件1.新建一个X工程名为Clock,注意一个文件中可以包含多个控件。2.保持缺省设置,完成。注意它生成的三个类,以及相关的接口。3.运行它。选择TSTCON32.exe作为容器。4.选择Insert Control,此时我们可以看到,它画了一个椭...

weixin_42298881的博客 611

6种方法实现MFC属性页对话框

用6种方法实现MFC属性页对话框,仅仅是几个简单的例子供大家参考~~

hcaptcha逆向实战:从API解析到参数构造的完整链路

本文详细拆解了hcaptcha验证码的逆向实战流程,从环境准备、捕获API与版本号,到解析核心加密逻辑hsw.js,再到构造getcaptcha请求参数,最后完成验证提交。文章重点剖析了motionData、n、c等关键参数的获取与构造方法,为开发者模拟浏览器行为、实现自动化验证提供了清晰的完整链路指南。

ik678901的博客 630

MFC之树形控件25

1 树形控件 先了解相关知识。 1)创建基于对话框的项目。 2)删除对话框原有的内容,添加树形控件TreeControl。 3)右击树形控件属性,然后添加相应属性。 4)在资源视图里面右击icon文件夹,添加资源,选择icon导入预先准备好的图片。 5)由于我们需要在节点中显示图片,所以我们需要准备一个成员变量的图片列表。 CImageList m_imageList; 6)关联属性控件。右击树形控件添加Control变量即可。 7)编写代码。一般树形控件的初始化代码都是放在对话框的初始化函数On

weixin_44517656的博客 480

【SLAM】探索explore_lite在移动机器人自主建图中的高效边界检测策略

本文深入解析了explore_lite在移动机器人自主建图中的应用,重点探讨了其高效的贪婪边界检测策略。该工具包专为资源受限平台设计,通过直接利用SLAM生成的地图信息,以极低的计算开销实现快速、稳定的未知区域探索,并与move_base导航框架无缝协作,是轻量级机器人自主探索的优选方案。

purple的博客 1067

MFC——对话框的创建及使用

文章目录MFC对话框的创建实例对话框程序的创建过程:对话框应用程序框架介绍设计界面和工具箱MFC常用控件静态文本框CStatic普通按钮 CButton编辑框 CEdit组合框(下拉框)CComboBox列表控件 CListCtrl树控件 CTreeCtrl标签控件 CTabCtrl MFC对话框的创建实例 对话框程序的创建过程: 选择“文件 | 新建 | 项目”菜单; 在“新建项目”对...

跑不了的你的博客 2万+

python实现ECMS算法

ECMS(Equivalent Consumption Minimization Strategy)算法是一种用于混合动力汽车能量管理系统的优化策略。它通过计算等效油耗来平衡电池电量消耗和燃油消耗,从而优化整体能耗。以下是一个简单的Python实现,用于演示ECMS算法的基本思想。这个实现假设了一个简单的混合动力汽车模型,其中电池电量和燃油消耗是主要的优化目标。

weixin_45570158的博客 923

【液晶专题】从外挂到In-Cell/ On-Cell/ OGS再也不会傻傻分不清楚了

触控技术经历了从外挂式到内嵌式的革新,主要方案包括外挂式(Out-Cell)、OGS、On-Cell和In-Cell。

一点硬件 1253

MFC实现菜单弹出对话框,并在对话框中实现控件触发

首先我们要新建一个mfc工程,实验工具是vs,选择图中选项然后下一步当中,设置成基于对话框然后可以完成,也可以继续下一步设置窗口的一下小部件。1.第一步,我们要在窗口上添加菜单。找到资源视图,右键添加资源。选择menu,新建之后,输入自己想要的菜单名最后在添加图中所缺代码:        CMenu menu; menu.LoadMenu(IDR_MENU1);  //IDR_MENU1为菜单栏I...

felicityPY的博客 1万+

全球半导体设备氧化钇熔射服务行业规模预测:预计未来六年CAGR为7.8%

本文将对“半导体设备氧化钇熔射服务”行业进行深度分析,探讨市场趋势的演变、核心竞争者的战略布局、供应链结构的内外特点、研发创新的最新进展、法规政策环境的适应性调整以及投资机会与风险评估。这一稳健的增长趋势表明半导体设备氧化钇熔射服务在电子行业中的重要性逐渐增强。由于全球对于高效、高精度和可靠的电子解决方案的需求增加,对能够提供这些功能的半导体设备氧化钇熔射服务的需求日益增长。由于半导体设备氧化钇熔射服务主要为就地服务型,其“配送”主要依赖于专业团队和技术设备的及时调配,强调服务的时效性和高质量。

CC1239777的博客 571

MFC基础:控件

文章目录 Windows程序分类:EXE的可执行程序、DLL的动态链接库程序、LIB静态链接库程序、SYS的驱动类型程序 EXE的可执行程序分类:小黑屏的控制台程序、非控制台程序(大多数是带界面的程序) Windows API:Windows操作系统应用程序接口 Linux API:Linux操作系统应用程序接口 C/C++语言:虽然能够开发软件,但是只能开发一些简单的小黑屏的应用程序:C/C++程序也调用很多的系统函数、变量或对象:例如printf、cout等等,但是这里的系统指的是编译系统,而非操作系

MOOG007的博客 2861

Pointnet++环境配置(Windows11和ubuntu)及训练教程

PS:前两行命令是数据处理的命令,主要是进行数据读取和生成相应的训练数据格式,在Ubuntu上是正常运行的,在Windows上运行会失败,无法生成训练用的数据格式,所以最好在Ubuntu上训练,如果一定要用Windows,可以ubuntu上生成数据格式在导到Windows上,数据生成不需要安装torch。通过anaconda配置的环境,在官网找的命令安装的,版本是2.1.0+cu118。训练命令:我使用的pycharm,直接在pycharm中打开终端,运行命令。Python版本:3.7。

AIcurator的博客 2558

30. 用GPT-4自动生成测试用例的完整流程

利用GPT - 4生成测试用例面临的主要问题包括:如何准确地将软件需求转化为GPT - 4能够理解的输入提示,以确保生成的测试用例覆盖所有关键功能;如何评估生成的测试用例的有效性和充分性;如何处理生成的测试用例中的错误或不合理之处;以及如何将生成的测试用例集成到现有的测试框架中。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 472

MFC 对话框与控件的使用

用VS编写关于MFC 对话框与控件的一个小项目

qq_51679695的博客 4060

【短距离通信】【WiFi】精讲WiFi 6E协议!图解超赞超详细!!!

802.11ax(HE,HighEfficiency) (Wi-Fi 6E):6G频段共有1200MHz的频谱给到WiFi 6E使用,可用于从5.925GHz到7.125GHz。WiFi将可以访问59个20MHz信道,29个40MHz信道14个80MHz信道和7个160MHz信道。这不仅代表可以有很多频道,还可以代表可以解锁更高的数据速率。因为 802.11ax 标准(Wi-Fi 6)也在 2.4GHz 和 5GHz 频段运行,所以 6GHz 频段的 Wi-Fi 将被命名为 Wi-Fi 6E。

风云说通信 2347

MFC对话框、菜单栏、工具栏、控件的创建和基本使用

下面让我们通过一个实例 来了解MFC对话框的建立,菜单栏、工具栏、控件的一些基本使用 先简单看一下效果 系统环境 window10 Visual Studio 2017 项目的目录 一、对话框 首先需要知道的是 MFC中创建的对话框分为两种 模态对话框 非模态对话框 两者区别简单来说就是 模态对话框就像和你女朋友聊天,一旦你打开了她的对话框,除非你把她哄好打点好之后,你才能干其他...

weixin_44984664的博客 8084

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

MFC对话框初始化函数是在哪里?以及如何为MFC的EDIT控件设置默认显示值?

问:对话框初始化函数是哪个? 如果做基于对话框的,会有一个初始化函数OnInitDialog

芒果布丁00的博客 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: MFC控件篇之对话框中的消息与数据
下一篇: MFC控件篇之通用对话框
JamesXing
博客等级 码龄20年 30粉丝 3原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值