SetWindowLong 设置窗口

设置窗口的风格属性。

Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
参数 意义 类型
nIndex 欲设置的窗口属性  
dwNewLong 指定属性的新值  

nIndex 可用值

常量 意义
GWL_WNDPROC  -4 窗口过程地址
GWL_HINSTANCE  -6 应用程序事例句柄
GWL_HWNDPARENT  -8  
GWL_STYLE  -16 窗口风格
GWL_EXSTYLE  -20 窗口扩展风格
GWL_USERDATA  -21 与窗口有关的 32 位值
GWL_ID  -12 窗口标识符

GWL_EXSTYLE 可用值

常量 意义
WS_EX_DLGMODALFRAME 1 窗口具有双层边框
WS_EX_NOPARENTNOTIFY 4 子窗口在创建和销毁时,不向其父窗口发送WM_PARENTNOTIFY消息
WS_EX_TOPMOST 8 该窗口出现在最顶级
WS_EX_ACCEPTFILES $10 接受拖拽文件
WS_EX_TRANSPARENT $20 透明窗口,直到其下层窗口被重绘时其才重绘
WS_EX_MDICHILD $40 产生 MID 窗口
WS_EX_TOOLWINDOW $80 产生一个工具窗口,并不出现在任务栏上
WS_EX_WINDOWEDGE $100 指定窗口边框的边缘加高
WS_EX_CLIENTEDGE $200 指定窗口边框的边缘下沉
WS_EX_CONTEXTHELP $400 窗口标题栏上,当用户点击时出现“这是什么”的光标
WS_EX_SHOWKEYB   指定窗口边框边缘
WS_EX_RIGHT $1000 右对齐窗口
WS_EX_LEFT 0  左对齐窗口,这是默认值
WS_EX_RTLREADING $2000 使用由右至左的阅读排列文字格式
WS_EX_LTRREADING 0  使用由左至右的阅读排列文字格式
WS_EX_LEFTSCROLLBAR $4000 如是RTLREADING方式,纵向滚动条放在左边
WS_EX_RIGHTSCROLLBAR 0  默认的滚动条在右边
WS_EX_STATICEDGE   不接受用户输入的静态类型
WS_EX_APPWINDOW   当窗口可见时,强制顶级窗口出现在任务条上
WS_EX_LAYERED   WS_EX_OVERLAPPEDWINDOW WS_EX_CLIENTEDGE 与WS_EX_WINDOWEDGE 风格的合集
WS_EX_PALETTEWINDOW   WS_EX_WINDOWEDGE WS_EX_TOOLWINDOW 与WS_EX_TOPMOST风格的合集

GWL_STYLE 可用值

常量 意义
WS_BORDER $800000 窄边框
WS_CAPTION $C00000 有标题栏
WS_CHILD $40000000 创建子窗口。此风格不能与WS_POPUS共用
WS_CHILDWINDOW   与 WS_CHILD 相同
WS_CLIPCHILDREN $2000000 在父窗口绘图时不考虑被子窗口占据的部分
WS_CLIPSIBLINGS $4000000 使子窗口互相关联,当一个子窗口发出WM_PAINT消息时,其它重叠窗口不受影响
WS_DISABLED $8000000 不能接受用户输入的“死”窗口
WS_DLGFRAME $400000 对话框型的边框
WS_GROUP $20000 指定第一群组控制
WS_HSCROLL $100000 有横向的滚动条
WS_ICONIC   初始化为最小化的窗口
WS_MAXIMIZE $1000000 初始化为最大化的窗口
WS_MAXIMIZEBOX   有最大化按钮
WS_MINIMIZEBOX   同WS_ICONIC
WS_OVERLAPPED 0 重叠类型的窗口
WS_POPUP $80000000 弹出类型的窗口
WS_SYSMENU $80000 标题栏上有菜单
WS_TILED   同WS_OVERLAPPED
WS_VISIBLE $10000000 初使化即为可见的
WS_VSCROLL $200000 有纵向的滚动条
WS_MINIMIZE  $20000000  
WS_THICKFRAME  $40000  
WS_TABSTOP $10000