yang1625

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

窗口风格(Window style)

  1. WS_BORDER   有边框窗口
  2. WS_CAPTION   必须和WS_BORDER风格配合,但不能与WS_DLGFRAME风格一起使用。指示窗口包含标题要部分。
  3. WS_CHILD   说明窗口为子窗口,不能应用于弹出式窗口风格(WS_POPUP)。
  4. WS_CHILDWINDOW   同WS_CHILD。
  5. WS_CLIPCHILDREN   绘制父窗口时,不绘制子窗口的裁剪区域。使用在建立父窗口时。
  6. WS_CLIPSIBLINGS 剪裁相关的子窗口,这意味着,当一个特定的子窗口接收到重绘消息时,WS_CLIPSIBLINGS风格将在子窗口要重画的区域中去掉与其它子窗口重叠的部分。(如果没有指定WS_CLIPSIBLINGS风格,并且子窗口有重叠,当你在一个子窗口的客户区绘图时,它可能会画在相邻的子窗口的客户区中。)只与WS_CHILD风格一起使用。
  7. WS_DISABLED 创建一个初始状态为禁止的窗口。
  8. WS_DLGFRAME 创建一个窗口,具有双重边界,但是没有标题条。
  9. WS_GROUP 指定一组控件中的第一个,用户可以用箭头键在这组控件中移动。在第一个控件后面把WS_GROUP风格设置为FALSE的控件都属于这一组。下一个具有WS_GROUP风格的控件将开始下一组(这意味着一个组在下一组的开始处结束)。
  10. WS_HSCROLL 创建一个具有水平滚动条的窗口。
  11. WS_ICONIC:创建一个初始状态为最小化状态的窗口。与WS_MINIMIZE风格相同。
  12. WS_MAXIMIZE 创建一个最大化的窗口。
  13. WS_MAXIMIZEBOX 创建一个具有最大化按钮的窗口。
  14. WS_MINIMIZE 创建一个初始状态为最小化的窗口。仅与WS_OVERLAPPED风格一起使用。
  15. WS_MINIMIZEBOX 创建一个具有最小化按钮的窗口。
  16. WS_OVERLAPPED 创建一个重叠窗口。重叠窗口通常具有标题条和边界。
  17. WS_OVERLAPPEDWINDOW 创建一个具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU,WS_THICKFRAME,WS_MINIMIZEBOX和WS_MAXIMIZEBOX风格的重叠式窗口。
  18. WS_POPUP 创建一个弹出式窗口,不能与WS_CHILD风格一起使用。
  19. WS_POPUPWINDOW 创建一个具有WS_BORDER,WS_POPUP和WS_SYSMENU风格的弹出窗口。为了使控制菜单可见,必须与WS_POPUPWINDOW一起使用WS_CAPTION风格。
  20. WS_SIZEBOX:创建一个可调边框的窗口,与WS_THICKFRAME风格相同。
  21. WS_SYSMENU 创建一个在标题条上具有控制菜单的窗口。仅对带标题条的窗口使用。
  22. WS_TABSTOP 指定了一些控件中的一个,用户可以通过TAB键来移过它。TAB键使用户移动到下一个用WS_TABSTOP风格定义的控件。
  23. WS_THICKFRAME 创建一个具有厚边框的窗口,可以通过厚边框来改变窗口大小。
  24. WS_TILED:产生一个层叠的窗口。一个层叠的窗口有一个标题和一个边框。与WS_OVERLAPPED风格相同。
  25. WS_TILEDWINDOW:创建一个具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU,MS_THICKFRAME风格的窗口。
  26. WS_VISIBLE 创建一个最初可见的窗口。
  27. WS_VSCROLL 创建一个具有垂直滚动条的窗口。

扩展窗口风格(Extended window style)

  1. WS_EX_ACCEPTFILES 指明用这个风格创建的窗口能够接受拖放文件。
  2. WS_EX_APPWINDOW - 当窗口可见时将一个顶层窗口放置在任务栏上。
  3. WS_EX_CLIENTEDGE 指明窗口具有3D外观,这意味着,边框具有下沉的边界。
  4. WS_EX_CONTEXTHELP 在窗口的标题条中包含问号。当用户单击问号时,鼠标光标的形状变为带指针的问号。如果用户随后单击一个子窗口,子窗口将接收到一个WM_HELP消息。
  5. WS_EX_CONTROLPARENT 允许用户用TAB键遍历窗口的子窗口。
  6. WS_EX_DLGMODALFRAME 指明一个具有双重边界的窗口,当你在dwStyle参数中指定了WS_CAPTION风格标志时,它可以具有标题条(可选)。
  7. WS_EX_LEFT 指定窗口具有左对齐属性。这是缺省值。
  8. WS_EX_LEFTSCROLLBAR 将垂直滚动条放在客户区的左边。
  9. WS_EX_LTRREADING 按照从左到右的方式显示窗口文本。这是缺省方式。
  10. WS_EX_MDICHILD 创建一个MDI子窗口。
  11. WS_EX_NOPARENTNOTIFY 指定用这个风格创建的子窗口在被创建或销毁的时候将不向父窗口发送WM_PARENTNOTIFY消息。
  12. WS_EX_OVERLAPPEDWINDOW 组合了WS_EX_CLIENTEDGE和WS_EX_WIND-OWEDGE风格。
  13. WS_EX_PALETTEWINDOW 组合了WS_EX_WINDOWEDGE和WS_EX_TOPMOST风格。
  14. WS_EX_RIGHT 赋予窗口右对齐属性。这与窗口类有关。
  15. WS_EX_RIGHTSCROLLBAR 将垂直滚动条(如果有)放在客户区的右边。这是缺省方式。
  16. WS_EX_RTLREADING 按照从右到左的顺序显示窗口文本。
  17. WS_EX_STATICEDGE 创建一个具有三维边界的窗口,用于不接受用户输入的项。
  18. WS_EX_TOOLWINDOW 创建一个工具窗口,目的是被用作浮动工具条。工具窗口具有标题条,比通常的标题条要短,窗口的标题是用小字体显示的。工具窗口不出现在任务条或用户按下ALT+TAB时出现的窗口中。
  19. WS_EX_TOPMOST 指定用这个风格创建的窗口必须被放在所有非顶层窗口的上面,即使这个窗口已经不处于激活状态,它还是保留在最上面。应用程序可以用SetWindowsPos成员函数来加入或去掉这个属性。
  20. WS_EX_TRANSPARENT 指定了用这个风格创建的窗口是透明的。这意味着,在这个窗口下面的任何窗口都不会被这个窗口挡住。用这个风格创建的窗口只有当它下面的窗口都更新过以后才接收WM_PAINT消息。
  21. WS_EX_WINDOWEDGE 指定了具有凸起边框的窗口。

=======================================

==========GetWindowLong函数介绍==========

===========================================

函数原型:
LONG GetWindowLong( HWND hWnd,int nIndex )

参数:
hWnd:指定窗口的句柄
nIndex:需要获得的信息的类型
     值            功能

nIndex取值如下:
GWL_EXSTYLE    得到扩展的窗口风格
GWL_STYLE      得到窗口风格
GWL_WNDPROC    得到窗口回调函数的地址,或者句柄。得到后必须使用CallWindowProc函数来调用 
GWL_HINSTANCE  得到应用程序运行实例的句柄
GWL_HWNDPARENT 得到父窗口的句柄
GWL_ID         得到窗口的标识符
GWL_USERDATA   得到和窗口相关联的32位的值(每一个窗口都有一个有意留给创建窗口的应用程序是用的32位
               的值)

当hWnd标识一个对话框时可以使用下面的值
Value Action 
DWL_DLGPROC   得到对话框回调函数的地址,或者句柄。得到后必须使用CallWindowProc函数来调用 
DWL_MSGRESULT 得到对话框回调函数中消息处理过程的返回值
DWL_USER      得到额外的应用程序私有信息,如一些句柄和指针等

返回值:
成功时,返回一个请求的32位的值
失败时,返回0,可以使用GetLastError来取得错误信息

注意:

/*
* Window field offsets for GetWindowLong()
*/
#define GWL_WNDPROC (-4)
#define GWL_HINSTANCE (-6)
#define GWL_HWNDPARENT (-8)
#define GWL_STYLE (-16)
#define GWL_EXSTYLE (-20)
#define GWL_USERDATA (-21)
#define GWL_ID (-12)

/*
* Get/SetWindowWord/Long offsets for use with WC_DIALOG windows
*/
#define DWL_MSGRESULT 0
#define DWL_DLGPROC 4
#define DWL_USER 8

示例1:
long nStyle = ::GetWindowLong(hWnd, GWL_STYLE);   // hWnd是一个编辑框的句柄
if(nStyle & ES_PASSWORD)
{
    AfxMessageBox("这是一个密码域");
}

 

===========================================

==========SetWindowLong函数介绍==========

===========================================

函数原型 
LONG SetWindowLong(hwnd,nIndex,lNewLong) 
HWND hwnd; /* handle of window */ 
int nIndex; /* offset of value to set */ 
LONG lNewLong; /* new value */


函数说明 
SetWindowLong函数修改给定窗口的一个属性。该函数还在给定窗口的附加窗口内存中 
的指定偏移量处设置一个32位(长)值。


参数详解 
hwnd 
标识窗口,并且间接标只出该窗口的属的窗口类。

nIndex 
指定一个距离要设置的值的以0为基值的偏移量。有效的偏移量范围最小为0,最大为附 
加窗口内存的总字节数减为4,注:整数为四个字节;例如:若附加内存被指定为12个或 
更多个字节,值8将是第3个长整数的索引值。要设置其它值,则应指定下列值之一: 
值 动 作 
============================================================================
GWL_EXSTYLE 设置新的扩展窗口风格。 
GWL_STYLE 设置新的窗口风格 
GWL_WNDPROC 为窗口过程设置新地址。 
GWL_HINSTANCE 设置一个新的应用程序的实例句柄。 
GWL_ID 设置一人新的窗口标识符。 
GWL_USERDATA 设置与窗口相联系的长值。每个窗口都有一个供创建它的应用 
程序使用的与之对应的长值。

当hwnd标识一个对话框时,还可使用下列值: 
值 含 义 
============================================================================
DWL_DLGPROC 设置对话框过程的新地址。 
DWL_MSGRESULT 设置对话框过程所处理的消息的返回值。 
DWL_USER 设置对应用程序来说是私有的新的附加信息:如句柄或打印机 

lNewLong 
指定该替换值。


返回值 
若函数成功,返回值是指定的32位整数的原值;否则,返回值为0。使用GetLastError 
函数可获取补充的错误信息。


注释 
若使用SetWindowLong函数和GWL_WNDPROC索引替换窗口过程,则给定的窗口过程必须遵 
循WindowProc回调函数的说明中指定的准则。 
使用GWL_WNDPROC索引调用SetWindowLong函数可创建该窗口类的子类(窗口类用来创建窗 
口)。应用程序不得用另一个过程的窗口产生子类。 
使用RegisterClass函数,并将WNDCLASS结构的cbWndExtra成员指定为一个非零值,便可 
保留附加窗口内存。 
不得将SetWindowLong与GWL_HWNDPARENT索引一起使用来改变一个子窗口的父窗口。要 
改变子窗口的父窗口,应使用SetParent函数。

posted on 2015-06-11 12:11  FxSoft  阅读(428)  评论(0编辑  收藏  举报