属性页中的ON_UPDATE_COMMAND_UI
需要从CPropertySheet派生类,并拦截消息WM_KICKIDLE。
1、利用Class Wizard常见一个新类CMyPropSheet,其基类为CPropertySheet。
2、在头文件中添加消息函数:
afx_msg LRESULT OnKickIdle(WPARAM wParam, LPARAM lParam);
3、在源文件中包含afxpiv.h
4、添加消息映射 ON_MESSAGE(WM_KICKIDLE, OnKickIdle);
5、实现函数
LRESULT CMyPropSheet::OnKickIdle(WPARAM, LPARAM)
{
SendMessgeToDescendants(WM_KICKIDLG, 0, 0, FALSE, FALSE);
return 0;
}
属性表现在将所有的WM_KICKIDLE消息传递给属性页,在属性页类中,添加WM_KICKIDLE的消息映射,并调用UpdateDialogjControls
LRESULT CMyPropPage::OnKickIdle(WPARAM, LPARAM)
{
UpdateDialogjControls(this,FALSE);
return 0;
}
接下来就是和对话框类似的处理ON_UPDATE_COMMAND_UI 消息映射。
对无模式属性表不起作用,需要在属性表的所有窗口中处理WM_IDLEUPDATECMDUI消息,并发送WM_KICKIDLE消息给它。
附: 这里还讨论几个有关属性页的问题
1 如何在属性表的两个页之间传递数据?
CPropertyPage有一个成员函数QuerySiblings(WPARAM, LPARAM)。应用程序可以使用这个函数。QuerySiblings生成一条PSM_QUERYSIBLINGS消息,它传递给所有的兄弟,也就是属性表上的其他属性页。
一般可创建一个所有页可见的枚举,如:
enum{QUERY_MY_STRING, QUERY_SOMETHING_ELSE,.......}
然后,在一个属性页需要其他属性页中的信息时,使用代码:
CString myString;
if(lL == QuerySiblings(QUERY_MY_STRING,(LPARAM)&myString))
{
....//获取字符串
}
提供字符串的页处理PSM_QUERYSIBLINGS消息:
LRESULT CPageThatHasString::OnQuerySiblings(WPARAM wParam, LPARAM lParam)
{
if(QUERY_MY_STRING == wParam)
{
*((CString *)lParam) = _T(“Test String“);
return 1L;
}
else
return 0L;
}
2 如何让属性页具有两行标签?
从CPropertySheet派生一个自己的类,添加一个PreCreateWindow的处理,然后在调用基类的处理前加如下代码:
cs.style |= TCS_MULTILINE;
3 如何隐藏属性页的标题栏?
从CPropertySheet派生一个自己的类,并覆盖OnInitDialog,在转到默认的情况以后,使用ModifyStyle来删除标题栏标志WS_CAPTION。
ModifyStyle(WS_CAPTION,0);
转载于:https://www.cnblogs.com/hehe520/archive/2004/12/09/6330142.html
属性页中的ON_UPDATE_COMMAND_UI相关推荐
- VS2019遇见的常见错误之一及其解决办法( MSB803 找不到Windows SDK版本 10.0.18362.0.请安装所需版本的 Windows SDK,或者在项目属性页中或通过右键单击解决
VS 2019 遇见的常见错误之一及其解决办法( MSB803 找不到Windows SDK版本 10.0.18362.0.请安装所需版本的 Windows SDK,或者在项目属性页中或通过右键单击解 ...
- 错误 MSB8036 找不到 Windows SDK 版本8.1。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。
问题 错误 MSB8036 找不到 Windows SDK 版本8.1.请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择"重定解决方案目标" ...
- 找不到Windows SDK版本 10.0.18362.0.请安装所需版本的 Windows SDK,或者在项目属性页中或通过右键单击解决
原文地址:https://blog.csdn.net/gustmirage/article/details/120147548 VS 2019 遇见的常见错误之一及其解决办法( MSB803 找不到W ...
- MSB8036 找不到 Windows SDK 版本10.0.18362.0。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SD
这个问题的话,由于是从2019到2017,所以我这边的解决方式是: 1.首先: 2.找到我目前vs2017中已有的平台集: 然后就解决了
- VC++在对话框中加入属性页
当一个基于对话框的程序中有相当多的控件时,你一定会想到使用属性页来将这些控件分类放置.本文针对这种方法来讨论几种可能实现的方案. 方案一 本方案的例子请见源代码打包文件中的Property1部分 在对 ...
- 【转载】在对话框中加入属性页
原文地址:http://www.vckbase.com/document/viewdoc/?id=398 在对话框中加入属性页 作者:黄晨量 下载本文全部源代码 当一个基于对话框的程序中有相当多的控件 ...
- 利用tab_control控件在对话框中加入属性页的方法详细介绍
在对话框中加入属性页 方案一 在对话框上放置一个Tab Control的控件,再在对话框上放置所需的控件(本例放置了2个按钮,试图在每个标签中显示一个).然后利用Class Wizard来为Tab C ...
- 在对话框中加入属性页
资料来源 http://www.vckbase.com/document/viewdoc/?id=398 在对话框中加入属性页 作者:黄晨量 下载本文全部源代码 当一个基于对话框的程序中有相当多的控件 ...
- CPropertyPage::OnSetActive()和OnKillActive()函数:属性页切换时的处理函数
CPropertyPage::OnKillActive virtual BOOL OnKillActive(); 返回值: 如果数据被成功更新则返回非零值:否则返回0. 说明: 当页不再是活动页时,框 ...
最新文章
- 水平,垂直居中的15种方法
- 如何打造高质量的机器学习数据集?这份超详指南不可错过
- 开源多年后,Facebook这个调试工具,再登Github热门榜
- matlab人脸追踪,求大神帮助我这个菜鸟解决一下人脸跟踪这个程序的一些问题啊!!...
- VTK:Utilities之SortDataArray
- iframe显示错误页面
- 手机firebug查看网页代码 How to View Website Source Codes on iPad / iPhone
- 一个网站大概多少钱_建一个外贸网站大概需要多少钱?角点科技总结建外贸网站的费用...
- 亚马逊的现代应用程序为何这么强大?
- 哈理工OJ 1391 Orz odd(规律【没证出来】)
- 从googleDriver下载大数据集
- ul阻燃标准有几个等级_UL94阻燃等级介绍及常见误区分析
- 华为手机灵敏度设置_和平精英华为手机灵敏度怎么设置 上分灵敏度推荐
- 炔烃/NH2/COOH/NHS ester/N3/酰胫/马来酰亚胺/四嗪/DBCO/C12/鬼笔环肽等基团修饰BODIPY558/568
- java打印直角三角形解析_编写java程序,打印3个5行直角三角形图案 运行效果如下: 使用 方法 实现 代码截图,必须含有2位学号+姓名_学小易找答案...
- 《Python编程:从入门到实践》中的小练习(1)
- webp转换gif动图的方法-批量转换并保留动画效果
- 你知道什么是软中断吗?
- c语言酒店信息系统的ppt,(完整版)C语言酒店管理系统
- Jsoncpp与中文出现的问题