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分以防浪费,若能提供好的方案并需要分,可以另开贴给分。
对于中文系统,MFC判断窗口是否是输入法窗口时发生误判,故多调用一次GlobalAddAtom发生资源泄露和其他一系列问题。该问题被VC隐藏,表面上好像没有问题。如果验证此问题,让切换输入法到中文状态,然后在VC6中调试运行任何MFC程序,退出程序后可以看到线程返回值不为0 。
此问题代码位于wincore.cpp中。
只要在判断IME的地方改用GetClassName即可。因为输入法窗口的风格居然不是CS_IME 。
环境:Win2000 Adv Server,VC6,VC7,OfficeXP(输入法相关),均打了最新补丁。
据此,如果在不重新编译MFC库的情况下,如何解决该问题?比如修改输入法窗口的风格为CS_IME。
本贴1分以防浪费,若能提供好的方案并需要分,可以另开贴给分。
...全文
相关推荐
IME编程例子
本文介绍了基于MFC框架的IME应用程序设计,涉及CIMEApp类及其初始化过程。代码实现了输入法编辑器的相关功能,包括语言设置、转换模式、字体选择及多语言支持。同时包含对话框界面和消息处理机制,用于
IME输入法VC编程的详细解说
用户界面设计:IME通常需要有友好的用户界面,如设置选项、快捷键等。这可以使用MFC或WinAPI进行开发。6.
文本框(win32不用MFC)
相比于使用MFC(Microsoft Foundation Classes)库,直接使用Win32 API可以提供更底层的控制和更高的性能。
MFC EditBox 编辑框禁止输入中文
IsChineseChar(TCHAR ch){ return (ch >= 0x4E00 && ch <= 0x9FFF);}```当然,这只是基础版本的实现,实际应用中可能需要考虑更多的细节,比如处理IME
IME相关软件编写软件开发模块大全
stdafx.cpp是MFC应用程序中的预编译头文件,主要包含常用系统和项目特定的头文件,防止重复包含,并定义了CIMEApp类及其初始化实例。该文件通过条件编译和消息映射宏,展示了如何在MFC应用程


界面
