线程中调用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]

Comments are closed.