Windows应用程序

上传人:夏** 文档编号:571064253 上传时间:2024-08-08 格式:PPT 页数:21 大小:1.11MB
返回 下载 相关 举报
Windows应用程序_第1页
第1页 / 共21页
Windows应用程序_第2页
第2页 / 共21页
Windows应用程序_第3页
第3页 / 共21页
Windows应用程序_第4页
第4页 / 共21页
Windows应用程序_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《Windows应用程序》由会员分享,可在线阅读,更多相关《Windows应用程序(21页珍藏版)》请在金锄头文库上搜索。

1、第七章第七章 WindowsWindows应用程序应用程序吴良杰吴良杰Harbin Engineering UniversityHarbin Engineering University哈尔滨工程大学课件简单的简单的Windows应用程序应用程序n nWinMainWinMain函数的原型如下:函数的原型如下:函数的原型如下:函数的原型如下: int WINAPI WinMain int WINAPI WinMain ( (HINSTANCEHINSTANCE hInstancehInstance, , / / 当前实例当前实例当前实例当前实例句柄句柄句柄句柄HINSTANCEHINSTANC

2、E hPrevInstancehPrevInstance, , / / 前一实例前一实例前一实例前一实例句柄句柄句柄句柄LPSTRLPSTR lpCmdLinelpCmdLine, , / / 指向命令行参数的指针指向命令行参数的指针指向命令行参数的指针指向命令行参数的指针intint nCmdShownCmdShow) ) / / 窗口的显示状态窗口的显示状态窗口的显示状态窗口的显示状态#include int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow

3、)MessageBox (NULL, 你好,我的你好,我的Visual C+世界!世界!, 问候问候, 0) ; return 0 ; 句柄:句柄:句柄:句柄: 一个标识一个标识一个标识一个标识WindowsWindowsWindowsWindows资源和设备等对象的资源和设备等对象的资源和设备等对象的资源和设备等对象的变量变量变量变量,或者是一个对,或者是一个对,或者是一个对,或者是一个对操作系统资源的操作系统资源的操作系统资源的操作系统资源的引用引用引用引用。哈尔滨工程大学课件简单的简单的Windows应用程序应用程序n nWindows.hWindows.h头文件头文件头文件头文件 定定

4、定定义义义义了了了了WindowsWindows的的的的所所所所有有有有数数数数据据据据类类类类型型型型、函函函函数数数数调调调调用用用用、数数数数据结构和符号常量。据结构和符号常量。据结构和符号常量。据结构和符号常量。n nMessageBox:MessageBox: 一一一一个个个个Win32 Win32 APIAPI函函函函数数数数,弹弹弹弹出出出出一一一一个个个个对对对对话话话话框框框框窗窗窗窗口口口口,显显显显示短信息。示短信息。示短信息。示短信息。n nAPIAPI: Application Programming Interface Application Programming

5、 Interface 应用程序接口应用程序接口应用程序接口应用程序接口哈尔滨工程大学课件Windows编程基础编程基础n nWindowsWindows的程序设计语言的程序设计语言的程序设计语言的程序设计语言 VC VC、VBVB、VJVJ 面向对象语言面向对象语言面向对象语言面向对象语言n n对象对象对象对象 WindowsWindows的规范部件。的规范部件。的规范部件。的规范部件。 如:窗口、菜单、按钮、对话框如:窗口、菜单、按钮、对话框如:窗口、菜单、按钮、对话框如:窗口、菜单、按钮、对话框 特征:具有规范形态和操作模式特征:具有规范形态和操作模式特征:具有规范形态和操作模式特征:具有

6、规范形态和操作模式. .n n编程方法编程方法编程方法编程方法 传统编写法传统编写法传统编写法传统编写法-API(API(Application Programming InterfaceApplication Programming Interface) ) 交互式方法交互式方法交互式方法交互式方法-MFC(MFC(Microsoft Foundation ClassesMicrosoft Foundation Classes) ) 编写编写编写编写WindowsWindows程序相当一部分工程序相当一部分工程序相当一部分工程序相当一部分工作是在创建作是在创建作是在创建作是在创建对象对象对象

7、对象和和和和为为为为对象对象对象对象属性赋值属性赋值属性赋值属性赋值哈尔滨工程大学课件Windows编程基础编程基础为应用程序提为应用程序提为应用程序提为应用程序提供供供供WindowsWindows系统特殊系统特殊系统特殊系统特殊函数函数函数函数及数据及数据及数据及数据结构结构结构结构APIWinWin应用程序应用程序应用程序应用程序可以利用标准可以利用标准可以利用标准可以利用标准大量大量大量大量APIAPI函数函数函数函数调用调用调用调用系统功能系统功能系统功能系统功能.哈尔滨工程大学课件Windows编程基础编程基础n nAPIAPI函数函数函数函数实现窗口的实现窗口的创建、移动创建、移

8、动和修改和修改功能功能.窗口管理函数窗口管理函数窗口管理函数窗口管理函数系统服务函数系统服务函数系统服务函数系统服务函数图形设备图形设备图形设备图形设备(GDI )(GDI )函数函数函数函数实现与操作实现与操作系统有关的系统有关的多种多种功能功能.实现与设备实现与设备无关的图形无关的图形操作功能操作功能哈尔滨工程大学课件Windows编程基础编程基础n n窗口窗口窗口窗口 Windows Windows应用程序基本操作单元、应用程序与用应用程序基本操作单元、应用程序与用应用程序基本操作单元、应用程序与用应用程序基本操作单元、应用程序与用户之间交互的接口环境,系统管理应用程序的基户之间交互的接

9、口环境,系统管理应用程序的基户之间交互的接口环境,系统管理应用程序的基户之间交互的接口环境,系统管理应用程序的基本单位。本单位。本单位。本单位。n n消息驱动消息驱动消息驱动消息驱动 消息:描述事件发生的信息消息:描述事件发生的信息消息:描述事件发生的信息消息:描述事件发生的信息( (如按下鼠标或键盘如按下鼠标或键盘如按下鼠标或键盘如按下鼠标或键盘) ) Windows Windows程序程序程序程序执行顺序取决于事件发生的顺序,执行顺序取决于事件发生的顺序,执行顺序取决于事件发生的顺序,执行顺序取决于事件发生的顺序,程序的执行顺序是由顺序产生的程序的执行顺序是由顺序产生的程序的执行顺序是由顺

10、序产生的程序的执行顺序是由顺序产生的消息消息消息消息驱动的,但驱动的,但驱动的,但驱动的,但是是是是消息消息消息消息的产生往往并不要求有次序之分。的产生往往并不要求有次序之分。的产生往往并不要求有次序之分。的产生往往并不要求有次序之分。哈尔滨工程大学课件Windows编程基础编程基础n n消息的组成消息的组成消息的组成消息的组成 消息号:由事先定义好的消息名标识消息号:由事先定义好的消息名标识消息号:由事先定义好的消息名标识消息号:由事先定义好的消息名标识 字参数:用于提供消息的字参数:用于提供消息的字参数:用于提供消息的字参数:用于提供消息的附加信息附加信息附加信息附加信息 长字参数:用于提

11、供消息的长字参数:用于提供消息的长字参数:用于提供消息的长字参数:用于提供消息的附加信息附加信息附加信息附加信息n n种类消息前缀种类消息前缀种类消息前缀种类消息前缀BMBM表示按钮控制消息表示按钮控制消息表示按钮控制消息表示按钮控制消息CBCB表示组合框控制消息表示组合框控制消息表示组合框控制消息表示组合框控制消息DMDM表示默认下压式按钮控制消息表示默认下压式按钮控制消息表示默认下压式按钮控制消息表示默认下压式按钮控制消息EMEM表示编辑控制消息表示编辑控制消息表示编辑控制消息表示编辑控制消息LBLB表示列表框控制消息表示列表框控制消息表示列表框控制消息表示列表框控制消息SBMSBM表示滚

12、动条控制消息表示滚动条控制消息表示滚动条控制消息表示滚动条控制消息WMWM表示窗口消息表示窗口消息表示窗口消息表示窗口消息 附加信息与具体附加信息与具体附加信息与具体附加信息与具体消息号的值有关,消息号的值有关,消息号的值有关,消息号的值有关,哈尔滨工程大学课件Windows编程基础编程基础n nWindowsWindows应用程序常用消息应用程序常用消息应用程序常用消息应用程序常用消息1. WM_LBUTTONDOWN1. WM_LBUTTONDOWN:产生单击鼠标左键的消息产生单击鼠标左键的消息产生单击鼠标左键的消息产生单击鼠标左键的消息 字参数:键按下的状态;长字参数:光标的坐标字参数:

13、键按下的状态;长字参数:光标的坐标字参数:键按下的状态;长字参数:光标的坐标字参数:键按下的状态;长字参数:光标的坐标2. WM_KEYDOWN2. WM_KEYDOWN:按下一个按下一个按下一个按下一个非系统键非系统键非系统键非系统键时产生的消息时产生的消息时产生的消息时产生的消息 3. WM_ CHAR3. WM_ CHAR:按下一个按下一个按下一个按下一个非系统键非系统键非系统键非系统键时产生的消息时产生的消息时产生的消息时产生的消息4. WM_CREATE4. WM_CREATE:由由由由CreateWindowCreateWindow函数发出的消息函数发出的消息函数发出的消息函数发出

14、的消息wParamwParam:未用:未用:未用:未用1Param1Param:包含一个指向:包含一个指向:包含一个指向:包含一个指向CREATESTRUCTCREATESTRUCT数据结构的指针数据结构的指针数据结构的指针数据结构的指针5. WM_CLOSE5. WM_CLOSE:关闭窗口时产生的消息关闭窗口时产生的消息关闭窗口时产生的消息关闭窗口时产生的消息6. WM_DESTROY:6. WM_DESTROY:由由由由DestroyWiodowDestroyWiodow函数发出的消息函数发出的消息函数发出的消息函数发出的消息7. WM_QUIT7. WM_QUIT:由由由由PostQui

15、tMessagePostQuitMessage函数发出的消息函数发出的消息函数发出的消息函数发出的消息8. WM_PAINT8. WM_PAINT:哈尔滨工程大学课件Windows编程基础编程基础n n句柄句柄句柄句柄 一个一个一个一个4 4字节长的数值,用于标识应用程序中不同的字节长的数值,用于标识应用程序中不同的字节长的数值,用于标识应用程序中不同的字节长的数值,用于标识应用程序中不同的对象对象对象对象和和和和同类对象中不同的实例同类对象中不同的实例同类对象中不同的实例同类对象中不同的实例。 应用程序通过应用程序通过应用程序通过应用程序通过句柄句柄句柄句柄访问相应的对象信息。访问相应的对象

16、信息。访问相应的对象信息。访问相应的对象信息。常用句柄常用句柄常用句柄常用句柄HWNDHWNDHWNDHWND窗口句柄窗口句柄窗口句柄窗口句柄HDCHDCHDCHDC设备环境句柄设备环境句柄设备环境句柄设备环境句柄HBITMAPHBITMAPHBITMAPHBITMAP位图句柄位图句柄位图句柄位图句柄HCURSORHCURSORHCURSORHCURSOR光标句柄光标句柄光标句柄光标句柄HICONHICONHICONHICON图标句柄图标句柄图标句柄图标句柄HFONTHFONTHFONTHFONT字体句柄字体句柄字体句柄字体句柄HMENUHMENUHMENUHMENU菜单句柄菜单句柄菜单句柄菜

17、单句柄HPENHPENHPENHPEN画笔句柄画笔句柄画笔句柄画笔句柄HFILEHFILEHFILEHFILE文件句柄文件句柄文件句柄文件句柄HBRUSHHBRUSHHBRUSHHBRUSH画刷句柄画刷句柄画刷句柄画刷句柄HINSTANCEHINSTANCEHINSTANCEHINSTANCE当前实例句柄当前实例句柄当前实例句柄当前实例句柄哈尔滨工程大学课件Windows中的事件驱动程序设计中的事件驱动程序设计n n实例:实例: 统计一个学生的平均成绩。统计一个学生的平均成绩。启动启动消息处理消息处理结束结束输入姓名输入姓名输入第一次成绩输入第一次成绩输入第二次成绩输入第二次成绩输入第三次成绩

18、输入第三次成绩计算平均成绩计算平均成绩哈尔滨工程大学课件Windows应用程序的基本结构应用程序的基本结构n n应用程序组成应用程序组成 1.C1.C1.C1.C语言源程序文件语言源程序文件语言源程序文件语言源程序文件 2.2.2.2.头文件头文件头文件头文件 3.3.3.3.模块定义文件模块定义文件模块定义文件模块定义文件 4.4.4.4.资源描述文件资源描述文件资源描述文件资源描述文件 5.5.5.5.项目文件项目文件项目文件项目文件哈尔滨工程大学课件Windows应用程序的基本结构应用程序的基本结构n n源程序结构源程序结构源程序结构源程序结构1 1、入口函数、入口函数、入口函数、入口函

19、数WinMainWinMain 注册窗口类,建立窗口及执行必要的初始化;注册窗口类,建立窗口及执行必要的初始化;注册窗口类,建立窗口及执行必要的初始化;注册窗口类,建立窗口及执行必要的初始化; 进入消息循环,根据接受的消息调用相应的处理进入消息循环,根据接受的消息调用相应的处理进入消息循环,根据接受的消息调用相应的处理进入消息循环,根据接受的消息调用相应的处理过程;过程;过程;过程; 当消息循环检索到当消息循环检索到当消息循环检索到当消息循环检索到WM_QUITWM_QUIT时终止程序运行时终止程序运行时终止程序运行时终止程序运行2 2、窗口函数、窗口函数、窗口函数、窗口函数WndProcWn

20、dProcWndProcWndProc WinProcWinProc函数由一个或多个函数由一个或多个函数由一个或多个函数由一个或多个switchswitch语句组成。每语句组成。每语句组成。每语句组成。每一条一条一条一条casecase语句对应一种消息,当应用程序接收到语句对应一种消息,当应用程序接收到语句对应一种消息,当应用程序接收到语句对应一种消息,当应用程序接收到一个消息时,相应的一个消息时,相应的一个消息时,相应的一个消息时,相应的casecase语句被激活并执行相应语句被激活并执行相应语句被激活并执行相应语句被激活并执行相应的响应程序模块。的响应程序模块。的响应程序模块。的响应程序模

21、块。哈尔滨工程大学课件Windows应用程序的基本结构应用程序的基本结构n n初始化初始化窗口类的定义:窗口类的定义: 定义窗口的形式与功能定义窗口的形式与功能窗口类的注册:窗口类的注册: 窗口类必须先注册后使用,窗口类必须先注册后使用,RegisterClass创建窗口实例创建窗口实例 CreateWindow显示窗口显示窗口 ShowWindow ,UpdateWindow哈尔滨工程大学课件Windows应用程序的基本结构应用程序的基本结构n n消息循环消息循环 while (GetMessage (&Msg,NULL,0,0) TranslateMessage(&Msg); Dispat

22、chMessage(&Msg); 将消息的将消息的虚拟键虚拟键转换为字符信息转换为字符信息将消息传送到将消息传送到指定窗口函数指定窗口函数从消息队列中读取从消息队列中读取一条消息,并将消一条消息,并将消息放在息放在MSG结构中结构中哈尔滨工程大学课件n n窗口函数的一般形式如下:窗口函数的一般形式如下:窗口函数的一般形式如下:窗口函数的一般形式如下:LRESULT CALLBACK WndProc(HWND hwnd,UINT LRESULT CALLBACK WndProc(HWND hwnd,UINT messgae,messgae, WPARAM wParam,LPARAM lParam

23、 ) WPARAM wParam,LPARAM lParam ) switch(message)switch(message) message message为标识的消息为标识的消息为标识的消息为标识的消息 case case case case WM_DESTROYWM_DESTROY: : PostQuitMessage(0);PostQuitMessage(0); default:default: return return DefWindowProcDefWindowProc(hwnd,message,wParam,lParam);(hwnd,message,wParam,lParam

24、); return(0);return(0); 为未定义处理过程的消息提供缺省处理为未定义处理过程的消息提供缺省处理哈尔滨工程大学课件数据类型数据类型数据数据类型型说 明明BYTEBYTE8 8位无符号字符位无符号字符BSTRBSTR3232位字符指位字符指针COLORREFCOLORREF3232位整数,表示一个位整数,表示一个颜色色WORDWORD1616位无符号整数位无符号整数LONGLONG3232位有符号整数位有符号整数DWORDDWORD3232位无符号整数,是位无符号整数,是WORDWORD的两倍的两倍长度度UINTUINT3232位无符号整数位无符号整数BOOLBOOL布布尔尔

25、值,值为TRUETRUE或或FALSEFALSEHANDLEHANDLE句柄句柄LPSTRLPSTR3232位指位指针,指向字符,指向字符LPCSTRLPCSTR3232位指位指针,指向字符串常量,指向字符串常量LPTSTRLPTSTR3232位指位指针,指向字符串,此字符串可移植到,指向字符串,此字符串可移植到UnicodeUnicode和和DBCSDBCS双字符集双字符集LPCTSTRLPCTSTR3232位指位指针,指向字符串常量,此字符串可移植到,指向字符串常量,此字符串可移植到UnicodeUnicode和和DBCSDBCS双字符集双字符集LPVOIDLPVOID3232位指位指针,

26、可指向任何,可指向任何类型数据型数据LPRESULTLPRESULT3232位数位数值,作,作为窗口函数或窗口函数或CALLBACKCALLBACK函数的返回函数的返回类型型WNDPROCWNDPROC3232位指位指针,指向一个窗口函数,指向一个窗口函数哈尔滨工程大学课件一些重要的数据结构一些重要的数据结构n nMSGMSG:包含一个消息的全部信息,是消息发送的:包含一个消息的全部信息,是消息发送的:包含一个消息的全部信息,是消息发送的:包含一个消息的全部信息,是消息发送的格式格式格式格式n nWINDCLASSWINDCLASS:包含一个窗口类的全部信息及属:包含一个窗口类的全部信息及属:

27、包含一个窗口类的全部信息及属:包含一个窗口类的全部信息及属性性性性n nPOINTPOINT:定义了屏幕上或窗口中的一个点的:定义了屏幕上或窗口中的一个点的:定义了屏幕上或窗口中的一个点的:定义了屏幕上或窗口中的一个点的X X和和和和 Y Y坐标坐标坐标坐标n nRECTRECT:定义了一个矩形区域及其左上角和右下:定义了一个矩形区域及其左上角和右下:定义了一个矩形区域及其左上角和右下:定义了一个矩形区域及其左上角和右下角的坐标角的坐标角的坐标角的坐标哈尔滨工程大学课件#include #include LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPA

28、RAM);LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)hPrevInstance, LPSTR lpCmdLine, int nCmdShow)HWND hwnd;HWND hwnd; MSG msg; MSG msg; WNDCLASS wndcl

29、ass; WNDCLASS wndclass; wndclass.style=CS_HREDRAW|CS_VREDRAW; wndclass.style=CS_HREDRAW|CS_VREDRAW; wndclass.lpfnWndProc=WndProc; wndclass.lpfnWndProc=WndProc; wndclass.cbClsExtra=0; wndclass.cbClsExtra=0; wndclass.cbWndExtra=0; wndclass.cbWndExtra=0; wndclass.hInstance=hInstance; wndclass.hInstance

30、=hInstance; wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); wndclass.hCursor=LoadCursor(NULL,IDC_ARROW); wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUwndclass.hbrBackground=(HBRUSH)GetStockObject(WHIT

31、E_BRUSH);SH); wndclass.lpszMenuName=NULL; wndclass.lpszMenuName=NULL; wndclass.lpszClassName=Hellowin; wndclass.lpszClassName=Hellowin;哈尔滨工程大学课件if(!RegisterClass(&wndclass)if(!RegisterClass(&wndclass)MessageBox(NULL,MessageBox(NULL,窗口注册失败窗口注册失败窗口注册失败窗口注册失败!,HelloWin,0);!,HelloWin,0); return 0; retur

32、n 0; hwnd=CreateWindow(HelloWin,hwnd=CreateWindow(HelloWin, 我的窗口我的窗口我的窗口我的窗口, , WS_OVERLAPPEDWINDOW, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, NULL, NULL, hInstance, hInstance, NULL, NULL,

33、); );哈尔滨工程大学课件ShowWindow(hwnd,nCmdShow);ShowWindow(hwnd,nCmdShow);UpdateWindow(hwnd);UpdateWindow(hwnd);while(GetMessage(&msg,NULL,0,0)while(GetMessage(&msg,NULL,0,0)TranslateMessage(&msg);TranslateMessage(&msg); DispatchMessage(&msg); DispatchMessage(&msg); return msg.wParam; return msg.wParam;LRES

34、ULT CALLBACK WndProc(HWND hwnd,UINT LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)message,WPARAM wParam,LPARAM lParam)switch(message)switch(message)case WM_CREATE: return 0;case WM_CREATE: return 0; case WM_LBUTTONDOWN: MessageBox(NULL, case WM_LBUTTONDOWN: MessageBox(NULL,你好,你好,你好,你好,我的我的我的我的,问候问候问候问候,0);,0); return 0; return 0; case WM_DESTROY:PostQuitMessage(0); case WM_DESTROY:PostQuitMessage(0); return 0; return 0; return DefWindowProc(hwnd,message,wParam,lParam); return DefWindowProc(hwnd,message,wParam,lParam);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号