我前面翻译了一篇文章简单的谈了一下在对话框处理ON_UPDATE_COMMAND_UI 消息。又在www.codeguru.com上看到在属性页中处理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相关推荐

  1. VS2019遇见的常见错误之一及其解决办法( MSB803 找不到Windows SDK版本 10.0.18362.0.请安装所需版本的 Windows SDK,或者在项目属性页中或通过右键单击解决

    VS 2019 遇见的常见错误之一及其解决办法( MSB803 找不到Windows SDK版本 10.0.18362.0.请安装所需版本的 Windows SDK,或者在项目属性页中或通过右键单击解 ...

  2. 错误 MSB8036 找不到 Windows SDK 版本8.1。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。

    问题 错误 MSB8036 找不到 Windows SDK 版本8.1.请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择"重定解决方案目标" ...

  3. 找不到Windows SDK版本 10.0.18362.0.请安装所需版本的 Windows SDK,或者在项目属性页中或通过右键单击解决

    原文地址:https://blog.csdn.net/gustmirage/article/details/120147548 VS 2019 遇见的常见错误之一及其解决办法( MSB803 找不到W ...

  4. MSB8036 找不到 Windows SDK 版本10.0.18362.0。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SD

    这个问题的话,由于是从2019到2017,所以我这边的解决方式是: 1.首先: 2.找到我目前vs2017中已有的平台集: 然后就解决了

  5. VC++在对话框中加入属性页

    当一个基于对话框的程序中有相当多的控件时,你一定会想到使用属性页来将这些控件分类放置.本文针对这种方法来讨论几种可能实现的方案. 方案一 本方案的例子请见源代码打包文件中的Property1部分 在对 ...

  6. 【转载】在对话框中加入属性页

    原文地址:http://www.vckbase.com/document/viewdoc/?id=398 在对话框中加入属性页 作者:黄晨量 下载本文全部源代码 当一个基于对话框的程序中有相当多的控件 ...

  7. 利用tab_control控件在对话框中加入属性页的方法详细介绍

    在对话框中加入属性页 方案一 在对话框上放置一个Tab Control的控件,再在对话框上放置所需的控件(本例放置了2个按钮,试图在每个标签中显示一个).然后利用Class Wizard来为Tab C ...

  8. 在对话框中加入属性页

    资料来源 http://www.vckbase.com/document/viewdoc/?id=398 在对话框中加入属性页 作者:黄晨量 下载本文全部源代码 当一个基于对话框的程序中有相当多的控件 ...

  9. CPropertyPage::OnSetActive()和OnKillActive()函数:属性页切换时的处理函数

    CPropertyPage::OnKillActive virtual BOOL OnKillActive(); 返回值: 如果数据被成功更新则返回非零值:否则返回0. 说明: 当页不再是活动页时,框 ...

最新文章

  1. 水平,垂直居中的15种方法
  2. 如何打造高质量的机器学习数据集?这份超详指南不可错过
  3. 开源多年后,Facebook这个调试工具,再登Github热门榜
  4. matlab人脸追踪,求大神帮助我这个菜鸟解决一下人脸跟踪这个程序的一些问题啊!!...
  5. VTK:Utilities之SortDataArray
  6. iframe显示错误页面
  7. 手机firebug查看网页代码 How to View Website Source Codes on iPad / iPhone
  8. 一个网站大概多少钱_建一个外贸网站大概需要多少钱?角点科技总结建外贸网站的费用...
  9. 亚马逊的现代应用程序为何这么强大?
  10. 哈理工OJ 1391 Orz odd(规律【没证出来】)
  11. 从googleDriver下载大数据集
  12. ul阻燃标准有几个等级_UL94阻燃等级介绍及常见误区分析
  13. 华为手机灵敏度设置_和平精英华为手机灵敏度怎么设置 上分灵敏度推荐
  14. 炔烃/NH2/COOH/NHS ester/N3/酰胫/马来酰亚胺/四嗪/DBCO/C12/鬼笔环肽等基团修饰BODIPY558/568
  15. java打印直角三角形解析_编写java程序,打印3个5行直角三角形图案 运行效果如下: 使用 方法 实现 代码截图,必须含有2位学号+姓名_学小易找答案...
  16. 《Python编程:从入门到实践》中的小练习(1)
  17. webp转换gif动图的方法-批量转换并保留动画效果
  18. 你知道什么是软中断吗?
  19. c语言酒店信息系统的ppt,(完整版)C语言酒店管理系统
  20. Jsoncpp与中文出现的问题

热门文章

  1. javascript --- js中的事件
  2. Python 框架之Flask初步了解
  3. 部署项目的问题(二)—— 阿里云服务器 ECS升级node版本
  4. 利用数据的商业智能分析工具
  5. 表格存储技术方案实践及客户案例分享
  6. nginx的502错误及常见解决方法汇总
  7. XSL学习笔记6 XSLT内置模板规则
  8. 中毒,重装,杀毒……最近一段时间,很烦的一件事,不断重复……
  9. Qt中查看ui_xxx.h文件方法
  10. halcon File文件算子,持续更新