出错的程序片段如下:(摘自:http://blog.youkuaiyun.com/stwstw0123/archive/2010/10/11/5934161.aspx)
错误原因:
1.在MFC框架下,TranslateMessage之前,没有调用PreTranslateMessage。
2.如果在子模块中出现此代码的话,就相当于把消息循环的处理转移到该子模块中了(虽然只是暂时的)。这时候,如果调用了PostMessage给某个窗口,而该窗口在处理这个个消息的时候,把该子模块给FreeLibrary了,该子模块的TranslateMessage函数返回后,在想继续执行就出错了(不要说不肯能哦,这也是本人在具体项目中遇到过的错误)。在vc6.0中调试,出现如下错误:
也就是一段代码释放本身所在的模块产生的错误。例如,在FreeLibrary.dll中有个导出函数如下:
在其他模块中调用,如下:
就产生同样的错误。