我正在做一个基于对话框的程序,准备用两个线程,一个负责采集数据,另一个在对话框上画波形,采集数据的实现了,画波形这个我派生了一个WinThread类,然后在类的Initstance里想给主窗口设定个timer,于是写:
CTESTDlg *pDlg = new CTESTDlg;
pDlg->UpdateData();
但程序走到pDlg->UpdateData();这句就出错了,
查出在wincore.cpp中因为有判断语句
ASSERT(::IsWindow(m_hWnd));
我于是又该成:
CTESTDlg *pDlg = new CTESTDlg;
m_pMainWnd = pDlg
pDlg->UpdateData();
还是不对!!!
请大家帮忙改改!

解决方案 »

  1.   

    CTESTDlg *pDlg = new CTESTDlg;
    只new出来,但是还没有窗口,需要把它对应的窗口显示出来才行,对于模式对话框可以用DoModal(),非模式对话框可以用ShowWindow(TRUE),UpdateWindow()等函数。
      

  2.   

    我是想在对话框上用一个按钮启动这个线程,这个线程负责周期性的在对话框上画波形图,不能新建窗口.
    ShowWindow是不是新建了窗口阿?
    还是我的思路不对??
      

  3.   

    ShowWindow是不是新建了窗口阿?
    不一定,有的时候,对一些子控件照样可以进行显示也隐藏,如BUTTON我是想在对话框上用一个按钮启动这个线程,这个线程负责周期性的在对话框上画波形图,
    思路肯定是可行的pDlg->UpdateData();直接更新有何用呢,绘图那些代码呢,不在响应这一按键消息这里吗?
      

  4.   

    最好不要在线程中操作MFC对象等,可以发送消息出来,让主线程操作
      

  5.   

    最好不要在线程中操作MFC对象等,可以发送消息出来,让主线程操作=============================
    哦,收到
      

  6.   

    CTESTDlg *pDlg = new CTESTDlg;
    pDlg->Create(IDD_DIALOG1, NULL);