刚学MFC,只懂点点皮毛,望不吝赐教!比如:我在主窗口单击了Button1,调用了函数:
void Printer::prtCurrent()  {  //print the PID[current]
               /********
               。
               ************/
extern COS3Dlg *maindlg;  //Dialog Based MFC 程序的主窗口
maindlg->SendMessage(WM_CLOSE);  //这里出现异常,会弹出“该内存不能为read错误”并强行结束程序!
}请问该怎么办?注:
其实我是想让 Printer::prtCurrent()  改变主窗口中的一个文本控件的内容,试了:
maindlg->m_edit="XXXXX";
然后UpdateData……
不行啊,依然出错。敬请各位高手赐教!!!

解决方案 »

  1.   

    可以向主线程的主窗口发送消息的.但代码不是这样写的.你应该将窗口的HWND作为参数传递给工作者线程,这样发送消息就可以了SendMessage(hWndMain,message,wParam,lParam);
      

  2.   

    你打开线程的时候,就可以把主窗口的指针,传过去比如
    pMyThread = AfxBeginThread(MyThread, this);//把this指针传过去UINT CXXXDlg::MyThread(LPVOID pParam)
    {
         CXXXDlg *pDlg = (CXXXDlg *)pParam;
         return 0;
    }
      

  3.   

    怎么把线程中的string更新到主窗口中的文本控件(比如edit)中呢?
    在主窗口类中+个函数:
    void f(CString str) {
      m_edit = str;
     UpdateData(false);
    }
    在线程中调用它吗???