线程中调用PostMessage()出现内存访问错误
为什么在线程中调用AfxGetMainWnd()->PostMessage(WM_DISPLAY,0,0);会出现内存访问错误?
解决办法如下:
在创建线程的时候,用AfxGetMainWnd()->GetSafeHwnd()得到主窗口的HWND值,并作为创建线程的参数,传给线程。在线程中,使用这个HWND,比如:
主程序中:
[php]
HWND hMainWnd = AfxGetMainWnd()->GetSafeHwnd();
AfxBeginThread(YourThreadFunc, (LPVOID)hMainWnd);
[/php]
线程函数:
[php]
UINT YourThreadFunc(LPVOID pParam)
{
……
HWND hMainWnd = (HWND)pParam;
::PostMessage(hMainWnd, WM_DISPLAY,0,0);
……
}
[/php]