描述:
VC 输入中文后,在程序关闭时发生堆栈错误.不知何故.如果是英文.就没有问题.
是这样的.我建了一个工程. 接收了 WM_IME_CHAR, 和 WM_CHAR 事件...
在事件函数中只有一句代码.就是 return true; 中间没有处理过数据.没有
申明变量.什么都没有.下断点后.输入中文确实来到事件处理函数.
但在程序关闭时.出了一个.
"未处理的用户中断 "
中断在了. atlcore.h 文件中的
HRESULT Term() throw()
{
DeleteCriticalSection(&m_sec); // 这行
return S_OK;
}
输出窗口是这样的: 好像是堆栈被提前饰放了.
线程 'Win32 线程 ' (0xf48) 已退出,返回值为 1 (0x1)。
HEAP[TTS.exe]: Invalid Address specified to RtlFreeHeap( 01290000, 01208558 )
TTS.exe 中的 0x7c94a3e1 处未处理的异常: 用户断点 。
而我的事件处理函数是这样的:(用了 WTL,用MFC,WIN32 也一样)
LRESULT OnIme(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL & bHandled)
{
// 输入中文的时候.我就算什么数据也不处理.也不保存...直接返回了..也会发生刚才的
// 用户中断...不知道为什么.
return true;
}
我的环境是:
2003 Version 7.1.3091
这里有一个全部过程录像....可惜看不清.如何可以请留下邮件.我将工程发过去.
http://www.56.com/u60/v_MjM1MzQ4NTc.html