CPropertySheet 与CPropertyPage 的基本使用

https://www.cnblogs.com/sylar-liang/p/4173015.html
https://blog.csdn.net/qq_18297675/article/details/51229028 怎么创建
CPropertyPage 是一个从CDialog派生而来的一个类,基本功能与对话框类一样,

CPropertySheet不是一个CDialog的派生类,他是派生自CWnd的,其实它就是一个CDialog上加了一个CTabCtrl的组合类

现在来介绍它的使用。

(1)首先按一般的方法来建立一个基于对话框的MFC程序。这里我叫CProDlg

(2)现在新那两个对话框资源,把它们的属性设为CHILD和THIN,最好CAPTION也有个,分别为它们绑定一个类,这个类要选 为CPropertyPage (当然是CDialog也行,不过这里我介绍这个)

分别命名为CPage1,CPage2

(3)使用向导新建一个MFC类,名字为CMySheet类,父类当然选CPropertySheet。

(4)现在在CProDlg中添加三个指针变量(变量也行是,不过在生成对象时不用new)

分别为:

CMySheet* m_sheet;
CPage1* page1;
CPage2* page2;

在CProDlg的构造函数中加入

m_sheet = new CMySheet(_T(“SHEET”));
page1 = new CPage1;
page2 = new CPage2;

然后初始化

BOOL CProDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标

// TODO: 在此添加额外的初始化代码
//property sheet
m_sheet->AddPage(page1);
m_sheet->AddPage(page2);
m_sheet->Create(this, WS_CHILD | WS_VISIBLE , 0);
m_sheet->ModifyStyle(0, WS_TABSTOP | TCS_BOTTOM);
m_sheet->ModifyStyleEx(0, WS_EX_CONTROLPARENT);
CTabCtrl* pTab = m_sheet->GetTabControl();
TCITEM tcitem;
for( int i = 0; i < 2; i++)
{
pTab->SetItem(i, &tcitem);
}

CRect rcSheet;
GetClientRect(&rcSheet);
TRACE(_T(“width: %d, height: %d\n”), rcSheet.Width(), rcSheet.Height());
m_sheet->SetWindowPos(NULL, rcSheet.left, rcSheet.top, rcSheet.Width(), rcSheet.Height(),
SWP_NOZORDER | SWP_NOSIZE | SWP_NOACTIVATE);
m_sheet->SetActivePage(0);

现在就可以了,是不是达到了跟原来使用CDialog+CTabCtrl同样的效果呢。

正所谓一题多解嘛

这里,提示下,现在CPropertySheet的大小还不合适,

思路如下:

为CMySheet重载OnInitDialog()

在里面使用MoveWindow来达到控制PropertySheet大小的目的

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

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

相关文章

深度学习中 epoch,[batch size], iterations概念解释

one epoch&#xff1a;所有的训练样本完成一次Forword运算以及一次BP运算 batch size&#xff1a;一次Forword运算以及BP运算中所需要的训练样本数目&#xff0c;其实深度学习每一次参数的更新所需要损失函数并不是由一个{data&#xff1a;label}获得的&#xff0c;而是由一组数…

图解,C语言希尔排序

希尔排序和插入排序很相似&#xff0c;有点像插入排序的升级版本。希尔排序是希尔&#xff08;Donald Shell&#xff09;于1959年提出的一种排序算法。希尔排序也是一种插入排序&#xff0c;它是简单插入排序经过改进之后的一个更高效的版本&#xff0c;也称为缩小增量排序&…

世相

一、苦肉计 走在一条小巷里&#xff0c;路灯昏暗。嗵的一声身后不远处传来一声巨响&#xff0c;有玻璃破碎的声音和人大声的呻吟。赶快跑过去&#xff0c;原来是一位骑三轮载客的和一位骑自行车的撞在了一起。三轮车的乘客已经爬起来&#xff0c;站在旁边手足无措&#xf…

TQ210——S5PV210串口通信

TQ210——S5PV210串口通信 1、 串行与并行通信 串行通道中&#xff0c;有效信息被编码后串行的从单根传输线上传送出去。譬如发送ASCII字符’a’&#xff0c;我们可以将’a’对应的ASCII码97&#xff08;0x61&#xff09;分作8个bit在传输线上顺序依次传输。 与串行传输相对应…

try...catch()

try { //执行的代码&#xff0c;其中可能有异常。一旦发现异常&#xff0c;则立即跳到catch执行。否则不会执行catch里面的内容 } catch { //除非try里面执行代码发生了异常&#xff0c;否则这里的代码不会执行 } finally { //不管什么情况都会执行&#xff0c;包括try catch 里…

暴力字符匹配算法的C语言实现

1、聊一聊今天跟大家分享的这个曲子一般是在天气预报和英语试听中出现&#xff0c;不信你听一听绝对有种似曾相识感觉。本篇文章主要是为讲解高效字符匹配算法的一则预告文&#xff0c;跟大家讲讲暴力字符匹配算法以及匹配算法在通信中如何使用。2、暴力匹配算法介绍1聊聊字符匹…

Python 3 学习——函数扩展and迭代器生成器装饰器

Python 学习的第九小节 写此博客 是为了激励自己&#xff0c;并且将自己的心得以及遇到的问题与人分享 一、学习笔记 1. 高阶函数 函数名可以作为函数参数输入 、可以进行赋值、还可以作为返回值。 2.作用域 在Python中&#xff0c;只有模块、类以及函数才会引入新的作用域&…

鲜茄牛肉

鲜茄牛肉 【材料】 嫩牛肉150克、番茄1个、葱2根 调味料 &#xff08;1&#xff09;酒1大匙、酱油1大匙、糖半茶匙、芡汁半大匙、色拉油1大匙 &#xff08;2&#xff09;酱油1大匙、盐1/4茶匙、糖1茶匙、芡汁1大匙 【作法】 1.牛肉切薄片&#xff0c;拌入调味料&#xf…

AfxParseURL

AfxParseURL AfxParseURL(LPCTSTR pstrURL,DWORD& dwServiceType,CString& strServer,CString& strObject,INTERNET_PORT& nPort)。 目录 1 功能 2 定义 3 返回值 4 例子 5 关于 功能 编辑 该函数解析URL字符串并返回服务的类型及组件,包含在 afxinet…

TQ210 —— LCD

TQ210 —— LCD一、LCD控制器1、S5PV210 LCD控制器要使一块LCD正常的显示文字或图像&#xff0c;不仅需要LCD驱动器&#xff0c;而且还需要相应的LCD控制器。在通常情况下&#xff0c;生产厂商把LCD驱动器会以COF/COG的形式与LCD玻璃基板制作在一起&#xff0c;而LCD控制器则是…

P1372 又是毕业季I

题目背景 “叮铃铃铃”&#xff0c;随着高考最后一科结考铃声的敲响&#xff0c;三年青春时光顿时凝固于此刻。毕业的欣喜怎敌那离别的不舍&#xff0c;憧憬着未来仍毋忘逝去的歌。1000多个日夜的欢笑和泪水&#xff0c;全凝聚在毕业晚会上&#xff0c;相信&#xff0c;这一定是…

微信表情都戒烟了

昨天看到最新的微信表情是这样的原来的抽烟表情被替换成了这释放出一个信号&#xff0c;就是「抽烟不酷了」不过我想说&#xff0c;只戴着一个绿帽子&#xff0c;嘴巴里面什么都没有&#xff0c;好像也不酷啊。难道重点就是那个墨镜????&#xff1f;不过&#xff0c;在PC版…

这个代码应该怎么写???

这个代码应该怎么写??? Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiDB/html/delphi_20061222151309162.html我用DELPHI和SQL SEVER做了一个系统,现在一个窗口做了一个 帮助按键,我想点它就能打开一个名为help.txt的使用帮助文档,代码要怎么写? 麻烦高…

Python 类的属性和实例属性 Python 的动态语言

#定义一下类, 含有类属性 aaa, >>> class Aa: ... aaa 10... #对类 Aa实例化出一个实例 a1>>> a1 Aa() >>> print(a1.__dict__)#查看实例并没有自己的方法和属性{}>>> a1.aaa #但是这个实例在调用属性的时候, 发现自己没有这个属性, 于…

高效KMP字符匹配算法就这么简单

1、聊一聊上一篇文章"暴力"字符匹配算法的C语言实现2、KMP算法介绍1KMP介绍KMP是一种字符匹配算法&#xff0c;为啥叫KMP呢&#xff1f;因为是由D.E.Knuth&#xff0c;J.H.Morris和V.R.Pratt大佬提出来的。那一些小伙伴会问了怎么不叫"DJV算法"呢?因为老外…

安装MyEclipse得心得

我使用的MyEclipse是MyEclipse_5.5.1GA_E3.2.2_Installer.exeEclipse是eclipse-SDK-3.2-win32Tomcat是Tomcat 6.0JDK是jdk-6u7-windows-i586-p.exe来搭建得JSP开发环境要说Java最麻烦的还是搭建环境&#xff0c;尤其对于我这种菜鸟级的人来说简直是一个小小得错误就让我停滞很久…

TQ210 —— NandFlash

TQ210 —— nandflashTQ210 开发板板载一片 1Gbyte 的 NAND FLASH——K9K8G08U0B&#xff0c;通过查询K9K8G08U0B 芯片手册可以得到如下信息&#xff1a;&#xff08;理论知识不再介绍&#xff09;K9K8G08U0B : (1G 32M) x 8bit 总大小Data Register : (2K 64) x 8bit 数据寄…

涂鸦赞助的500个开发套件,先到先得

来源 | 涂鸦跟涂鸦申请的福利&#xff0c;给喜欢开发的同学发放开发套件&#xff0c;只要是不是专门白嫖党&#xff0c;数量可以不做限制。去年疫情突发&#xff0c;封城、封小区以及人员隔离&#xff0c;让原本享受千般宠爱的主子们变成了靠吃猫砂、塑料袋度日的小可怜&#x…

Oracle 1204 RAC failover 测试 (二)

1.检查数据库状态,状态正常 [oracleracdb01 rac]$ crs_stat -t Name Type Target State Host ------------------------------------------------------------ ora.rac.db application ONLINE ONLINE racdb01 ora....s1.…

ARM中断返回地址详细分析

ARM中断返回地址详细分析 在ARM体系中&#xff0c;通常有以下3种方式控制程序的执行流程&#xff1a;1、在正常执行过程中&#xff0c;每执行一条ARM指令&#xff0c;程序计数器PC的值加4个字节&#xff1b;每执行一条Thumb指令&#xff0c;程序计数器PC加2个字节。整个过程是顺…