当前位置: 首页 > news >正文

2506,wtl的通知事件

通知事件

最后一步,通知(连接)控件CMainDlg想要接受的浏览器控件触发的消息.连接OnInitDialog(),断开OnDestroy().

VC6中连接

VC6中,ATL全局函数,AtlAdviseSinkMap()通知(连接)对话框中所有控件开始或终止发送事件C++对象.
该函数第一个参数是一个指向拥有事件映射链C++对象指针(一般是),第二个参数是一个变量,如果为表示该对象开始接收事件,否则表示终止接收事件.

要使用该函数,需要处理WM_INITDIALOGWM_DESTROY消息,并如下调用:

BOOL CMainDlg::OnInitDialog(...)
{//开始沉事件AtlAdviseSinkMap ( this, true );
}void CMainDlg::OnDestroy()
{//停止沉事件AtlAdviseSinkMap ( this, false );
}

AtlAdviseSinkMap()返回一个表示是否成功执行函数HRESULT.如果OnInitDialog()AtlAdviseSinkMap()执行失败,则无法接收一些(或所有)活扩控件的事件.

VC7中连接

VC7中,CAxDialogImpl提供了一个封装AtlAdviseSinkMap()的方法:AdviseSinkMap().AdviseSinkMap()只有一个型参数,它与AtlAdviseSinkMap()第二个参数意义相同.
AdviseSinkMap()检查拥有事件映射表的类,并调用AtlAdviseSinkMap().

VC6不同是CAxDialogImpl已处理了WM_INITDIALOGWM_DESTROY消息,并调用了AdviseSinkMap(),因此只需在CMainDlg消息映射表的开始部分添加上CHAIN_MSG_MAP宏.

BEGIN_MSG_MAP(CMainDlg)CHAIN_MSG_MAP(CAxDialogImpl<CMainDlg>)//`消息映射`的`其余部分`...END_MSG_MAP()
http://www.lqws.cn/news/135613.html

相关文章:

  • LangChain开发环境搭建
  • 【Linux系统】命令行参数 和 环境变量(含内建命令介绍)
  • 行为型-迭代器模式
  • 主流Agent开发平台学习笔记:扣子罗盘coze loop 功能拆解
  • 68 VG的基本信息查询
  • Visual Studio如何引入第三方头文件——以部署OpenGL为例
  • 综合案例:斗地主
  • 【算法训练营Day06】哈希表part2
  • 基于单片机的FFT的频谱分析仪设计
  • css实现圆环展示百分比,根据值动态展示所占比例
  • Haystack:AI与IoT领域的全能开源框架
  • 【conda配置深度学习环境】
  • PhpStorm设置中文
  • Monorepo架构: 项目管理工具介绍、需求分析与技术选型
  • 西肯麦远程数据通讯架构说明
  • 实战解析MCP-使用本地的Qwen-2.5模型-AI协议的未来?
  • 让AI看见世界:MCP协议与服务器的工作原理
  • 【C/C++】入门grpc的idl
  • Webpack搭建本地服务器
  • PyTorch——优化器(9)
  • Web开发主流前后端框架总结
  • [特殊字符] Spring Boot底层原理深度解析与高级面试题精析
  • PDF处理控件Aspose.PDF教程:在 C# 中更改 PDF 页面大小
  • (LeetCode 每日一题)3403. 从盒子中找出字典序最大的字符串 I (贪心+枚举)
  • [Java 基础]面向对象-封装
  • STM32上部署AI的两个实用软件——Nanoedge AI Studio和STM32Cube AI
  • C++11 中 auto 和 decltype 的深入解析
  • 服务器中僵尸网络攻击是指什么?
  • 前端css外边距塌陷(Margin Collapse)现象原因和解决方法
  • 编程技能:格式化打印04,sprintf