GUI 编程第01章.ppt_第1页
GUI 编程第01章.ppt_第2页
GUI 编程第01章.ppt_第3页
GUI 编程第01章.ppt_第4页
GUI 编程第01章.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MFC Windows 应用程序设计,第1章 Windows 应用程序基础知识,本章主要内容:,Windows应用程序的基本概念 Windows应用程序中的数据类型 Windows应用程序的消息机制 Windows操作系统与Windows应用程序的主函数、窗口函数之间的关系 使用函数对Windows应用程序进行封装,Windows应用程序使用的界面是由各种图形元素组成的图形界面。 各个图形元素具有不同的功能。 应用程序的用户主要是通过键盘和鼠标对应用程序界面上的图形元素进行操作来与Windows应用程序进行交互的。,1.1 Windows应用程序 的基本概念,Windows应用程序,操作系统,

2、计算机硬件之间的相互关系,操作系统所能够完成的每一个特殊功能通常都有一个函数与其对应,也就是说,操作系统把它所能够完成的功能以函数的形式提供给应用程序使用,应用程序对这些函数的调用就叫做系统调用,这些函数的集合就是Windows操作系统提供给应用程序编程的接口(Application Programming Interface),简称Windows API。 早期的Windows应用程序设计人员要使用这些API函数来编写程序。,1.1 Windows应用程序 的基本概念,在Windows应用程序中,存在着许多与DOS应用程序不同的复杂对象,例如窗口、按钮、滚动条等等。 Windows把为各种复

3、杂对象所定义的标识叫做句柄。句柄(HANDLE),资源的标识。,1.1 Windows应用程序 的基本概念,1.1 Windows应用程序 的基本概念,Windows应用程序中的数据量非常大,为了提高应用程序的可读性,Windows给许多基本数据类型定义了别名,例如: typedef unsigned long DWORD; typedef int BOOL; typedef unsigned char BYTE; typedef unsigned short WORD; typedef unsigned int WPARAM; typedef long LPARAM;,1.1 Windows

4、应用程序 的基本概念,从变量的类型区分 变量的用途,Windows应用程序还使用了一些结构类型的数据,例如: typedefstructtag_POINT LONG x,y; POINT; 描述了一个点的位置。,1.1 Windows应用程序 的基本概念,1.1 Windows应用程序 的基本概念,事件与消息 好比有个蚊子叮了我们一口,我们的神经末梢(相当于操作系统)马上感知到这一事件,并传递给了我们的大脑(相当于应用程序),我们的大脑最终决定如何对这一事件作出反应,如将蚊子赶走,或是将蚊子拍死。 对事件作出反应的过程就是消息响应。 如用户在某个程序活动时按了一下键盘,操作系统马上能够感知到这

5、一事件,并且能够知道用户按下的是哪一个键,操作系统并不决定对这一事件如何作出反应,而是将这一事件转交给应用程序,由应用程序决定如何对这一事件作出反应。,事件与消息,1.1 Windows应用程序 的基本概念,typedef struct tagMSG HWNDhwnd; UINTmessage; WPARAM wParam; LPARAM lParam; DWORD time; POINTpt; MSG;,这是一个事件,事件的描述是一个消息,可能触发计算机程序做出相应反应的刺激,1.1 Windows应用程序 的基本概念,1.1 Windows应用程序 的基本概念,while(GetMessa

6、ge( ,自消息队列获取消息,把消息派发给Windows系统,系统处理了消息后返回,消息循环,1.2 Windows 应用程序的结构,主函数,窗口函数,WinMain函数,WinMain是Windows程序的入口点函数。WinMain函数的原型如下: int WINAPI WinMain(HINSTANCE hInstance, / handle to current instanceHINSTANCE hPrevInstance, / handle to previous instanceLPSTR lpCmdLine, / pointer to command lineint nCmdSh

7、ow / show state of window); Winmain函数的程序代码按功能划分主要有两部分: 1.产生并显示程序的主窗口。窗口创建并显示后,用户便可以在窗口上进行各种操作了,用户的操作及程序状态的变化都以消息的形式放到了应用程序的消息队列中。 2.从消息队列循环取走消息,并将消息派发到窗口过程函数中去处理。当消息循环取到一条WM_QUIT消息时,将结束循环,WinMain函数返回,结束整个程序的运行。如果WinMain在消息循环之前返回,程序没有正常运行,返回值为0。如果在消息循环之后返回,返回值为WM_QIUT消息的wParam参数。,窗口是怎样建成的 ?,int WINAP

8、I WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)/ 第一步:设计窗口/ 第二步:注册窗口/ 第三步:创建窗口/ 第四步:显示窗口/ 第五步:消息循环,第一步:设计窗口,窗口的特性是由一个 WNDCLASS 结构体进行定义的。WNDCLASS定义如下:typedef struct _WNDCLASS UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HANDLE hInstance; HICON

9、 hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTSTR lpszClassName; WNDCLASS;,10项,lpfnWndProc成员,lpfnWndProc成员指定了这一类型窗口的过程函数,也称回调函数。 回调函数:用户编写、系统调用。 提示:lpfnWndProc成员的变量类型为WNDPROC, WNDPROC是CAllBACK,用窗口类结构描述窗口: char lpszClassName=窗口; WNDCLASS wc; /定义一个窗口类变量 wc.style=0; wc.lpfnWn

10、dProc=WndProc; wc.cbClsExtra=0; wc.cbWndExtra=0; wc.hInstance=hInstance; wc.hIcon=LoadIcon(NULL,IDI_APPLICATION); wc.hCursor=LoadCursor(NULL,IDC_ARROW); wc.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszMenuName=NULL; wc.lpszClassName=lpszClassName;,第二步:窗口注册,自己定义的一个窗口类要使用时还必须注册一下,直接调用Reg

11、isterClass函数对其进行注册。:RegisterClass(,第三步:创建窗口,用CreateWindow函数产生窗口。CreateWindow的定义如下:HWND CreateWindow(LPCTSTR lpClassName, / pointer to registered class nameLPCTSTR lpWindowName, / pointer to window nameDWORD dwstyle, / window styleint x, / horizontal position of windowint y, / vertical position of wi

12、ndowint nWidth, / window widthint nHeight, / window heightHWND hWndParent, / handle to parent or owner windowHMENU hMenu, / handle to menu or child-window identifierHANDLE hInstance, / handle to application instanceLPVOID lpParam / pointer to window-creation data);,第四步:显示窗口,BOOL ShowWindow ( HWND hwnd, int nCmdShow) 功能: 显示或隐藏窗口 返回值: 可见状态 : 返回非零 ; 隐藏状态 : 返回零 nCmdShow可取的值: SW_HIDE 隐藏窗口 SW_MINIMIZ 极小化成一个图标 SW_MAXIMIZE 极大化成一个图标 SW_RESTORE 恢复成正常窗口,更新用户区域,BOOL UpdateWindow ( HWND hwnd ) 返回:更新成功返回真 参数:窗口句柄,第五步:消息循环,MSG msg;while(:GetMessage(,1.2 Windows 应用程序的结构,注册窗口类: Register

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论