您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 制造加工工艺 > Windows编程基础
第二章Windows编程基础2.1关于Windows系统Microsoft公司的Windows系统是为PC级计算机开发的图形界面操作系统。它是一个多任务的操作系统,该系统为应用程序提供了统一的窗口和菜单界面。由于Windows的程序的窗口和菜单界面是统一的,所以对用户来说,Windows比传统的命令行式的系统更易于学习和使用。Windows系统的主要有点是可以同时运行几个应用程序。1.Windows系统的历史•1983年推出了Windows1.0版本;•1985年Windows1.1正式推出;•1987年10月推出Windows2.0;•1992年Windows3.1发布;•1993年11月Windows3.11发布;•1994年Windows3.2发布;。•1995年8月24日Windows95发布;•1996年8月24日WindowsNT4.0发布;•1998年6月25日Windows98发布;•2000年9月14日WindowsMe发布;•2000年12月19日Windows2000;•2001年10月25日WindowsXP发布;•2003年4月底Windows2003发布;•2006年9月WindowsVista发布。2.Windows的普及性1)Windows系统为用户提供的方便2)Windows系统为程序员提供的方便3.窗口的标准组成部分1)边框2)用户区3)控制菜单(系统菜单)4)标题栏5)控制按钮6)菜单栏7)滚动条4.Windows系统函数(API函数)•窗口管理函数:实现窗口的建立、显示、移动和修改功能(帮助文件WINUI.CHM)。•图形设备(GDI)函数:实现与设备无关的图形图像操作功能(帮助文件GDI.CHM)。•系统服务函数:实现与操作系统有关的操作(帮助文件WINBASE.CHM)。5.Windows系统消息Windows系统应用程序通过Windows系统消息与其他Windows应用程序或Windows系统通信。因为Windows应用程序是消息驱动的(也称作事件驱动),因此了解Windows的系统消息是非常重要的。6.匈牙利表示法以小写字母作为变量名的前缀,表示变量的数据类型;变量名的其余部分作描述该变量功能之用,每一种功能单词以大写字母开始,公认的简略语可以作为命名变量名之用。例如:nCharacterCounter或nCharCount都指示我们定义了一个整型变量,作为字符计数。前缀意义aArray数组bBOOL(int)布尔值byUnsignedChar(byte)无符号8位整数cChar字符(8位整数)cbCountofbytes无符号8位整数的计数器crColorreferencevalue颜色引用值cxCountofx(short)对象x计数器dwDWORD(unsignedlong)无符号长整数fFlags(usuallymultiplebitvalues)标志位fnFunction函数g_Global全局变量hHandle句柄前缀意义iInteger整数lLong长整数lpLongpointer长指针m_Datamemberofaclass类成员数据nShortint短整数pPointer指针sString子串szZeroterminatedString以零结尾的字串tmTextmetric字体单位(结构TEXTMETRIC)uUnsignedint无符号整数ulUnsignedlong(ULONG)无符号长整数wWORD(unsignedshort)无符号短整数x,yx,ycoordinates(short)坐标x,y值(短整数)7.句柄•在Windows中,对象可以是所有的规范部件,如窗口、菜单、工具栏、按钮和编辑框等。当然,我们自己编写的应用程序也是对象。•Windows怎样访问和控制这些对象呢?所有这些对象在系统内部都有一个唯一的标识,该标识是一个32位的指针。Windows称这个标识为对象的句柄(Handle)。句柄类型说明HACCEL快捷键句柄HANDLE通用对象句柄HBITMAP位图对象句柄HBRUSH画刷对象句柄HCURSOR光标对象句柄HDC设备环境对象句柄HFILE文件对象句柄HFONT字体对象句柄HGDIOBJGDI(图形设备接口)对象句柄HGLOBAL全局内存块对象句柄句柄类型说明HICON图标对象句柄HINSTANCE应用程序实例对象句柄HKEY注册键对象句柄HLOCAL局域内存块对象句柄HMENU菜单对象句柄HMODULE模块对象句柄(加载动态库)HPALETTE调色板对象句柄HPEN画笔对象句柄HRGN区域对象句柄HWND窗口对象句柄8.头文件MicrosoftSDK(SoftwareDevelopmentKit)提供了“Windows.h”等一些列头文件。这些头文件包含的对API函数原型的说明、消息常量的定义、结构类型的定义。当我们使用某些函数、常量或结构体时,可以通过MSDN查找应该包含的头文件。9.Windows常用的数据类型为了编程方便,便于记忆,区别于其他系统。Windows定义了一些数据类型。Windows的类型C++中的类型说明BOOLint布尔值BYTEunsignedchar8位无符号整数,0-255CALLBACK__stdcall标准C调用CHARchar8位整数,-128~127COLORREFunsignedlongRGB颜色值,0x00bbggrrCONSTconst常量类型DWORDunsignedlong无符号32位整数,0到232-1FLOATfloat32位浮点数,范围1038到10-40,精度是7位INTint32位平台上32位整数,16位平台上16位整数LONGlong32位整数,-223到223-1LONGLONG__int6464位整数,-263到263-1LPARAMlong消息附加参数2LPCOLORREFunsignedlong*COLORREF的指针Windows的类型C++中的类型说明LPCSTRconstchar*常量串指针LPCTSTRconstchar*可移植常量串指针LPVOIDvoidfar*通用类型指针LRESULTlong消息处理结果(有符号)SHORTshort16位整数,-32,768到32,767UINTunsignedint无符号整数ULONGunsignedlong无符号32位整数ULONGLONunsigned__int64无符号64位整数USHORTUnsignedshort无符号16位整数VOIDvoid任意类型WNDPROClong(__stdcall*)(void*,unsignedint,unsignedint,long);窗口过程指针WINAPI__stdcall标准C调用WORDunsignedshort无符号16位整数WPARAMunsignedint消息附加参数12.2Windows程序特性•标准的用户界面——窗口•应用程序与硬件无关•消息驱动机制2.3窗口程序的组成和功能Windows窗口应用程序最少应该由两部分组成,即一个主函数和一个窗口函数。一个负责建立和显示窗口,并为窗口传递消息;一个负责处理消息处理和维护窗口1.主函数(入口函数)同我们前面学习的传统的C程序一样,Windows程序也必须有一个且只能有一个主函数。所不同的是,以前的C程序的主函数名是main,并且有几个重载形式。而Windows程序的主函数名是WinMain,而且有着严格的唯一的格式。1)主函数格式intWINAPIWinMain(HINSTANCEhInstance,//当前实例句柄HINSTANCEhPrevInstance,//前一个实例句柄(16位)LPSTRlpCmdLine,//命令行intnCmdShow//显示状态);函数名必须是WinMain返回类型是int参数传递约定是WINAPI(__stdcall)标准的C约定参数:hInstance当前运行程序的句柄;hPrevInstance前一个程序的句柄,已经淘汰不用了,保留只是为了兼容;lpCmdLine命令行参数;nCmdShow程序开始运行时,窗口的状态(最大化,最小化…)。2)建立窗口程序,在主函数中必须做的三件事在窗口应用程序的主函数中,必须为应用程序注册窗口类,建立窗口并显示窗,和建立消息循环。人们也将以上三步称为对应用程序的初始化,这三步是必不可少的,并且要按照严格的顺序和格式执行的。否则,程序将无法运行或出错。①注册窗口类第一步:定义一个窗口类结构数据变量第二步:给相关的注册项赋值第三步:注册这个窗口类WNDCLASSwndClass;//------第一步---------//-----------第二步---------------wndClass.style=CS_HREDRAW|CS_VREDRAW;wndClass.lpfnWndProc=WndProc;wndClass.cbClsExtra=0;wndClass.cbWndExtra=0;wndClass.hInstance=hInstance;wndClass.hIcon=LoadIcon(hInstance,(LPCTSTR)IDI_FIRST);wndClass.hCursor=LoadCursor(NULL,IDC_ARROW);wndClass.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);wndClass.lpszMenuName=(LPCSTR)IDC_FIRST;wndClass.lpszClassName=szWindowClass;//_________________________第二步_______RegisterClass(&wndClass);//-------第三步---------结构WNDCLASSWindows为了控制窗口,每一个窗口程序运行时都必须注册一个代表本窗口的窗口类,用以记录窗口应用程序的基本信息。这个窗口类是一个结构类型的数据,是专门用来承载窗口基本信息的。结构WNDCLASStypedefstruct_WNDCLASS{UINTstyle;WNDPROClpfnWndProc;intcbClsExtra;intcbWndExtra;HANDLEhInstance;HICONhIcon;HCURSORhCursor;HBRUSHhbrBackground;LPCTSTRlpszMenuName;LPCTSTRlpszClassName;}WNDCLASS;函数RegisterClassATOMRegisterClass(CONSTWNDCLASS*lpWndClass//指向窗口类结构数据的指针);函数的返回类型是ATOM,这是一个Windows定义的数据类型,等价于C语言中的unsignedshort。如果注册成功,将返回一个唯一的类标识值。否则返回0。注意随着Windows版本的不断更新,与之相应的API也在不断的扩展,现在普遍使用的窗口类结构和注册函数,是带Ex后缀的扩展版②建立和显示窗口HWNDhWnd;//窗口句柄hWnd=CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);//建立窗口ShowWindow(hWnd,nCmdShow);//显示窗口函数CreateWindowHWNDCreateWindow(LPCTSTRlpClassName,//已经注册了的窗口类的名称LPCTSTRlpWindowName,//窗口名称,标题栏上显示的DWORDdwStyle,//窗口的样式intx,//窗口左上角的横坐标inty,//窗口左上角的纵坐标intnWidth,//窗口的宽度intnHeight,//窗口的高度HWNDhWndParent,//父窗口HME
本文标题:Windows编程基础
链接地址:https://www.777doc.com/doc-3262709 .html