线程中调用PostMessage()出现内存访问错误

为什么在线程中调用AfxGetMainWnd()->PostMessage(WM_DISPLAY,0,0);会出现内存访问错误?

解决办法如下:

在创建线程的时候,用AfxGetMainWnd()->GetSafeHwnd()得到主窗口的HWND值,并作为创建线程的参数,传给线程。在线程中,使用这个HWND,比如:
主程序中:

 HWND hMainWnd = AfxGetMainWnd()->GetSafeHwnd();
 AfxBeginThread(YourThreadFunc, (LPVOID)hMainWnd);

线程函数:

 UINT YourThreadFunc(LPVOID pParam)
 {
 ......
 HWND hMainWnd = (HWND)pParam;
 ::PostMessage(hMainWnd, WM_DISPLAY,0,0);
 ......
 }

Comments are closed.