SDK & MFC & 消息分类小结

先总体介绍一下SDK与MFC的联系吧

SDK 就是Software Development Kit 软件开发包
MFC 就是Microsoft Foundation Classes 微软函数类库

MFC是对API函数的封装,也算是vc里的SDK


用VC编写Windows程序有两种:1. Windwos c方式(SDK),2.C++方式:即对SDK函数进行包装,如VC的MFC,。

SDK编程就是直接调用Windows的API进行编程,平时人们常说"用SDK写程序"就是指用Windows的API函数来写程序,API由上千个API函数组成。而MFC是API的封闭,结合面向对象程序设计的继承性和多态性组成一个个的"类",共由一百多个类组成。尽管MFC比SDK方便,但要深入VC,直接去学MFC却是不明智的选择。只有在熟悉了MFC的运行机制的情况下,才有可能深入下去。所以学VC最好是先学用SDK编写程序,在此期间深入掌握Windows操作系统的工作原理和各API函数的应用,然后再深入MFC.SDK是基于C语言的,而MFC是基于C++的,这是最根本的区别。

MFC主要封装的是界面、文件、WinInet和线程等函数。MFC除了封装API,最重要的是它的体系结构,它所使用的Doc/View结构是SDK中没有的,这种架构是比较特殊的。尽管Doc/View结构不是微软的发明,但它是MFC的特色。微软开发Windows时使用的是C语言,所以最初设计SDK时并没有考虑C++。

(参考http://blog.csdn.net/tjhgltt/archive/2008/06/17/2556550.aspx)

————————————————————————————————————————

下面具体介绍一下两者与windows消息的内容。


windows应用程序消息可以分为三类:窗口消息(标准消息),命令消息,通知消息。

=======SDK======

窗口消息:WM_CREATE,WM_CLOSE,WM_DESTROY,WM_PAINT,WM_TIMER,

  WM_LBUTTONDOWN(鼠标操作),WM_KEYDOWN(键盘),WM_SYSKEYDOWN,WM_CHAR

命令消息:WM_COMMAND 主要是用来处理菜单,加速键,工具按钮消息;

通知消息:WM_NOTIFY,从命令消息中单独抽出处理控件产生产生的消息。

=======MFC======

与SDK相对应,消息分类仍是这三种,但是形式变化:

窗口消息:ON_WM_*,比如ON_WM_CREATE;

命令消息:ON_COMMAND,ON_COMMAND_RANGE

通知消息:ON_NOTIFY,ON_NOTIFY_REFLECT。类似一些简单的控件消息,Button->BN_CLICKED

________________________________________

我们先假设新建工程文件名字为Test:

基于对话框工程文件,生成两个:

  1. CTestApp--->CWinApp--->CWinThread--->CCmdTarget
  2. CTestDlg--->CDialog--->CWnd

基于SDI工程,生成4个文件:

  1. CTestApp->CWinApp(继承)  ps:此文件封装WinMainhan函数
  2. CMainFrame--->CFrameWnd--->CWnd--->CCmdTarget
  3. CTestView--->CView--->CWnd
  4. CTestDoc--->CDocunment

CCmdTarget is the base class for the Microsoft Foundation Class Library message-map architecture. (详见MSDN)简单来说,是处理MFC库消息的基类,可以处理命令消息和通知消息。

CWnd继承自CCmdTarget,可以处理更多的消息,即窗口消息。

(了解清楚这些之后才知道如何读写SDK与MFC程序,明白相应消息处理函数应该写在哪个文件什么位置)

——————————————————————————————

最后简单介绍一下命令消息与子窗口控件消息关系,

1.子窗口控件向父窗口发送WM_COMMAND消息进行通信:

WM_COMMAD

wParam——lowword: 控件ID

             ——highword: 通知码(一些附加信息)

lParam  ——句柄

2.应用程序如果想象子窗口发送消息,可使用SendMessage(SDK方法)




你可能感兴趣的:(mfc,sdk)