窗口风格(Window style)
- WS_BORDER 有边框窗口
- WS_CAPTION 必须和WS_BORDER风格配合,但不能与WS_DLGFRAME风格一起使用。指示窗口包含标题要部分。
- WS_CHILD 说明窗口为子窗口,不能应用于弹出式窗口风格(WS_POPUP)。
- WS_CHILDWINDOW 同WS_CHILD。
- WS_CLIPCHILDREN 绘制父窗口时,不绘制子窗口的裁剪区域。使用在建立父窗口时。
- WS_CLIPSIBLINGS剪裁相关的子窗口,这意味着,当一个特定的子窗口接收到重绘消息时,WS_CLIPSIBLINGS风格将在子窗口要重画的区域中去掉与其它子窗口重叠的部分。(如果没有指定WS_CLIPSIBLINGS风格,并且子窗口有重叠,当你在一个子窗口的客户区绘图时,它可能会画在相邻的子窗口的客户区中。)只与WS_CHILD风格一起使用。
- WS_DISABLED创建一个初始状态为禁止的窗口。
- WS_DLGFRAME创建一个窗口,具有双重边界,但是没有标题条。
- WS_GROUP指定一组控件中的第一个,用户可以用箭头键在这组控件中移动。在第一个控件后面把WS_GROUP风格设置为FALSE的控件都属于这一组。下一个具有WS_GROUP风格的控件将开始下一组(这意味着一个组在下一组的开始处结束)。
- WS_HSCROLL创建一个具有水平滚动条的窗口。
- WS_ICONIC:创建一个初始状态为最小化状态的窗口。与WS_MINIMIZE风格相同。
- WS_MAXIMIZE创建一个最大化的窗口。
- WS_MAXIMIZEBOX创建一个具有最大化按钮的窗口。
- WS_MINIMIZE创建一个初始状态为最小化的窗口。仅与WS_OVERLAPPED风格一起使用。
- WS_MINIMIZEBOX创建一个具有最小化按钮的窗口。
- WS_OVERLAPPED创建一个重叠窗口。重叠窗口通常具有标题条和边界。
- WS_OVERLAPPEDWINDOW创建一个具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU,WS_THICKFRAME,WS_MINIMIZEBOX和WS_MAXIMIZEBOX风格的重叠式窗口。
- WS_POPUP创建一个弹出式窗口,不能与WS_CHILD风格一起使用。
- WS_POPUPWINDOW创建一个具有WS_BORDER,WS_POPUP和WS_SYSMENU风格的弹出窗口。为了使控制菜单可见,必须与WS_POPUPWINDOW一起使用WS_CAPTION风格。
- WS_SIZEBOX:创建一个可调边框的窗口,与WS_THICKFRAME风格相同。
- WS_SYSMENU创建一个在标题条上具有控制菜单的窗口。仅对带标题条的窗口使用。
- WS_TABSTOP指定了一些控件中的一个,用户可以通过TAB键来移过它。TAB键使用户移动到下一个用WS_TABSTOP风格定义的控件。
- WS_THICKFRAME创建一个具有厚边框的窗口,可以通过厚边框来改变窗口大小。
- WS_TILED:产生一个层叠的窗口。一个层叠的窗口有一个标题和一个边框。与WS_OVERLAPPED风格相同。
- WS_TILEDWINDOW:创建一个具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU,MS_THICKFRAME风格的窗口。
- WS_VISIBLE创建一个最初可见的窗口。
- WS_VSCROLL创建一个具有垂直滚动条的窗口。
扩展窗口风格(Extended window style)
- WS_EX_ACCEPTFILES指明用这个风格创建的窗口能够接受拖放文件。
- WS_EX_APPWINDOW- 当窗口可见时将一个顶层窗口放置在任务栏上。
- WS_EX_CLIENTEDGE指明窗口具有3D外观,这意味着,边框具有下沉的边界。
- WS_EX_CONTEXTHELP 在窗口的标题条中包含问号。当用户单击问号时,鼠标光标的形状变为带指针的问号。如果用户随后单击一个子窗口,子窗口将接收到一个WM_HELP消息。
- WS_EX_CONTROLPARENT允许用户用TAB键遍历窗口的子窗口。
- WS_EX_DLGMODALFRAME指明一个具有双重边界的窗口,当你在dwStyle参数中指定了WS_CAPTION风格标志时,它可以具有标题条(可选)。
- WS_EX_LEFT指定窗口具有左对齐属性。这是缺省值。
- WS_EX_LEFTSCROLLBAR将垂直滚动条放在客户区的左边。
- WS_EX_LTRREADING按照从左到右的方式显示窗口文本。这是缺省方式。
- WS_EX_MDICHILD创建一个MDI子窗口。
- WS_EX_NOPARENTNOTIFY指定用这个风格创建的子窗口在被创建或销毁的时候将不向父窗口发送WM_PARENTNOTIFY消息。
- WS_EX_OVERLAPPEDWINDOW组合了WS_EX_CLIENTEDGE和WS_EX_WIND-OWEDGE风格。
- WS_EX_PALETTEWINDOW组合了WS_EX_WINDOWEDGE和WS_EX_TOPMOST风格。
- WS_EX_RIGHT赋予窗口右对齐属性。这与窗口类有关。
- WS_EX_RIGHTSCROLLBAR将垂直滚动条(如果有)放在客户区的右边。这是缺省方式。
- WS_EX_RTLREADING按照从右到左的顺序显示窗口文本。
- WS_EX_STATICEDGE创建一个具有三维边界的窗口,用于不接受用户输入的项。
- WS_EX_TOOLWINDOW创建一个工具窗口,目的是被用作浮动工具条。工具窗口具有标题条,比通常的标题条要短,窗口的标题是用小字体显示的。工具窗口不出现在任务条或用户按下ALT+TAB时出现的窗口中。
- WS_EX_TOPMOST指定用这个风格创建的窗口必须被放在所有非顶层窗口的上面,即使这个窗口已经不处于激活状态,它还是保留在最上面。应用程序可以用SetWindowsPos成员函数来加入或去掉这个属性。
- WS_EX_TRANSPARENT指定了用这个风格创建的窗口是透明的。这意味着,在这个窗口下面的任何窗口都不会被这个窗口挡住。用这个风格创建的窗口只有当它下面的窗口都更新过以后才接收WM_PAINT消息。
- WS_EX_WINDOWEDGE指定了具有凸起边框的窗口。
FindWindowExA 该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始。在查找时不区分大小写。
HWND FindWindowExA(
HWND hwndParent,
HWND hwndChildAfter,
LPCTSTR lpszClass,
LPCTSTR lpszWindow);
参数:
hwndParent:要查找子窗口的父窗口句柄。
如果hwndParent为0,则函数以桌面窗口为父窗口,查找桌面窗口的所有子窗口。
hwndChildAfter :子窗口句柄。查找从在<Z序>中的下一个子窗口开始(该参数可枚举子窗口)。
如果HwndChildAfter为0,查找从hwndParent的第一个子窗口开始。
如果hwndParent 和 hwndChildAfter同时为0,则函数查找所有的顶层窗口。
lpszClass:指向一个指定了类名
lpszWindow:指向一个指定了窗口标题
返回值:如果函数成功,返回值为具有指定类名和窗口名的窗口句柄。如果函数失败,返回值为0。
LONG_PTR GetWindowLongPtr(
HWND hWnd,
int nIndex
);
参数:
hWnd
欲获取信息的窗口(或属于窗口的类)的句柄。
nIndex
为欲获取的信息指定值。可以是以下其中之一。
GWL_EXSTYLE
获取扩展窗口样式。更多信息,查阅CreateWindowEx.
GWL_STYLE
获取窗口样式(window styles)
GWLP_WNDPROC
获取窗口程序指示器,或描述指示器的句柄 。如果使用此参数,必须使用CallWindowProc回调函数。
GWLP_HINSTANCE
获取一个应用程序实例的句柄 。
GWLP_HWNDPARENT
如果只有一个父窗口,获取父窗口的句柄 。
GWLP_ID
获取窗口标识符。
GWLP_USERDATA
获取窗口关联的数据,是应用程序创建窗口时留给用户的数据。初始值是0。
DWLP_DLGPROC
获取一个对话框的指示器,或描述指示器的句柄 。如果使用此参数,必须使用CallWindowProc回调函数。 DWLP_MSGRESULT 获取一个对话框中的被处理的信息的值。
DWLP_USER 作为指示器或句柄来获取私有应用程序的额外的信息。
返回值:
如果函数执行成功,将返回读取的值。
SetWindowLong是一个Windows API函数。该函数用来改变指定窗口的属性.函数也将指定的一个32位值设置在窗口的额外存储空间的指定偏移位置。
LONG SetWindowLong(
HWND hWnd, // handle to window
int nlndex, // offset of value to set
LONG dwNewLong // new value
);
hWnd:窗口句柄及间接给出的窗口所属的类。
Nlndex:指定将设定的大于等于0的偏移值。有效值的范围从0到额外类的存储空间的字节数减4
dwNewLong:指定的替换值。