UIThread

功能如下:点击Create则新创建一个窗口

一 . 资源中添加对话框,右键添加类MyDlg

双击初始对话框中的按钮,实现按钮功能:点击则创建一个对话框

    CMyDialog* pDialog  = new CMyDialog;
    pDialog->Create(IDD_DIALOG1);
    pDialog->ShowWindow(SW_SHOW);//非模态,可以移动后面

但这种方式,创建出来的对话框,一个崩掉,就全体瘫痪,因为是单线程

二 . 在类视图新建一个类MyThread,继承自CWinThread

CWinApp类就是继承自CWinThread,pMainWnd指针(线程主窗口)指向对话框,将对话框和主线程连接起来

仿照主窗口和主线程,写一个我们自己的UIThread

在CWinThread类中

BOOL CMyThread::InitInstance()
{
    CMyDlg dlg;
    m_pMainWnd = &dlg;
    INT_PTR nResponse = dlg.DoModal();
    return TRUE;
}

创建用户界面线程:AfxBeginThread()//窗口没了,线程就没了,

          相当于创建了一个线程,在线程执行的函数中,创建了一个窗口,比如:MyDlg dlg;   dlg.DoModal();

进程优先级:-30 ~ 30

三 . 当点击窗口右上角的关闭标识的时候,1>WM_CLOSE 2>WM_DESTROY 3>WM_QIUT

对话框关闭,EndDialog()

Dialog继承自Cwnd

PostThreadMessage:向线程发消息

用户界面线程(UI线程)与工作者线程的区别:工作者线程没有消息对列。

????SendMessage和PostMessage

????窗口和线程  ,AfxBeginThread()进入

原文地址:https://www.cnblogs.com/Lune-Qiu/p/8401609.html