MFC IME 资源泄露

iting 2005-03-23 10:53:43
MFC通过Hook置换WinProc。当建立一个MFC有用户界面的应用程序时,在建立主窗口前会建立输入法等窗口,对于第一个非输入法窗口,MFC会调用GlobalAddAtom(),在窗口释放时调用GlobalDeleteAtom() 。
对于中文系统,MFC判断窗口是否是输入法窗口时发生误判,故多调用一次GlobalAddAtom发生资源泄露和其他一系列问题。该问题被VC隐藏,表面上好像没有问题。如果验证此问题,让切换输入法到中文状态,然后在VC6中调试运行任何MFC程序,退出程序后可以看到线程返回值不为0 。
此问题代码位于wincore.cpp中。
只要在判断IME的地方改用GetClassName即可。因为输入法窗口的风格居然不是CS_IME 。

环境:Win2000 Adv Server,VC6,VC7,OfficeXP(输入法相关),均打了最新补丁。
据此,如果在不重新编译MFC库的情况下,如何解决该问题?比如修改输入法窗口的风格为CS_IME。

本贴1分以防浪费,若能提供好的方案并需要分,可以另开贴给分。
...全文
118 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
iting 2005-03-29
  • 打赏
  • 举报
回复
ui
iting 2005-03-25
  • 打赏
  • 举报
回复
UP
iting 2005-03-23
  • 打赏
  • 举报
回复
所有输入法。甚至是处于英文输入状态。
pomelowu 2005-03-23
  • 打赏
  • 举报
回复
所有的输入法吗?还是某几种输入法?

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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