我写了一个基于对话框的程序。点对话框上的一个按钮后,会产生一个新线程做一些工作,但是中间要在对话框上显示一些文字,应该怎么做呢?我是创建线程的时候把this指针当作线程函数的参数传过去,然后在线程里调用对话框里的一个函数显示文字。可是调试时候给静态文本赋了值,一到调用UpdateData()时候就出错了(出在wincore.cpp line 894)。向高手们求助,谢谢啦!

解决方案 »

  1.   

    向主窗口发消息,SendMessage(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
    其中 wParam和lParam是一个指针,可以用来保存数据的地址
      

  2.   

    我也想过发送消息,可是应该发送什么消息啊,windows有没有专门给用户用的消息呢?
    害怕在窗口类里加了消息处理函数后,会错误处理专用的消息。
      

  3.   

    不会,
    定义消息的如下:
    在stdafx.h中写如下语句:
    #define WM_MY_MSG WM_USER+101 //WM_MY_MSG就是你自己定义的消息,其他的看MSDN在你程序(如基于对话框程序的MCyDlg中)的头文件CMyDlg.h中写如下函数:
    void OnMyRecv(WPARAM wParam,LPARAM lParam);然后在CMyDlg.cpp文件中写如下代码:添加消息映射
    BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
    ...
    ON_MESSAGE(WM_MY_MSG,OnMyRecv)
    ...
    END_MESSAGE_MAP()添加处理函数
    void CMyDlg::OnMyRect(WPARAM wParam,LPARAM lParam)
    {
       DataStruct *data=(DataStruct*)lParam;//这里是从线程里面发过来的数据 
      //你的处理代码,处理数据
      UpdateData();
    }
    就可以了,其他的请查看MSDN