VC创建窗口举例.docx_第1页
VC创建窗口举例.docx_第2页
VC创建窗口举例.docx_第3页
VC创建窗口举例.docx_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

举例说明#include /包含应用程序中数据类型和数据结构的定义 long CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); /窗口说明 /WinMain函数是所有Windows应用程序的入口,类似c语言中的main函数 其功能是完成/一系列的定义和初始化,并产生消息循环 /* WinMain函数实现以下功能:注册窗口类,建立窗口及执行其他必要的初始化工作;进入消息循环,根据从应用程序消息队列接受的消息,调用相应的处理过程;当消息循环检 测到WM_QUIT消息是终止程序运行 WinMain函数有三个基本部分组成:函数说明、初始化和消息循环*/ /函数说明 int WINAPI WinMain( HINSTANCE hInstance, / handle to current instance HINSTANCE hPrevInstance, / handle to previous instance LPSTR lpCmdLine, / command line int nCmdShow / show state ) /初始化 /初始化包括窗口类的定义、注册、创建窗口实例和显示窗口四部分 HWND hwnd; MSG Msg; WNDCLASS wndclass; char lpszClassName=窗口;/窗口类名 char lpszTitle=徐新坡; /窗口标题名 /窗口类定义 /窗口类定义了窗口的形式与功能 窗口类定义通过给窗口类数据结构WNDCLASS赋值完成 /该数据结构中包含窗口类的各种属性 wndclass.style =0; / 窗口类型为缺省类型 wndclass.lpfnWndProc=WndProc; /定义窗口处理函数 wndclass.cbClsExtra=0; /窗口类无扩展 wndclass.cbWndExtra=0; /窗口实例无扩展 wndclass.hInstance=hInstance; /当前实例句柄 wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);/窗口的最小化图标为缺省图标 wndclass.hCursor=LoadCursor(NULL,IDC_ARROW); / 窗口采用箭头光标 wndclass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH); /窗口背景为白色 wndclass.lpszMenuName=NULL; /窗口无菜单 wndclass.lpszClassName=lpszClassName; /窗口类名为“窗口” / 以下是窗口类的注册 Windows系统本身提供部分预定义的窗口类,程序员也可以自定义窗口类/ 窗口类必须先注册 后使用 if(!RegisterClass(&wndclass) /如果注册失败 发出警告 MessageBeep(0); return FALSE; /创建窗口 创建一个窗口的实例由函数CreateWindow()实现 hwnd=CreateWindow( lpszClassName, /窗口类名 lpszTitle, /窗口标题名 WS_OVERLAPPEDWINDOW, /窗口的风格 CW_USEDEFAULT, CW_USEDEFAULT, /窗口左上角坐标值为缺省值 CW_USEDEFAULT, CW_USEDEFAULT, /窗口的高和宽为缺省值 NULL, /此窗口无父窗口 NULL, /此窗口无子菜单 hInstance, /创建此窗口的应用程序的当前句柄 NULL /不使用该值 ); /显示窗口 ShowWindow(hwnd,nCmdShow); /绘制用户区 UpdateWindow(hwnd); /消息循环 while(GetMessage(&Msg,NULL,0,0) TranslateMessage(&Msg); DispatchMessage(&Msg); return Msg.wParam; /消息循环结束 即程序结束时 将信息返回系统 /窗口函数 /窗口函数定义了应用程序对接收到的不同消息的响应,其中包含了应用程序对各种可能接受到的消息的 /处理过程,时消息处理分支控制语句的集合 long CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ) switch(message) case WM_DESTROY: PostQuitMessage(0); default: /缺省时采用系统消息缺省处理函数 return DefWindowProc(hwnd,message,wParam,lParam); return (0); *WinMain()WinMain是一个函数,该函数的功能是被系统调用,作为一个32位应用程序的入口点。WinMain函数应初始化应用程序,显示主窗口,进入一个消息接收一发送循环,这个循环是应用程序执行的其余部分的顶级控制结构。函数原型int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ); (在Visual Studio 2005下则为int APIENTRY WinMain.) 参数hInstance:应用程序当前实例的句柄。 hPrevlnstance:应用程序的先前实例的句柄。对于同一个程序打开两次,出现两个窗口第一次打开的窗口就是先前实例的窗口。对于一个32位程序,该参数总为NULL。 如果需要检测另外一个实例是否已经存在,则使用CreateMutex函数创建一个独一无二的名字。即使互斥名已经存在,CreateMutex函数也是成功的,但是GetLastError函数将返回 ERROR_ALREADY_EXISTS,这就表明应用程序有另外一个实例存在,因为它首先创建了互斥名。 lpCmdLine:指向应用程序命令行的字符串的指针,不包括执行文件名。获得整个命令行,参看GetCommandLine。 第三个参数lpCmdLine是一个以空终止的字符串,指定传递给应用程序的命令行参数。例如:在D盘下有一个sunxin.txt文件,当我们用鼠标双击这个文件时将启动记事本程序(notepad.exe),此时系统会将D:sunxin.txt作为命令行参数传递给记事本程序的WinMain函数,记事本程序在得到这个文件的全路径名后,就在窗口中显示该文件的内容。要在VC+开发环境中向应用程序传递参数,可以单击菜单【Project】【Settings】,选择“Debug”选项卡,在“Program arguments”编辑框中输入你想传递给应用程序的参数。 nCmdShow:指明窗口如何显示。该参数可以是下列值之一: SW_HIDE:隐藏窗口并且激活另外一个窗口。 SW_MINIMIZE:最小化指定的窗口,并且激活在系统表中的顶层窗口。 SW_RESTORE:激活并显示窗口。如果窗口已经最小化或最大化,系统将以恢复到原来的尺寸和位置显示窗口(与SW_SHOWNORMAL相同)。 SW_SHOW:激活一个窗口并以原来的尺寸和位置显示窗口。 SW_SHOWMAXIMIZED:激活窗口并且将其最大化。 SW_SHOWMINIMIZED:激活窗口并将其最小化(以图标显示)。 SW_SHOWMINNOACTIVE:将一个窗口显示为图标。激活窗口维持活动状态。 SW_SHOWNA:以窗口的当前状态显示窗口。激活窗口保持活动状态。 SW_SHOWNOACTIVATE:以窗口的最近一次的尺寸和位置显示窗口。激活窗口维持激活状态。 SW_SHOWNORMAL:激活并显示窗口。如果窗口最大化或最小化,系统将其恢复到原来的尺寸和位置(与SW_RESTORE相同)。 返回值如果函数成功,当它接收到一个WM_QUIT消息时就中止,函数应该返回在该消息的wParam参数的退出值。如果函数在进入消息循环时退出,应该返回零。 备注当接收到一个WM_QUIT消息时,程序就中止。这时,WinMain函数应退出应用程序,并且返回传递给WM_QUIT消息的wParam参数的值。如果由于调用PostQuitMessage函数而接收到WM_QUIT消息,wParam的值是PostQuiMessage函数的nExitCode的值。请参看“创建一个窗口循环”。 ANSI应用程序可以使用WinMain函数的lpCmdLine参数进入命令行字符串(除了程序名之外)。WinMain不能返回Unicode字符串的原因是IpCmdLine使用的是LPSTR数据类

温馨提示

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

评论

0/150

提交评论