欢迎来到天天文库
浏览记录
ID:32585859
大小:83.45 KB
页数:14页
时间:2019-02-13
《windows程序顶级编程步骤》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、在Windows程序中,始化应用程序,显示主窗口,进入一个消息接收一发送循环,这个循环是应用程序执行的其余部分的顶级控制结构。大体的编程步骤如下:1.WinMain编程入口(类似于main不过main是控制台程序);2.初始化WNDCLASS结构体wnd,包含一个窗口类的全部信息;3.向winndows注册窗体RegisterClass(&wnd)4.创建窗体CreateWindow并且显示5.循环接收消息GetMessage;6.循环发送将接收到的消息发送出去PostMessage;7.Callback函数接收并处理
2、消息。F面我们就逐一讲解以上的七个步骤:WinMainWinMain是一个函数,该函数的功能是被系统调用,作为一个32位应用程序的入口点。WinMain函数应初始化应用程序,intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRIpCmdLine,intnCmdShow);hInstance:应用程序当前实例的句柄。hPrevInstance:应用程序的先前实例的句柄。对于同一个程序打开两次,出现两个窗口第一次打开的窗口就是先前实例的窗口。对于一
3、个32位程序,该参数总为NULLo如果需要检测另外一个实例是否已经存在,则使用CreateMutex函数创建一个独一无二的名字。即使互斥名已经存在,CreateMutex函数也是成功的,但是GetLastError函数将返回ERROR_ALREADY_EXISTS,这就表明应用程序有另外一个实例存在,因为它首先创建了互斥名。IpCmdLine:指向应用程序命令行的字符串的指针,不包括执行文件名。获得整个命令行,参看GetCommandLine。第三个参数IpCmdLine是一个以空终止的字符串,指定传递给应用程序的命令
4、行参数。例如:在D盘下有一个sunxin.txt文件,当我们用鼠标双击这个文件时将启动记事本程序(notepad,exe),此时系统会将D:sunxin.txt作为命令行参数传递给记事本程序的WinMain函数,记事本程序在得到这个文件的全路径名后,就在窗口中显示该文件的内容。要在VC++开发环境中向应用程序传递参数,可以单击菜单【Project】T[Settings],选择“Debug”选项卡,在“Programarguments,^编辑框中输入你想传递给应用程序的参数。nCmdShow:指明窗口如何显示。该参数可
5、以是下列值之一:SW.HIDE:隐藏窗口并且激活另外一个窗口。SW.MINIMIZE:最小化指定的窗口,并且激活在系统表中的顶层窗口。SW_RESTORE:激活并显示窗口。如果窗口已经最小化或最大化,系统将以恢复到原来的尺寸和位置显示窗口(与SW_SH0WN0RMAL相同)。SW_SH0W:激活一个窗口并以原来的尺寸和位置显示窗口。SW.SHOWMAXIMIZED:激活窗口并且将其最大化。SW.SHOWMINIMIZED:激活窗口并将其目标化。SW_SH0WMINNOACTIVE:将一个窗口显示为图标。激活窗口维持活动
6、状态。SW_SH0WNA:以窗口的当前状态显示窗口。激活窗口保持活动状态。SW_SHOWNOACTIVATE:以窗口的最近一次的尺寸和位置显示窗口。激活窗口维持激活状OSW_SH0WN0RMAL:激活并显示窗口。如果窗口最大化或最小化,系统将其恢复到原来的尺寸和位置(与SW_RESTORE相同)。WNDCLASSWNDCLASS是一个由系统支持的结构,用来储存某一类窗口的信息,如ClassStyle,消息处理函数,Icon,Cursor,背景Brush等。也就是说,CreateWindow只是将某个WNDCLASS定义
7、的窗体变成实例。要得到某一窗口的WNDCLASS数据,可以用GetClassLongO;RegisterClassO就是在系统注册某一类型的窗体。也就是将你提供的WNDCLASS数据注册为一个窗口类,在WNDCLASS.IpszClassName中定义该WNDCLASS的标识,无论CreateWindow或CreateWindowEx创建的窗口都必须对应一个WNDCLASS,但一个WNDCLASS可以有多个窗口对象。有一些系统预定义的窗口类,如:ClassName二_T(“BUTTON"or“COMBOBOX"or”E
8、DIT”or“LISTBOX“or”MDICLIENT”or”SCOLLBAR”or"STATIC")要用这些窗体,直接用CreateWindow创建相应对象就是了。要得到某一窗口的窗口类,可以用GetClassNameO;WNDCLASS中的回调函数是窗体的消息处理函数:CALLBACKWinProc(MESSAGEmsg,LP
此文档下载收益归作者所有