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

  • 相关阅读:
    Notepad++ 配置信息导出导入(快捷键配置导出导入等等)
    SQL 删除重复数据
    PostgreSQL Update 根据B表更新A表
    桌面应用基本创建流程
    Android shape和selector完全总结
    Android 第三方框架之Charts
    java常见五种排序方式
    Objective-c之字典精讲
    OC语言之---NSArray
    Objective-c编程之NSString精讲
  • 原文地址:https://www.cnblogs.com/919czzl/p/4114933.html
Copyright © 2011-2022 走看看