C++Windows编程之创建窗口
Windows编程之注册窗口类介绍了风 格 宏解 释WS_border单线边框WS_caption有标题框的窗口(包括WS_BODER风格)WS_popup作为一个弹出式窗口WS_child作为子窗体(与WS_popup互斥)WS_disabled窗口不能初始化,并且屏蔽与用户的交互WS_dlgframe窗口的外观类似与对话框WS_group作为窗体的控件,可以与其他控件组合WS_hscroll窗口具有水平滚动条WS_vscroll窗口具有垂直滚动条WS_maximize初始状态为最大化的窗口WS_maximizebox窗口右上角有一个最大化按钮WS_minimize初始状态为最小化的窗口WS_minimizebox窗口右上角有一个最小化按钮WS_overlappedwindow这是一个宏组合。为了方便书写,它等价于WS_overlapped|WS_caption|WS_sysmenu|WS_thickframe|WS_minimizebox|WS_maximizeboxWS_overlapped边框重叠的窗口WS_sizebox窗口的边框可以变化WS_sysmenu在窗口的标题栏的最左上角有一个窗口菜单WS_tabstop窗口作为控件,并且交互可以停留在这个控件上WS_visible窗口建立的初始状态是可见的x,y,nWidth,nHeight制定了窗口的位置和大小,x和y指定初始左定点坐标,nWidth和nHeight指定宽度和高度。hWndParent指向被创建窗口的父窗口或所有者窗口的句柄。若要创建一个子窗口或一个被属窗口,需提供一个有效的窗口句柄。这个参数对弹出式窗口是可选的。hMenu菜单句柄,或依据窗口风格指明一个子窗口标识。对于层叠或弹出式窗口,hMenu指定窗口使用的菜单:如果使用了菜单类,则hMenu可以为NULL。对于子窗口,hMenu指定了该子窗口标识(一个整型量),一个对话框使用这个整型值将事件通知父类。应用程序确定子窗口标识,这个值对于相同父窗口的所有子窗口必须是唯一的。hInstance在早期的操作系统中,如Windows 95/98/Me,该参数指定与窗口相关的模块实例的句柄,而在较新的操作系统中,如Windows NT/2000/XP/7,可以不理睬该参数。lpPraram指向一个值的指针,该值传递给窗口 WM_CREATE消息。该值通过在IParam参数中的CREATESTRUCT结构传递。如果应用程序调用CreateWindow创建一个MDI客户窗口,则lpParam必须指向一个CLIENTCREATESTRUCT结构。返回值:如果函数成功,返回值为新窗口的句柄:如果函数失败,返回值为NULL。若想获得更多错误信息,请调用GetLastError函数。
if (!hWnd)
{
return FALSE;
}
如果创建窗口句柄失败,则返回错误
ShowWindow(hWnd, nCmdShow);
显示窗体,ShowWindow函数的原型为BOOL ShowWindow(HWND hWnd,int nCmdShow);第一个参数指定要显示窗口的句柄,第二个参数指定窗口的显示方式,如果加载应用程序提供了STARTUPINFO结构,则应用第一次调用ShowWindow函数时不理财该参数;否则,应用第一次调用ShowWindow函数时从WinMain函数的nCmdShow参数中获取实际值。在后续的函数调用中,nCmdShow的值可以说下表中的任意一个。(表中显示宏都应为大写,为方便阅读,我使用小写,写程序是须使用大写)
显 示 宏结 果SW_forceminimize在WindowNT5.0中最小化窗口,即使拥有窗口的线程被挂起也会最小化。在从其他线程最小化窗口时才使用这个参数SW_hide隐藏窗口并激活其他窗口SW_mazimize最大化指定的窗口SW_minimize最小化指定的窗口。SW_restore激活并显示窗口。如果窗口最小化或最大化,则系统将窗口恢复到原来的尺寸和位置。在恢复最小化窗口时,应用程序应该指定这个标志SW_show在窗口原来的位置以原来的尺寸激活和显示窗口SW_showdefault依据在STARTUPINFO结构中指定的SW_FLAG标志设定显示状态,STARTUPINFO 结构是由启动应用程序的程序传递给CreateProcess函数的。SW_showmaximized激活窗口并将其最大化SW_showminimized激活窗口并将其最小化SW_showminnoactive窗口最小化,并不激活窗口,但激活窗口仍然维持激活状态SW_showna以窗口原来的状态显示窗口,激活窗口仍然维持激活状态SW_shownoactivate以窗口最近一次的大小和状态显示窗口,激活窗口仍然维持激活状态SW_shownormal激活并显示一个窗口。如果窗口被最小化或最大化,系统将其恢复到原来的尺寸和大小。应用程序在第一次显示窗口的时候应该指定此标志UpdateWindow(hWnd);
如果窗口更新的区域不为空,UpdateWindow函数通过发送一个WM_PAINT消息来更新指定窗口的客户区。函数绕过应用程序的消息队列,直接发送WM_PAINT消息给指定窗口的窗口过程,如果更新区域为空,则不发送消息。
未完待续。。。。。。