如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
Windows应用程序设计Windows应用编程基础根据WindowsAPI函数的功能,可以将其分为三类:①窗口管理函数。用以实现窗口的创建、移动和修改功能。②图形设备(GUI)函数。用以实现与设备无关的图形操作功能。③系统服务函数。用以实现与操作系统有关的多种功能。Windows基础要掌握Windows编程的方法,必须要了解以下内容:①事件及事件驱动的概念。②消息及其在编程中的应用。③绘图及设备环境。④对象与句柄。⑤坐标系。1.事件Windows花费大量时间等待用户的动作以便作出响应,所以这种系统也叫做事件驱动的系统。当用户按下一个键、移动鼠标或单击鼠标按钮时,计算机通知Windows系统已经发生了一个事件,以及事件的种类、发生的时间、发生的位置(如坐标值)。事件以如下三种方式产生:①通过输入设备,如键盘和鼠标。②通过屏幕上可视的对象,如菜单、工具栏按钮、滚动条和对话框上的控件。③来自Windows内部,如当一个后面的窗口显示到前面来。2.消息当Windows捕获一个事件后,它会编写一条消息,将相关信息放入一个数据结构中,然后将包含此数据结构的消息发送给需要消息的程序。Windows消息是在Windows文件中用宏定义的常数。消息常数名通常以WM开头,格式为WM_XXX,例如WM_QUIT、WM_CHAR。Windows将消息放入目标应用程序的消息队列中。在消息队列中所有消息都处于等待状态,直到应用程序准备处理它。应用程序中通常有一段代码称为消息循环,形式如下:While(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}在应用程序检索到WM_QUIT消息之前,这个循环会不断运行。当它收到WM_QUIT时,GetMessage返回false,循环停止,同时应用程序终止。当GetMessage返回一条消息后,循环将它传递给TranslateMessage函数以检测该消息是不是来自键盘。如果是来自键盘的消息,则TranslateMessage将原始键盘消息转化为WM_CHAR消息。WM_CHAR消息是专为传递有关键入字母信息设计的。TranslateMessage不处理非键盘消息。消息处理函数是用于处理特定消息的一些代码。收到消息的应用程序会做些什么,取决于应用程序本身。程序员可以编写相应的处理函数以处理消息。如果程序员没有为该消息编写处理函数,又需要把消息传递给Windows,让Windows对消息进行默认处理,Windows会提供一个称作DefWindowProc的处理函数。Windows首先调用程序员提供的处理函数,而不用Windows的默认方式。对于特定的消息有许多标准或典型的处理。例如,WM_PAINT消息(在窗口中重新绘制内容时发送)的处理函数需要重新构造显示在窗口中的图像,需要重新绘制可见的文本行、图形等等。另外,经常需要编写处理函数的一条消息是WM_COMMAND,用于处理来自菜单和按钮的命令,相应的处理函数可能会显示一个对话框、完成一次计算、选择一个选项或启动其它的操作等。3.绘图及设备环境Windows具有图形用户界面(GUI),它包括菜单、工具栏、滚动条和对话框中的按钮等元素。这些元素都是被绘制出来的。当程序第一次显示窗口时,需要第一次绘制窗口的内部或客户区。客户区是由窗口的边界、标题栏以及框架元素包围的空间。在窗口的任何部分被破坏或无效时,需要重新绘制它们。例如,当其它窗口覆盖在应用程序的窗口上,然后又离开。Windows不会保存窗口中的图像,由于它不能自己重新绘制所有的部分,因此程序需要重新绘制窗口的内容。在要求重新绘制时,一般由Windows负责绘制窗口的框架,而程序员负责绘制客户区。与客户区对应有一个Windows对象称为设备环境(DeviceContext,通常缩写为DC)。4.对象与句柄对设备环境的访问是通过Windows返回的句柄进行的。用于描述设备环境句柄的变量类型是HDC。事实上,Windows提供了许多种类型的句柄(窗口、字体等)。每种对象都有一个相应的句柄类型,例如HWND和HFONT。常见的Windows对象的句柄如下:Windows对象相关句柄设备环境HDC窗口HWND菜单HMENU光标HCURSOR画笔HPEN画刷HBRUSH字体HFONT图标HICON位图HBITMAP调色板HPALETTE文件HFILE区域HRGN加速键表HACCELPolyg