• windows程序设计(三)


    MFC所有封装类一共200多个,但在MFC的内部技术不只是简单的封装

    MFC的内部总共有六大关键技术,架构起了整个MFC的开发平台

    一.MFC的六大关键技术包括:

    a).MFC程序的初始化过程

    b).消息映射机制

    c).运行时类型识别(RTTI)

    d).动态创建

    e).永久保存

    f).消息传递

    六大关键技术的目的是为了提高开发效率,开发者只要在局部做简单的修改,即可处理大部分窗口事物

    二.SendMessage和PostMessage函数的功能

    a).能够向指定的窗口内发送窗口消息。既可以是本进程内窗口也可以是其他进程的

    b).既可以发送系统内部消息,消息编号的范围是:1-WM_USER-1)

         例如:WM_LBUTTONDOWN, WM_MOUSEMOVE等

    c).也可以发送非系统消息(开发者定义的消息),范围号是:WM_USER-0x7FFF

    d).在MFC下非系统消息映射,使用宏定义时ON_MESSAGE

    三.SendMessage和PostMessage函数的区别是:

    a).SendMessage是阻塞型函数,PostMessage函数是非阻塞型函数

         SendMessage用于调用指定窗口的内部程序,直到窗口程序处理完成以后再返回

         PostMessage是将一个消息寄送到一个窗口内的消息队列后就立即返回

    b).两个函数的返回值不同

        LRESUL SendMessage(HWND hwnd,UINT Msg,WPARAM wParam,LPARAM lParam);

        BOOL PostMessage(HWND hwnd,UINT Msg,WPARAM wParam,LPARAM lParam);

        SendMessage的返回值是消息处理结果产生的数值,依赖于消息处理函数

        PostMessage的返回值是返送成功或失败,一般很少失败除非窗口不存在

    c).跨线程或跨进程发送消息,推荐使用PostMessage函数

    模式对话框与非模式对话框

    1.模式对话框弹出时,父窗口不能操作

    2.非模式对话框的弹出是独立的,可以操作父对话框,在windows下的状态栏可以看到弹出窗口是个独立的窗口,这点需要用GetDesktopWindow()函数

       非模式对话框必须在堆内申请对象,或在成员变量内申请对象

    3.对于关闭窗口函数OnOK()、OnSysCommand()、OnClose()、OnCancel()、OnDestroy()

       OnSysCommand()函数管理所有系统菜单和系统按钮消息 

       OnClose(),WM_CLOSE消息是WM_SYSCOMMAND的一个专用关闭的分支,而OnClose()里面又调用OnCancel()函数,这个函数继承了EndDialog()函数

      OnSysCommand()->OnClose()->OnCancel();

       CDialog::OnOK首先调用UpdateData(TRUE)将数据传给对话框成员变量,然后调用CDialog::EndDialog关闭对话框; 

       CDialog::OnCancel只调用CDialog::EndDialog关闭对话框;

      参考:

     点“确定”、“取消”时的关闭路由为 
    OnOK()或OnCancel() ---> EndDialog() ---> DestroyWindow() ---> OnDestroy() ---> PostNcDestroy() 
    点“关闭”标题栏按钮的关闭路由为 
    OnClose()---> DestroyWindow() ---> OnDestroy() ---> PostNcDestroy()

  • 相关阅读:
    03-高级选择器,属性选择器,伪类选择器
    02-css的选择器
    01- css引入方式
    HTML(三)
    HTML(二)
    Sublime text3 插件ColorPicker(调色板)不能使用快捷键的解决方法
    Sublime Text 3 快捷键汇总
    Sublime Text 3下载及常用插件安装
    box-shadow参数以及使用
    jquery.nav.js定位导航滚动插件
  • 原文地址:https://www.cnblogs.com/919czzl/p/4114933.html
Copyright © 2020-2023  润新知