VC6,只有控件指针,如何动态添加事件?

kenshu 2015-03-19 03:25:27
VC6,只有控件指针,如何动态添加事件?

我知道这件事问得很奇葩。
所以需要解释一下原因。

根据最初的约定,对方的EXE或DLL(任意其它语言写的,反正就不 一定是VC)会传一个 CStatic * 过来给我的DLL,跟着我就进行处理。

但现在发现内存泄露了.(比如运行了几十天,经过多次调用,内存会飙上去)

现在已经发现的其中的一个原因是

https://support.microsoft.com/zh-cn/kb/819635/zh-cn

GetDC/ReleaseDC 出现的内存内存泄露.

======================================

所以,我需要改为

在最初时,GetDC

在另一个事件中,比如CStatic::OnDestroy 中 ReleaseDC. (那我就只泄露一次,而不是几百万次)

所以,我需要响应OnDestroy事件,在指定事件中ReleaseDC.

======================================

但因为事先没有约定要在OnDestroy调用我的函数,并且用户的程序,因为接口是几年前约定的,有些人的代码丢了,所以没办法在他那里加事件。

所以,我想问的是,我只有控件的指针,如何动态地在我的DLL中,添加该控件的事件。
...全文
246 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2015-03-19
  • 打赏
  • 举报
回复
https://support.microsoft.com/zh-cn/kb/819635/zh-cn 已经说明了 在GetDC 和 ReleaseDC 中添加绘制代码就不会有泄漏啊 可以 试试写一个新的WindowProc , SetWindowLongPtr GWL_WNDPROC
oyljerry 2015-03-19
  • 打赏
  • 举报
回复
可以在你代码中需要的地方ReleaseDC
kenshu 2015-03-19
  • 打赏
  • 举报
回复
引用 3 楼 oyljerry 的回复:
可以在你代码中需要的地方ReleaseDC
引用 4 楼 zgl7903 的回复:
https://support.microsoft.com/zh-cn/kb/819635/zh-cn 已经说明了 在GetDC 和 ReleaseDC 中添加绘制代码就不会有泄漏啊 可以 试试写一个新的WindowProc , SetWindowLongPtr GWL_WNDPROC
谢谢你们的回复。
kenshu 2015-03-19
  • 打赏
  • 举报
回复
引用 2 楼 u011391040 的回复:
可以通过子类化目标窗口来处理它的事件。 http://www.cnblogs.com/wjl4934/archive/2012/07/16/2593173.html
好像正是我需要我的,我试试,谢谢!
kenshu 2015-03-19
  • 打赏
  • 举报
回复
引用 1 楼 worldy 的回复:
在你的dll中按照那垃圾的MFC说的 直接使用 ::GetDC ::ReleaseDC 不行吗?在OnDestroy的事件在DLL中应该捕捉不到吧?
其实上面举的,只是其中的一个原因。其它的原因,比如改进的功能中,可能需要NEW一些东西,所以需要另外的事件去DELETE这些NEW出来的东西。但之前的接口中没有约定。 问问题而说明原因,我认为是一种比较礼貌的方式。但这件事说起来太麻烦,所以就只说了其中的一部份。 谢谢!
lougd 2015-03-19
  • 打赏
  • 举报
回复
可以通过子类化目标窗口来处理它的事件。 http://www.cnblogs.com/wjl4934/archive/2012/07/16/2593173.html
worldy 2015-03-19
  • 打赏
  • 举报
回复
在你的dll中按照那垃圾的MFC说的 直接使用 ::GetDC ::ReleaseDC 不行吗?在OnDestroy的事件在DLL中应该捕捉不到吧?

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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