ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:27.13KB ,
资源ID:22744743      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22744743.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(1 win32思想Word文件下载.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

1 win32思想Word文件下载.docx

1、图标: 适用于提醒用户的一个小图像,代表一个应用程序。光标:Windows光标显示在屏幕上的一个小位图。工具栏:一般位于菜单栏下方,上面有一些位图按钮,代表一些常用功能。状态栏:位于这个窗口底端,用于输出菜单提示信息和一些其他详细信息。对话框:一种特殊的窗口,用于接受用户的输入输出。控件:对话框上的许多小窗口都是控件。如按钮,编辑框等都是控件。 Windows应用程序设计相关基本术语是应用程序操作的基本单元,是用户可以通过它和应用程序进行交互的接口环境,也是系统管理应用程序的基本单位。从程序运行的内存组织结构看,窗口对应一个数据结构WNDCLASS。实例:实际上实例就是一个可执行程序在内存中的

2、拷贝。一个可执行程序运行多次,在内存中就有多个内存拷贝。系统是通过实例句柄来识别一个可执行程序的拷贝。句柄:系统用来识别不同对象或者同类对象的不同实例的编号。它是一个无符号整数。几乎所有对对象的引用都是通过句柄来进行的。如使用HWND、HCURSOR、HDC。资源:构成应用程序的元素称为资源:菜单、工具条、位图、字符串等。窗口函数:用户通过窗口和应用程序交互时产生的消息,送给一个函数进行处理。该函数体结构大致由一个Switch结构组成,是消息驱动机制的发动机。图形设备接口:GDI(Graphic Device Interface)时Windows系统的重要组成部分。负责系统和用户或者绘图程序之

3、间的信息交换,并控制输出设备上图形和文字的输出。最大的优点就是设备无关性:将程序员和设备相隔离,程序员不必关心物理设备的细节,直接调用相关的API函数就可以在输出设备上显示图形或者文字。回调函数:写好了等系统进行调用的函数。只能由系统自动调用。前面所说的窗口函数就是一个典型的回调函数。/*/ 工程:Mywin/ 文件:Mywin.cpp/ 内容:一个简单的Win32程序/*#include windowsx.h/函数声明BOOL InitMyWindow( HINSTANCE hInstance, int nCmdShow );LRESULT CALLBACK WinProc( HWND hW

4、nd, UINT message, WPARAM wParam, LPARAM lParam );/*/函数:WinMain()/功能:Win32应用程序入口函数。创建主窗口,处理消息循环/*int PASCAL WinMain( HINSTANCE hInstance, /当前实例句柄 HINSTANCE hPrevInstance, /前一个实例句柄 LPSTR lpCmdLine, /命令行字符(参数) int nCmdShow) /窗口显示方式 MSG msg; /创建主窗口 if (!InitMyWindow( hInstance, nCmdShow ) ) return FALSE

5、; /进入消息循环: /从该应用程序的消息队列中检取消息,送到消息处理过程, /当检取到WM_QUIT消息时,退出消息循环。 while (GetMessage(&msg, NULL, 0, 0) TranslateMessage(&msg); DispatchMessage(& /程序结束 return msg.wParam;/*InitMyWindow()创建窗口。static BOOL InitMyWindow( HINSTANCE hInstance, int nCmdShow ) HWND hwnd; /窗口句柄 WNDCLASS wc; /窗口类结构 /填充窗口类结构 wc.sty

6、le = CS_VREDRAW | CS_HREDRAW; wc.lpfnWndProc = (WNDPROC)WinProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon( hInstance, IDI_APPLICATION ); wc.hCursor = LoadCursor( NULL, IDC_ARROW ); wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszMenuName = NU

7、LL; wc.lpszClassName = MyWin; /注册窗口类 RegisterClass(&wc); /创建主窗口 hwnd = CreateWindow( , /窗口类名称 一个简单的Win32程序, /窗口标题 WS_OVERLAPPEDWINDOW, /窗口风格,定义为普通型 200, /窗口位置的x坐标 200, /窗口位置的y坐标 500, /窗口的宽度 400, /窗口的高度 NULL, /父窗口句柄 NULL, /菜单句柄 hInstance, /应用程序实例句柄 NULL ); /窗口创建数据指针 if(!hwnd) /显示并更新窗口 ShowWindow( hwn

8、d, nCmdShow ); UpdateWindow( hwnd ); return TRUE;*WinProc()处理主窗口消息/*LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) switch( message ) case WM_KEYDOWN:/击键消息 switch( wParam ) case VK_ESCAPE: MessageBox(hWnd,你按下了ESC键!,键盘,MB_OK); break; break; case WM_RBUTTONDOWN:/鼠标消息

9、MessageBox(hWnd,你按下了鼠标右键!鼠标 break; case WM_PAINT:/窗口重绘消息 char hello=你好,我是最简单的Win! HDC hdc; PAINTSTRUCT ps; hdc=BeginPaint( hWnd,&ps ); /取得设备环境句柄 SetTextColor(hdc, RGB(0,0,255); /设置文字颜色 TextOut( hdc, 20, 10, hello, strlen(hello) );/输出文字 EndPaint( hWnd, & /释放资源 case WM_DESTROY:/退出消息 PostQuitMessage( 0

10、 );/调用退出函数 /调用缺省消息处理过程 return DefWindowProc(hWnd, message, wParam, lParam);编译,运行该程序。运行结果为弹出一个简单的Windows窗口,提示:你好,我是简单的Win!点击鼠标右键,会谈出提示框:你按下了鼠标右键!按下Esc键,会提示:你按下了ESC键!这是一个最简单的Win32应用程序,其他较复杂的Windows应用程序都是在这样的程序框架上扩展得到的。下面对框架里边比较重要的函数进行解释说明。WinMain()函数 WinMain()函数是应用程序开始执行时的入口点,通常也是应用程序结束任务退出时的出口点。它与DOS

11、程序的main()函数起同样的作用,有一点不同的是,WinMain()函数必须带有四个参数,它们是系统传递给它的。WinMain()函数的原型如下:HINSTANCE hPrevInstance, /前一个实例句柄LPSTR lpCmdLine, /命令行字符int nCmdShow) /窗口显示方式第一个参数hInstance,是标识该应用程序当前的实例的句柄。它是HINSTANCE类型,HINSTANCE是Handle of Instance的缩写,表示实例的句柄。hInstance是一个很关键的数据,它唯一的代表该应用程序,在后面初始化程序主窗口的过程中需要用到这个 参数。这里有两个概念

12、,一个是实例,一个是句柄。实例代表的是应用程序执行的整个过程和方法,一个应用程序如果没有被执行,只是存在 于磁盘上,那么就说它是没有被实例化的;只要一执行,则说该程序的一个实例在运行。句柄,顾名思义,指的是一个对象的把柄。在Windows中,有各种各 样的句柄,它们都是32位的指针变量,用来指向该对象所占据的内存区。句柄的使用,可以极大的方便Windows管理其内存中的各种对象。第二个参数是hPrevInstance,它是用来标识该应用程序的前一个实例句柄。对于基于Win32的应用程序来说,这个参数总是NULL。这是因为在Win95操作系统中, 应用程序的每个实例都有各自独立的地址空间,即使同

13、一个应用程序被执行了两次,在内存中也会为它们的每一个实例分配新的内存空间,所以一个应用程序被执行 后,不会有前一个实例存在的可能。也就是说,hPrevInstance这个参数是完全没有必要的,只是为了提供与16位Windows的应用程序形式上 的兼容性,才保留了这个参数。在以前的16位Windows环境下(如Windows3.2),hPrevInstance用来标识与hInstance 相关的应用程序的前一个句柄。第三个参数是lpCmdLine,是指向应用程序命令行参数字符串的指针。如在Win95的开始菜单中单击运行,输入easywin hello,则此参数指向的字符串为hello最后一个参数

14、是nCmdShow,是一个用来指定窗口显示方式的整数。这个整数值可以是SW_SHOW、SW_HIDE、SW_SHOWMAXIMIZED、SW_SHOWMINIMIZED等注册窗口类上面的例程中,创建主窗口的函数是InitMyWindow()。通常要对填充一个窗口类结构WNDCLASS, 然后调用RegisterClass()对该窗口类进行注册。每个窗口都有一些基本的属性,如窗口边框、窗口标题栏文字、窗口大小和位置、鼠标、背景色、 处理窗口消息函数的名称等等。注册的过程也就是将这些属性告诉系统,然后再调用CreateWindow()函数创建出窗口。这好比人们量体裁衣。typedef struct

15、 _WNDCLASS UINT style; /窗口的风格 NDPROC lpfnWndProc; /指定窗口的消息处理函数的远指针 int cbClsExtra; /指定分配给窗口类结构之后的额外字节数 int cbWndExtra; /指定分配给窗口实例之后的额外字节数 HANDLE hInstance; /指定窗口过程所对应的实例句柄 HICON hIcon; /指定窗口的图标 HCURSOR hCursor; /指定窗口的鼠标 HBRUSH hbrBackground; /指定窗口的背景画刷 LPCTSTR lpszMenuName; /窗口的菜单资源名称 LPCTSTR lpszCl

16、assName; /该窗口类的名称 WNDCLASS;在Win95和WinNT的具有新界面特性的系统中,为了支持新的窗口界面特性,还有一种扩展的窗口类型WNDCLASSEX,它的定义如下:typedef struct _WNDCLASSEX UINT cbSize; /指定WNDCLASSEX结构的大小 WNDPROC lpfnWndProc; HICON hIconSm; /窗口的小图标 WNDCLASSEX;结构中相关成员这里进行简单解释一下,实际应用过程中查阅MSDN。填充完毕后,调用RegisterClass函数进行窗口注册。函数原型如下:ATOM RegisterClass( CON

17、ST WNDCLASS *lpWndClass );ATOM RegisterClassEx( CONST WNDCLASSEX *lpwcx );该函数如调用成功,则返回一个非0值,表明系统中已经注册了一个名为EasyWin的窗口类。如果失败,则返回0。创建窗口 当窗口类注册完毕之后,并不会有窗口显示出来,因为注册的过程仅仅是为创建窗口所做的准备工作。实际创建一个窗口的是通过调用CreateWindow()函数完成的。窗口类中已经预先定义了窗口的一般属性,而CreateWindow()中的参数可以进一 步指定一个窗口的更具体的属性,在MyWin程序中,是如下调用CreateWindow()函

18、数来创建窗口的:hwnd = CreateWindow( , /创建窗口所用的窗口类的名称 , /窗口标题 WS_OVERLAPPEDWINDOW, /窗口风格,定义为普通型 200, /窗口位置的x坐标 200, /窗口位置的y坐标 500, /窗口的宽度 400, /窗口的高度 NULL, /父窗口句柄 NULL, /菜单句柄 hInstance, /应用程序实例句柄 NULL ); /一般都为NULL如果窗口创建成功,返回值是新窗口的句柄,否则返回NULL。显示和更新窗口 窗口创建后,并不会在屏幕上显示出来,要真正把窗口显示在屏幕上,还得使用ShowWindow()函数,其原型如下: B

19、OOL ShowWindow( HWND hWnd, int nCmdShow );参数hWnd指定要显示得窗口的句柄,nCmdShow表示窗口的显示方式,这里指定为从WinMain()函数的nCmdShow所传递而来的值。由于ShowWindow()函数的执行优先级不高,所以当系统正忙着执行其它的任务时,窗口不会立即显示出来,此时,调用UpdateWindow()函数以可以立即显示窗口。其函数原型如下: BOOL UpdateWindow( HWND hWnd );消息循环 在Win32编程中,消息循环是相当重要的一个概念,看似很难,但是使用起来却是非常简单。在WinMain()函数中,调用

20、InitWindow()函数成功的创建了应用程序主窗口之后,就要启动消息循环,其代码如下:while (GetMessage(&msg, NULL, 0, 0) TranslateMessage(& DispatchMessage(&Windows应用程序可以接收以各种形式输入的信息,这包括键盘、鼠标动作 、记时器产生的消息,也可以是其它应用程序发来的消息等等。Windows系统自动监控所有的输入设备,并将其消息放入该应用程序的消息队列中。Windows消息结构及分类在下一章节进行讲解。GetMessage()函数还可以过滤消息,它的第二个参数是用来指定从哪个窗口的消息队列中获取消息,其它窗口

21、的消息将被过滤掉。如果该参数为NULL,则GetMessage()从该应用程序线程的所有窗口的消息队列中获取消息。第三个和第四个参数是用来过滤MSG结构中主消息值的,主消息值在wMsgFilterMin和wMsgFilterMax之外的消息将被过滤掉。如果这两个参数为0,则表示接收所有消息。当且仅当GetMessage()函数在获取到WM_QUIT消息后,将返回0值,于是程序退出消息循环。TranslateMessage()函数的作用是把虚拟键消息转换到字符消息,以满足键盘输入的需要。DispatchMessage()函数所完成的工作是把当前的消息发送到对应的窗口过程中去。消息处理函数 消息处

22、理函数又叫窗口过程,在这个函数中,不同的消息将用switch语句分配到不同的处理程序中 去。Windows的消息处理函数都有一个确定的样式,即这种函数的参数个数和类型以及其返回值的类型都有明确的规定。在VC的说明书中,消息处理函数的 原型是这样定义的:LRESULT CALLBACK WindowProc( HWND hwnd, /接收消息窗口的句柄 UINT uMsg, /消息值 WPARAM wParam, /消息值对应的第一个参数 LPARAM lParam /消息值对应的第二个参数 );如果你的程序中还有其它的消息处理函数,也都必须按照上面的这个样式来定义,但函数名称可以随便取。Eas

23、yWin中的WinProc()函数就是这样一个典型的消息处理函数。消息处理函数的四个参数是由GetMessage()函数从消息队列中获得MSG结构,然后分解后得到的。第二个参数uMsg和MSG结构中的message值是一致的,代表了主消息值。程序中用switch语句来将不同类型的消息分配到不同的处理程序中去。WinProc()函数明确的处理了4个消息,分别是WM_KEYDOWN(击键消息)、WM_RBUTTONDOWN(鼠标右键按下消息)、WM_PAINT(窗口重画消息)、WM_DESTROY(销毁窗口消息)。值得注意的是,应用程序发送到窗口的消息远远不止以上这几条,象WM_SIZE、WM_MINIMIZE、WM_CREATE、WM_MOVE等这样频 频使用的消息就有几十条。为了减轻编程的负担,Windows的API提供了DefWindowProc()函数来处理这些最常用的消息,调用了这个函数后,这些

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1