MFC第一课——MFC简介

来源:互联网 发布:程序员接活网站 编辑:程序博客网 时间:2024/06/09 16:14

最近开始研究MFC,教材是《深入浅出MFC》(第二版),现记录下学习过程中的心得体会,算是对自己知识的总结,也希望能给他人以帮助~

 

第一课

 

1.缩略词解释

MFC:这是一个建立在Windows API之上的C++类库

API:应用程序接口

SDK:软件开发工具(现凡以windows raw API撰写的程序我们通常也称为SDK程序)

OWL:这也是一个具备Application Framework架势的C++类库

 

2.知识点

   1)"动态链接"是在执行时期才链上的。(.exe、.dll、.fon、.mod、.drv、.ocx都是所谓的动态链接函数库)

   2)对应用程序获得的各种"输入"进行分类,可以分为①由硬件装置产生的消息,放在系统队列中;②由windows系统或其它windows程序传送过来的消息,放在程序队列中。

   3)main是C程序的进入点,WinMain则是windows程序的进入点。

      WinMain的调用流程:shell侦测到欲执行一个Windows程序->调用加载器->调用C startup code->调用WinMain->开始执行程序

      (WinMain的四个参数由操作系统传递进来)

   4)窗口的注册与创建:先是利用API函数RegisterClass(注册窗口类)设定属性,再利用API函数CreateWindow创建窗口(只创建,不显示,ShowWindow才显示窗口)。

      RegisterClass被封装在InitApplication函数之中,该函数只用第一个实例才会进入,是否是第一实例由WinMain的参数hPrevInstance判断;CreateWindow封装在InitInstance函数之中,该函数任何实例都会进入。

   5)消息循环

      while(GetMessage(&msg,...)){

          TranslateMessage(&msg);  //转换键盘消息

          DispatchMessage(&msg);  //分派消息

      }

   6)call back函数是指程序中被Windows系统调用的函数

   7)窗口函数:无论什么消息,都必须被处理,所以switch/case指令中default:处必须调用DefWindowProc。这是Windows内部默认的消息处理函数。

   8)消息映射Message Map

      struct MSGMAD_ENTRY _messageEntries[]  //消息与处理例程的对照表格

      struct MSGMAD_ENTRY _commandEntries[]  //Command-ID与处理例程之对照表格

   9)对话框

      两类:①使父窗口无效,直到对话框结束,称为modal②与父窗口共同运行,称为modeless

      为做出对话框,程序员必须准备两样东西:①对话框模板(dialog template)②对话框函数(dialog procedure)

      Modal对话框的激活与结束,靠的是DialogBox和EndDialog两个API函数。

   10)模块定义文件.DEF

      将模块名称、程序段和数据段的内存特性、模块堆(heap)大小、堆栈(stack)大小、所有call back函数名称等等登记下来 。

原创粉丝点击