zoukankan      html  css  js  c++  java
  • 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()进入

  • 相关阅读:
    vue-element-admin
    一些问题
    前端面试题(2)
    乱炖
    node与mongodb、mongoose
    NodeJs中的模块
    NodeJs基础
    论文阅读——Visual inertial odometry using coupled nonlinear optimization
    C++多线程学习之(一)——并发与多线程
    ECMAScript6的lambda(arrow function)的this绑定导致call/apply失效
  • 原文地址:https://www.cnblogs.com/Lune-Qiu/p/8401609.html
Copyright © 2011-2022 走看看