`
lovnet
  • 浏览: 6725193 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

属性页之间交换数据

UI 
阅读更多

我在前面的文章属性页中的ON_UPDATE_COMMAND_UI 中提到了利用PSM_QUERYSIBLINGS来实现属性页之间数据的交换。在这里我把有关的问题再具体的说明一下,

如果想知道怎样在Property Sheet的Property Page之间用PSM_QUERYSIBLINGS来交换数据,首先要看看函数CPropertyPage::QuerySiblings,实现如下:

LRESULT CPropertyPage::QuerySiblings(WPARAM wParam, LPARAM lParam)
{
//先判断父窗口是否创建
ASSERT(::IsWindow(m_hWnd));
ASSERT(GetParent() != NULL);
//向父窗口发送PSM_QUERYSIBLINGS消息
return GetParent()->SendMessage(PSM_QUERYSIBLINGS, wParam, lParam);
}
我们发现,CPropertyPage::QuerySiblings函数的功能就是向父窗口发送PSM_QUERYSIBLINGS消息,而Property Sheet对PSM_QUERYSIBLINGS消息的默认处理就是发送PSM_QUERYSIBLINGS到每个Propperty Page,所以在每个Property Page里,我们都需要建立一个消息映射来捕捉PSM_QUERYSIBLINGS消息,同时添加消息处理函数。

在CPropertyPage的派生类的.h文件里添加:
//{{AFX_MSG(...)
.....
//}}AFX_MSG
afx_msg LRESULT OnQuerySiblings(WPARAM wParam,LPARAM lParam);
DECLARE_MESSAGE_MAP()

在CPropertyPage的派生类的.cpp文件里添加:
BEGIN_MESSAGE_MAP(CMyPropertyPage, CPropertyPage)
ON_MESSAGE(PSM_QUERYSIBLINGS, OnQuerySiblings)
END_MESSAGE_MAP()

最后添加消息函数的实现:
LRESULT CMyPropertyPage::OnQuerySiblings(WPARAM wParam, LPARAM lParam)
{
// 在这里添加自己需要的额外处理
return 0; // 函数返回任何值,返回0时就表示这个消息不再传递给其他的Property Page
}

如果想在父窗口Property Sheet中处理这个消息,同样在CMyPropertySheet类里添加对PSM_QUERYSIBLINGS消息的处理。但是在最后函数返回的时候一定要是函数Default(),否则就不能调用默认的处理行为。
LRESULT CMyPropertySheet::OnQuerySiblings(WPARAM wParam, LPARAM lParam)
{
// 在这里添加自己需要的额外处理
return Default();
}
如果需要修改PSM_QUERYSIBLINGS消息的参数wParam和lParam的值, 同时发送改变的值到Property Page, 那么就必须要自己写代码发送PSM_QUERYSIBLINGS消息到每个Property Page.

LRESULT CMyPropertySheet::OnQuerySiblings(WPARAM wParam, LPARAM lParam)
{
// 改变wParam/lParam的值
int nPages = GetPageCount(); //得到PropertyPage的个数
LRESULT result = 0;
//循环发送PSM_QUERYSIBLINGS消息到每个Property Page
for (int page = 0; page < nPages && result == 0; ++page)
result = GetPage(page)->SendMessage(PSM_QUERYSIBLINGS, wParam, lParam);
return result;
}

分享到:
评论

相关推荐

    python数据分析随书代码

    5.4 Pandas DataFrame与HDF5仓库之间的读写操作 118 5.5 使用pandas读写Excel文件 120 5.6 使用REST Web服务和JSON 123 5.7 使用pandas读写JSON 124 5.8 解析RSS和Atom订阅 126 5.9 使用Beautiful Soup解析...

    嵌入式iframe子页面与父页面js通信的方法

    iframe框架中的页面与主页面之间的通信方式根据iframe中src属性是同域链接还是跨域链接,有明显不同的通信方式,同域下的数据交换和DOM元素互访就简单的多了,而跨域的则需要一些巧妙的方式来实现通信。 一、同域下...

    ado[1].net中文手册 学习 ado.net的重要资料

    查询结果分页:提供有关以数据页的形式查看查询结果的示例。   实现 .NET 数据提供程序:描述如何为数据存储区创建自定义 .NET 数据提供程序,并为您提供模板代码。 .NET 数据提供程序实现入门:为定义 .NET 数据...

    PI实时数据库接口设计.doc

    OPC是微软公司的对象链接和嵌入技术在过程控制方面的应用,位于数据源和数 据使用者之间,是不同制造商的产品之间进行数据交换的媒介。OSI专门为PI系统开发了 能支持OPC2.0规范的接口程序PI2 OPC Interface。配置PI...

    数据库设计各阶段.docx

    数据字典(DataDictionary,简称DD)则是对系统中数据的详尽描述,是各类数据属性的清单。对数据库应用系统设计来讲,数据字典是进行详细的数据收集和数据分析所获得的主要结果。数据字典是各类数据描述的集合,它...

    ANSI/ISA-95.00.05-2018 企业控制系统集成:制造运营管理集成的对象和属性 - 完整英文版(159页).rar

    完整英文版 ANSI/ISA-95.00.04-2018 Enterprise-Control System Integration Part 4:Objects and ...该ISA-95第4部分标准进一步定义了在第3部分标准中定义的制造运营管理活动之间的数据交换所涉及的对象模型和属性。

    ANSI/ISA-95.00.04-2018 企业控制系统集成 第4部分:制造运营管理集成的对象和属性- 完整英文版(147页)

    完整英文版 ANSI/ISA-95.00.04-2018 Enterprise-Control System Integration Part 4:Objects and ...该ISA-95第4部分标准进一步定义了在第3部分标准中定义的制造运营管理活动之间的数据交换所涉及的对象模型和属性。

    C#微软培训资料

    14.4 继承中关于属性的一些问题.169 14.5 小 结 .172 第四部分 深入了解 C#.174 第十五章 接 口 .174 15.1 组件编程技术 .174 15.2 接 口 定 义 .177 15.3 接口的成员 .178 15.4 接口的实现 .182 ...

    XMl实用大全(资料全易学习)

    1.2.3 应用间交换数据 14 1.2.4 结构化和集成的数据 14 1.3 XML文档的“生命” 15 1.3.1 编辑器 15 1.3.2 语法分析程序和处理程序 15 1.3.3 浏览器和其他工具 15 1.3.4 处理过程总结 15 .4 相关技术 17 1.4.1 超文本...

    xml实用大全和轻松学习手册和无废话xml

    1.2.3 应用间交换数据 14 1.2.4 结构化和集成的数据 14 1.3 XML文档的“生命” 15 1.3.1 编辑器 15 1.3.2 语法分析程序和处理程序 15 1.3.3 浏览器和其他工具 15 1.3.4 处理过程总结 15 .4 相关技术 17 1.4.1 超文本...

    HTML语言从零到精通

    html从入门基础到精通 HTML英语意思是:Hypertext Marked Language,即超文本标记语言 •通过HTML可以实现页面之间的跳转 •通过HTML可以展现多媒体的效果 •标签“&lt;标签名字属性&gt;‖ ...XML存储和交换数据

    Ajax课件学习(免费)

    XMLHttpRequest是XMLHTTP组件的对象,通过这个对象,AJAX可以像桌面应用程序一样只同服务器进行数据层面的交换,而不用每次都刷新界面,也不用每次将数据处理的工作都交给服务器来做;这样既减轻了服务器负担又加快...

    2021年华南理工大学网络教育计算机应用基础平时作业.docx

    内存(内部存放器): 其作用是用于临时存放CPU中运算数据, 以及与硬盘等外部存放器交换数据, 只要计算机在运行中, CPU就会把需要数据调到内存中进行运算, 当运算完成后CPU再将结果传送出来, 内存运行也决定了计算机...

    用数据库设计影院售票管理系统.docx

    本管理系统是应用于电影院中,而且需要和数据库之间进行频繁数据交换,所以采用Microsoft SQL Sever 2000 作为后台的数据库管理系统。 在本管理系统中,需要掌握影库充实信息,职工管理信息,票务管理信息,此外,...

    PHP培训教程之AJAX技术.docx

    使用XML和XSLT进行数据交换及相关操作; 使用XMLHttpRequest进行异步数据查询、检索; 使用JavaScript将所有的东西绑定在。 2、使用Ajax的好处 1、通过异步模式,提升了用户体验 2、优化了浏览器和器之间的传输,...

    防火墙技术对网络安全的影响(一).docx

    防火墙是网络安全政策的有机组成部分,它通过控制和监测网络之间的信息交换和访问行为来实施对网络安全的有效管理。 1防火墙的分类 防火墙是在内部网与外部网之间实施安全防范的系统,它用于保护可信网络免受非可信...

    中小型企业局域网搭建.docx

     VLAN在交换机上的实现方法,可以大致划分为六类: 中小型企业局域网搭建全文共3页,当前为第2页。 中小型企业局域网搭建全文共3页,当前为第2页。 1. 基于端口划分的VLAN 这是最常应用的一种VLAN划分方法,应用也...

    网络管理与网络安全.pptx

    这种信息交换通过一种网络管理协议来实现,具体的交换过程通过协议数据单元(Protocol Data Unit,简称PDU)进行。 管理站作为网络管理员与网络管理系统的接口,主要由以下几部分构成: (1)一组具有分析数据、...

    基于Android的毕业论文管理系统的设计与研究.docx

    从数据需求分析中得出系统的实体属性图,遵循三范式原则,对实体之间的依赖关系进行了整合,得出E-R图。 (三)数据库逻辑结构设计 数据库结构设计之后,就要将上面的数据库概念模型转化成数据库系统所支持的实际...

    XML编程综合资料库

    1.2.3 应用间交换数据... 14 1.2.4 结构化和集成的数据... 14 1.3 XML文档的“生命”. 15 1.3.1 编辑器... 15 1.3.2 语法分析程序和处理程序... 15 1.3.3 浏览器和其他工具... 15 1.3.4 处理过程总结... 15 ....

Global site tag (gtag.js) - Google Analytics