万水千山只等闲

常用链接

统计

最新评论

第1章 Windows程序内部运行机制

编写标准C程序经常调用的C库函数是由编译器厂商提供的。Windows平台下也有类似的函数可供调用,不同的是,这些函数是由Windows操作系统本身提供的。

Windows操作系统提供了各种各样的函数,以方便我们开发Windows应用程序,这些函数是Windows操作系统提供给应用程序编程的接口,简称为API函数。所有主要的Windows函数都在Windows.h头文件中进行了声明。

MSDN是微软向开发人员提供的一套帮助系统,其中包含大量的开发文档、技术文章和示例代码。

Win32 SDKWindows 32位平台下的软件开发包,包括了API函数、帮助文档、微软提供的一些辅助开发工具。

窗口是Windows应用程序中的一个非常重要的元素,一个Windows应用程序至少要有一个窗口。

在消息的结构体中有相关窗口的句柄,消息类型,消息参数,时间和鼠标位置等信息。

每一个Windows应用程序开始执行后,系统都会为该程序创建一个消息队列,这个消息队列用来存放该程序创建的窗口的消息。

Windows程序中的消息可以分为“进队消息”和“不进队消息”。

在函数调用过程中,会使用栈。_stdcall_cdecl是两种不同的函数调用约定,定义了函数参数入栈的顺序,由调用函数还是被调用函数将参数弹出栈,以及产生函数修饰名的方法。

Windows应用程序的入口是WinMain函数,由插入到可执行文件中的启动代码调用。

WinMain函数的参数指定了该程序当前运行的实例句柄,命令行参数,以及窗口应该如何显示。

设计窗体类就是指定窗口的特征,包括窗口的样式,窗口过程函数,

窗口过程函数被调用的过程如下:

1)         在设计窗口类的时候,将窗口过程函数的地址赋值给lpfnWWndProc成员变量;

2)         调用RegsiterClass(&wndclass)注册窗口类,那么系统就有了我们所编写的窗口过程函数的地址;

3)         当应用程序接收到某一窗口的消息时,调用DispatchMessage(&msg)将消息回传给系统,系统则利用先前注册窗口类时得到的函数指针,调用窗口过程函数对消息进行处理。

Win32API函数都遵循_stdcall调用约定。

VC++开发环境中,默认的编译选项是_cdecl

Windows程序中,回调函数必须遵循_stdcall调用约定。

要在窗口中输出文字或者显示图形,需要用到设备描述表DCDC是一个包含设备信息的结构体,在Windows平台下,所有的图形操作都是利用DC来完成的。

当窗口从无到有、改变尺寸、最小化后恢复、被其他窗口遮盖后再显示时,窗口的客户区都将变为无效。当窗口客户区的一部分或者全部变为“无效”时,系统会发送WM_PAINT消息,通知应用程序重新绘制窗口。

当窗口刚创建的时候,整个客户区都是无效的。因为这个时候程序还没有在窗口上绘制任何东西,当调用UpdateWindow函数时,会发送WM_PAINT消息给窗口过程,对窗口进行刷新。

posted on 2012-06-05 09:32 Winnie 阅读(371) 评论(0)  编辑 收藏 引用 所属分类: VC++深入详解


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理