属性页中的ON_UPDATE_COMMAND_UI

我前面翻译了一篇文章简单的谈了一下在对话框处理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

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

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

相关文章

linux基础命令rpm,rpm常用命令集合1

提要:RPM 是 Red Hat Package Manager 的缩写,原意是Red Hat 软件包管理;本文介绍RPM,并结合实例来解说RPM手工安装、查询等应用;正文:RPM包管理的用途;1、可以安装、删除、升级和管理软件&…

hibernate详解

Hibernate原理与应用 主要内容 1、引入 2、安装配置 3、基本概念和CURD 4、HQL和Criteria 5、关联映射 6、继承映射 7、集合映射 8、懒加载 9、缓存 10、事务 11、其他 12、Hibernate不适合的场景 13、与JPA的集成(annotation方式) 14、最佳实践 1、引入 模型不匹配(阻抗不匹配…

Csharp+Asp.net系列教程(四)

迈克老猫 来自:老猫的理想 本教程参考C#和ASP.NET程序设计教程撰写,有什么不足之处请大家指出,或在老猫的理想BLOG留言。 这次简述一下操作符 1.算术操作符 算术操作符包括加()、减(-)、乘(*)、除(/)和求余(%)。加减操作符…

linux 脚本 写更新,用Shell写的游戏客户端更新脚本

#!/bin/sh########################################### 客户端版本更新系统########################################### CLIENT_INIT_VERSION 客户端新版本,默认是0# CLIENT_OLD_VERSION 客户端旧版本(存放在VERSION_FILE指定的文件中),当没有时取CL…

Android Studio 环境搭建参考,jdk10javac命令提示不是内部或外部命令

https://blog.csdn.net/qq_33658730/article/details/78547789 win10下Android Studio和SDK下载、安装和环境变量配置 http://yanmin99.com/ android-0基础从入门到精通 环境变量ANDROID_HOMEE:\Program Files (x86)\Android\SdkJAVA_HOMEE:\Program Files\Java\jdk1.8.0_161TO…

报表引擎 - 数据模型

介绍 本文档是报表模型的数据模型部分,说明平台报表中涉及的报表数据相关 术语 名称 说明 数据源 数据源是与数据存储的连接。支持数据源适配 数据集 定义报表数据来源的一个二维表 参数 报表往往有参数,例如,日报表,当…

linux 删旧内核,Ubuntu 删除旧内核的方法

使用Ubuntu时如果系统里安装了很多内核,会造成多于的启动列表。想删掉一些不用的内核方法如下方法一:首先就是使用如下命令,列出所有安装的内核,下表中,带有p_w_picpath的就是内核文件。从中选择要卸载的包&#xff0c…

L2-014 列车调度(队列模拟:set)

题意: 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{…

新架设了一个CVS服务器 --by yp

cvs是个代码管理的好东东,全称并发版本控制。不知道的上网查一下资料。 我下载了相关的部分资料和软件,包括架设服务器的软件和使用服务的客户端软件,都是windows平台下可用的, 其他平台下的我都没下载,因为不会用。在…

@hdu - 6372@ sacul

目录 descriptionsolutionaccepted codedetailsdescription 定义矩阵 \(A_i\) 是一个大小为 \(p^i*p^i\) 的矩阵,其中 \(p\) 是第 \(c\) 个素数(c 给定),且 \(A_i[x][y] [C(x, y) \mod p > 0]\)(其中 C(x, y) 是组…

实验室里人越来越少啊!

研二下半学期了。研三的师哥师姐们都忙着找工作,有的已经去工作了。只是偶而来实验室转转。研一的师弟师妹,现在还都有课,实验室也没他们的机器,所以几乎不来实验室。我们研二的有四个人,两个北京的。其中一个在外面打…

在一台机器上搭建多个redis实例

默认Redis程序安装在/usr/local/redis目录下; 配置文件:/usr/local/redis/redis.conf,该配置文件中配置的端口为默认端口:6379; Redis的启动命令路径:/usr/local/bin/redis-server。 可以指定端口启动多个R…

2年前 影子

1. 请问您知道 xxxx吗 ? 麻烦了您? 2. 您在公司待了多长时间了? 3. 您觉得公司怎么样? 。。。。。。 待续! 转载于:https://www.cnblogs.com/nucdy/p/11151470.html

linux是只读添加 来覆盖,Linux之指令 重定向 文件覆盖和文件追加

CXF支持 SOAP1.1 SOAP1.2协议SOAP协议分为两个版本 1.1 1.2 默认支持1.1 实现方式: 1.编写接口 import javax.jws.WebService; WebService public inte ...USACO Section 2.4: Bessie Come Home因为题目给了边的信息,所以比较…

分层架构web容器的配置安全

转自:http://hi.baidu.com/shineo__o/item/7520d54c24d234c71081da82 /ps:本以为这是一个偶然配置失误造成的问题,但最近几天无聊时测试发现,有此类似问题的站点就有上百个,所以在这里粗糙总结一下! 通常我们会碰到这样…

Jenkins-Gitlab配置方法

1)本机首先安装好git软件2)然后安装gitlab插件,在可选插件中查找gitlab,点击直接安装3)然后进入系统管理-系统设置 首先进入Gitlab中复制需要的 token 值在 Profile Settings - Account把复制的值,复制到新增页面中转载于:https:…

高速缓冲存储器的功能、结构与工作原理

2.3 高速缓冲存储器(Cache) 2.3.1 高速缓冲存储器的功能、结构与工作原理   高速缓冲存储器是存在于主存与CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多, 接近于CPU的速度。 Cache…

洛谷 P1417 烹调方案 (01背包拓展)

一看到这道题就是01背包 但是我注意到价值和当前的时间有关。 没有想太多,直接写,0分 然后发现输入方式不对…… 改了之后只有25分 我知道wa是因为时间会影响价值,但不知道怎么做。 后来看了题解,发现我对01背包理解不够透彻普通0…

LeetCode 77.组合求和

给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 target)都是正整数。解集不能包含重复的组合…

18函数对象19command模式20函数对象在STL中的应用

Item 18. Function ObjectsItem 19. Commands and HollywoodItem 20. STL Function Objects1、unction Objects是什么函数对象听起来挺吓人,其实并不神秘,它也是一个类的对象,只不过该类重载了操作符(),使得对象使用以来跟函数一样。class Fi…