iting 2005年03月23日
MFC IME 资源泄露
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分以防浪费,若能提供好的方案并需要分,可以另开贴给分。
...全文
88 点赞 收藏 4
写回复
4 条回复

还没有回复,快来抢沙发~

发动态
发帖子
界面
创建于2007-09-28

7970

社区成员

11.5w+

社区内容

VC/MFC 界面
社区公告
暂无公告