控件怎样判断主窗体在移动?

123_321_1234567 2013-12-19 01:35:02
写了个OCX控件,OCX创建时弹出来一个PopUp窗体,这个窗体在OCX销毁前一直存在。
现在问题是,OCX怎么才能知道调用OCX的主窗体在移动,然后随之动态调整PopUp窗体的位置?
我知道在调用OCX的主窗体中可以做到,但调用OCX的主窗体可能是IE,所以一定是要在OCX中处理。
可用分就这么多了,期待大侠出手相助。
...全文
451 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
123_321_1234567 2014-01-26
  • 打赏
  • 举报
回复
OCX控件中的OnWindowPosChanged函数会不会触发. 调用SetWindowLong 指定 GWL_WNDPROC,这个方法在一个窗体里只有一个OCX控件的情况下还行,要是有多个这样 的控件,就不行了。 2楼的方法适合桌面程序,IE里调用没辙。 目前还是没找到合适的方法。或许这么设计是有问题的。但现在有这个需求,没办法。
许文君 2013-12-24
  • 打赏
  • 举报
回复
可以挂接主窗体循环,如4#,但是一般来说都是主窗体把消息传递给子窗体,这样比较好处理
fishion 2013-12-24
  • 打赏
  • 举报
回复
获取真正使用ocx的父窗口句柄,然后调用SetWindowLong 指定 GWL_WNDPROC,然后挂接父窗口的消息回调函数,在里面处理WM_WINDOWPOSCHANGED,WM_WINDOWPOSCHANGING等消息
worldy 2013-12-24
  • 打赏
  • 举报
回复
ocx留出一个接口以获得位置改变的通知比如叫ParentPosChg,在其实现中根据参数调整popup窗口的位置 主窗口处理WM_WINDOWPOSCHANGED在该消息处理中,调用ParentPosChg
招财猫_Martin 2013-12-24
  • 打赏
  • 举报
回复
在主窗体的OnWndPosChanged函数中处理,或者自己处理WM_WINDOWPOSCHANGED事件。 当大小,位置或当SetWindowPos调用或其它窗口管理函数引导起窗口的Z-order发生改变时,MFC框架会调用。在这个函数里,你可以处理要让控件做的事情。
boylafong 2013-12-24
  • 打赏
  • 举报
回复
不知道OCX控件中的OnWindowPosChanged函数会不会触发。 如果不可以的话,可以获得控件在屏幕的位置(貌似只能获得鼠标抬起事件)

3,245

社区成员

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

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