现在的位置: 首页 > 综合 > 正文

2013年3月12日MFC学习笔记

2013年10月03日 ⁄ 综合 ⁄ 共 1746字 ⁄ 字号 评论关闭

1.最近测试算是告一段落吧,重新开始研究VC++,看孙先生的视频,做下笔记;记在纸上的怕丢掉。。。才看到第一个

2.作为一个合格的程序员,在写代码时有些细节是不可忽略的——比如命名

比如微软的API,他的很多函数你可以单凭函数名字就能大概了解函数的作用,还有变量命名以及其他一些宏定义或类型定义。

所以,在编写程序的过程中,合理地命名、优化的使用类似typedef、define等定义,让code一目了然。

当然,这少不了要有一些英文功底。平时多看看MSDN,多用用有道。唉,自从大二上完了英语课、过了六级,英语就已经离我越来越远了。重拾~

“变量最好的定义,是可以从定义中区分变量的用途”——包括变量、函数、宏。

3.消息队列:先进先出的缓冲区。

在MFC中,基本上是由窗口和消息组成。程序收到消息,即来自用户的触发,比如按键、单击或双击,对窗口进行某种操作。

堆栈是先进后出——有次跟同事讨论我还狡辩说也是先进先出o(╯□╰)o赏我一仗红吧。。。

4.Windows程序的入口函数——WinMain函数。

这跟C语言的入口函数类似,Main()。区别在于名称不同、参数不同。这是一个很重要的问题需要弄懂。

说直白点儿,入口函数其实也是函数,区别在于,入口函数只能由操作系统来调用;即被规定为一个与操作系统沟通的函数,可称为Interface接口。

Main函数百科里有一段例程,VC不可编译,涉及到C的库函数,不兼容。

花了半天,仔细研究了百科里的文字介绍。以下是我的理解:

Main函数,也是函数,在调用的时候也需要传参数进去,即argc,argv两个变量。那么系统在调用主函数时会传什么参数进去呢?是命令行。一条完整的命令行包含了命令和其他参数。这里命令即是.c文件通过编译链接生成的.exe文件名。argc表示命令行中命令和其他参数的个数,而argv数组指针又是由argc决定。(啊呀,给跪了,百科上的图打不开!!!)数组指针分别指向命令行中的各个参数。然后调用运行。具体系统的code是如何组装实现调用的,暂且没有水平去考虑。

理解了C语言中的主函数之后,那么MFC中的WinMain函数也就很好理解了。我们通过MSDN查看主函数及其相关参数。

上图是MSDN中关于WinMain函数的解释。WinMain函数是系统在调用基于Win32应用程序时的入口点。(不好意思,英文退化太厉害了,翻译的不通了。不过技术类的翻译,符合中文标准即可,意译大点也没关系。)

WinMain函数有四个参数,系统在调用时即传递这四个参数。

第一个是当前实例句柄(原谅我句柄只是一知半解);

第二个是先前的实例句柄(第一次打开的话,先前实例就为空了。因为没有更早的实例了。);

第三个是命令行。根据注释可以看出这个命令行跟C语言主函数的参数是类似的;(LP开头的类型基本可以判定是long point长指针)

第四个参数指的是光标的位置(这个参数我刚刚又大悟了,之前孙先生说指的是光标所在的位置,我还以为是程序启动后鼠标所在的位置;现在想来是大错了。)。

看MSDN关于第四个参数的解释:Specifies how the window is to be shown.直译过来:指定窗口将如何显示。

再看下面几种参数值的意思:

SW_HIDE:Hides the window and activates another window.隐藏窗口并激活另一个窗口

SW_SHOW:Activates the window and displays in its current size and position.激活窗口并以当前大小和位置显示。

这样可以大致看出,这个参数是用来干什么的。关键字“Show”!即程序是如何显示的,打开时以什么样的方式显示。不同的值代表不同的方式。自己体会。。。错了再改。

好了,主函数先告一段落(这句是不是前面用过了??又失忆了。)。

5.函数名代表了函数的首地址,因此可以将函数名直接赋值给指针。

6.快下班了,加班。加班我一般不干正事儿,怕忘了发布,就先发了。

第一个视频快看完了,134分钟,看了一天,还剩半个小时的。基本对Windows程序的运行原理和逻辑概括有了大致的了解。至少再看别人的MFC代码也不至于一头雾水、无从下手了。

7.That's all。Thanks。

抱歉!评论已关闭.