阅读:1682回复:1
VC6编程,工作者线程向主线程发消息出错的问题。
程序已经精减到不能再减的地步了,错误依然。如下:
用VC6向导生成一个MFC应用程序框架,对话框模式,无文档视图支持。 定义一个用户消息 #define WM_COMMESSAGE WM_USER+1 定义一个消息处理函数,函数中仅仅输出一个MESSAGEBOX 创建一个线程函数,线程函数中仅仅向主对话框发出一个消息::PostMessage((HWND)pParam,WM_COMMESSAGE,0,0); 在对话框的某个按钮消息处理中,启动线程。 AfxBeginThread(CThreadProc,GetSafeHwnd()); 现象是,第一次点击按钮,消息框正常弹出,按确定钮取消,表明线程启动、消息发送、以及消息处理都正常; 但第二次点击按钮后,消息框弹出正常,但是在点消息框的\"确定\"钮取消后,麻烦来了,系统报错为: unhandled exception in test.exe,0xC0000005 Access Violation 函数调用栈依次为: CWnd::AttachControlSite() CWnd::FromHandle() CWinThread::PreTranslateMessage() CWinThread::PumpMessage() CWnd::RunModalLoop() CDialog::DoModal() THREAD! CThreadApp::InitInstance(void) WinMain() 最上面的一个函数为出错的函数,很明显是主窗口(也就是对话框)的消息处理出错了。 哪里还会出错??程序已经简化的没得再减了!! |
|
|
沙发#
发布于:2009-01-12 06:10
MFC 跑这里干吗 这是KERNEL
|
|
|