我在线程里边使用
AfxMessageBox("!");
结果显示是显示了"!"
可是却不是在原窗体显示的那种会锁定程序其他操作的
而是还可以操作
请问我要怎么样使用这个才正确呢?CFeiYunlinKDlg* pDlg = (CAAADlg*) lpParameter;//定义窗口

解决方案 »

  1.   

    AfxMessageBoX()相当于一个阻塞的函数
    能够阻塞住当前线程
      

  2.   

    如果要阻塞主线程,可以通过发消息给主线程,或者在主线程中定义一个Public函数,在该函数中
    执行AfxMessageBox(...),再在该线程中调用主线程里的这个函数,让控制转移到主线程,在主线程中显示该消息框,就可以实现阻塞了。
      

  3.   

    AfxMessageBox会检测所在的线程的窗口句柄,作为自身的父窗口
    若所在线程的窗口句柄为NULL(一般都是啦),会以桌面窗口作为父窗口在线程中AfxMessageBox(一般)不能(干扰)禁用主窗口(其他线程窗口)可以将CWnd指针(或HWND句柄)传进线程去,
    使用CWnd的MessageBox
      

  4.   

    线程间进行通信,让主线程来AfxMessageBox
      

  5.   

    1、#define WM_AFXDLG WM_USER+148
    2、ON_MESSAGE(WM_AFXDLG,OnAfxDlg)
    3、头文件里 afx_msg void OnAfxDlg(WPARAM wParam,LPARAM lParam);
    4、void CXXXX::OnAfxDlg(WPARAM wParam,LPARAM lParam)
    {
        AfxMessageBox("显示对话框");//这里显示对话框
    }
    5、在线程序里::PostMessage(m_hwnd/*主对话框句柄*/,WM_AFXDLG,0,0);
      

  6.   

    一个线程是按着它自己函数里一句一句程序走的,当你调用了AfxMessageBox的时候弹出来的对话框如果你不点击确定按钮的话,那调用它的那个的线程就停在了AfxMessageBox这个地方了,形成阻塞。如果你要主线程被阻塞,那你就在主线程里调用AfxMessageBox