关于钩子和多线程中不能使用UpadateData的问题的解决
今天项目遇到一个关于dll中钩子里调用含有updatedata()的问题,总是在updatedata()出报assert的错误。经过在网上查找资料解决了这个问题,可能很多人都已经知道解决方法,我在这里写出来一方面是想和大家分享,另一方面也是便于自己记忆和翻阅。 解决方案: UpdateData(FALSE)语句用SendMessage(WM_UPDATEDATA, FALSE)替代即可. abc.h文件中: #define WM_UPDATEDATA WM_USER + 5 LRESULT OnUpdateData(WPARAM wParam, LPARAM lParam); abc.cpp文件中: //函数映射 : ON_MESSAGE(WM_UPDATEDATA, OnUpdateData) //定义新函数: LRESULT CProtectPage::OnUpdateData(WPARAM wParam, LPARAM lParam) { UpdateData(wParam); return 0; } //传消息给窗口: SendMessage(WM_UPDATEDATA, FALSE) 原文:http://blog.sina.com.cn/s/blog_4c73004f01000a72.html 来源: oschina 链接: https://my.oschina.net