WTL中如何把消息发送到ActiveX控件窗口

Dnkuni 2011-10-24 02:23:41
WTL程序在创建ActiveX控件的时候会先创建一个"AtlAxWin"窗口,然后再其中创建控件。就是说控件是这个AtlAxWin的子窗口,使用GetDlgItem获得的时外面包容窗口的句柄,请问如何将消息发送给里面的控件窗口?
...全文
137 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dnkuni 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 redui 的回复:]

跟WTL/ATL的AtlAxWin窗口作为容器一样,MFC也需要容器窗口,只不过都封装好了,每个CWnd都可以是容器窗口。
控件窗口的消息是直接响应的,为什么还要转发呢?如果真有一些东西需要传递给控件,在控件接口里面增加相应的方法更简单,没必要通过消息方式。实在要通过消息,搜索容器窗口的子窗口,或者通过控件的IOleInPlaceObject::GetWindow得到窗口句柄,或者在控件接口里……
[/Quote]

谢谢啦。IOleInPlaceObject::GetWindow就是我要的。原来我用的是::GetWindow(hWnd, GW_CHILD);但总觉得不是很好。
redui 2011-10-24
  • 打赏
  • 举报
回复
跟WTL/ATL的AtlAxWin窗口作为容器一样,MFC也需要容器窗口,只不过都封装好了,每个CWnd都可以是容器窗口。
控件窗口的消息是直接响应的,为什么还要转发呢?如果真有一些东西需要传递给控件,在控件接口里面增加相应的方法更简单,没必要通过消息方式。实在要通过消息,搜索容器窗口的子窗口,或者通过控件的IOleInPlaceObject::GetWindow得到窗口句柄,或者在控件接口里增加自己的方法返回句柄。
Dnkuni 2011-10-24
  • 打赏
  • 举报
回复
为什么WTL要加这个包容窗口而mfc却不用呢?
Dnkuni 2011-10-24
  • 打赏
  • 举报
回复
试过了,我用Spy++看了,AtlAxWin收到消息,但没把消息转发给控件窗口
  • 打赏
  • 举报
回复
直接发到AtlAxWin窗口试试
我记得activeX是直接使用AtlAxWin这个窗口的。

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧