极语言官方网站

窗口外观——控制消息

整数 图标=加载图像(0,"sec.ico",图标类型,0,0,$10);从文件中加载一个图标,$10标志是从文件加载

发送消息(窗体,设置图标,0,图标);修改窗口标题栏显示的小图标,0是小图标,1是大图标

删除对象(图标);删除加载的图标对象,从而释放读取图标使用的内存

加载图标可以使用系统固有的图标,例如把图标换成整数 图标=载入图标(0,32518)

显示的就是一个盾牌图标;32512默认图标,32513错误图标,32514问号图标,32515警告图标,32516,信息图标


中文名字常量数值英文名称释义
图标重绘$0026WM_PAINTICON当一个最小化的窗口图标将被重绘时发送本消息。
③参数:0;④数据:0
图标背景$0027WM_ICONERASEBKGND本消息发送给某个最小化的窗口,仅当它在画图标前它的背景
必须被重画。③参数:0;④数据:0
打印变化$002AWM_SPOOLERSTATUS每当打印管理列队增加或减少一条作业时就会发出本消息。
③参数:状态;④数据:作业数
外观改变$002BWM_DRAWITEM 按钮、组合框、列表框、菜单的外观改变时会发送本消息给
这些控件的所有者。③参数:控件号;④数据:绘制项目类
改变窗口$0046WM_WINDOWPOSCHANGING本消息会发送给那些大小和位置(Z_Order)将被改变的窗口,
以调用设置窗口函数或其它窗口管理函数。
③参数:0;④数据:WINDOWPOS 结构
窗口变化$0047WM_WINDOWPOSCHANGED本消息会发送给那些大小和位置(Z_Order)已被改变的窗口,
以调用设置窗口函数或其它窗口管理函数。
③参数:0;④数据:WINDOWPOS 结构
改变风格$007CWM_STYLECHANGING将要改变一个或多个窗口的风格时,发送本消息给那个窗口。
③参数:-16窗口样式,-20扩展样式;④数据:STYLESTRUCT 结构
风格变化$007DWM_STYLECHANGED改变一个或多个窗口的风格后,发送本消息给那个窗口。
③参数:-16窗口样式,-20扩展样式;④数据:STYLESTRUCT 结构
窗口图标$007FWM_GETICON本消息发送给某个窗口,
用于返回与某窗口有关联的大图标或小图标的句柄。
③参数:0小图标,1大图标,2生成图标;④数据:DPI大小(16*16)
设置图标$0080WM_SETICON应用程序发送本消息让一个新的大图标或小图标与某窗口相关联。
③参数:0小图标,1大图标;④数据:图标;窗口标题栏是小图标,
“Alt+Tab”对话框中显示大图标


图片类型

中文名字常量英文名称释义
位图类型0IMAGE_BITMAP位图类型(bmp)
图标类型1IMAGE_ICON图标类型(ico)
光标类型2IMAGE_CURSOR光标类型(cur)
强图类型3IMAGE_ENHMETAFILE强图类型(emf)


窗口样式

中文名字英文名称数值作用解释
细线边框WS_BORDER0x00800000窗口具有细线边框
标题栏WS_CAPTION0x00C00000窗口具有标题栏, (包含 WS_BORDER 样式) 。
是子窗口WS_CHILD0x40000000窗口是子窗口。 具有此样式的窗口不能有菜单栏。
此样式不能与 WS_POPUP 样式一起使用。
是子窗口WS_CHILDWINDOW0x40000000与 WS_CHILD 样式相同。
不绘子窗WS_CLIPCHILDREN0x02000000排除在父窗口内进行绘制时子窗口占用的区域。
创建父窗口时使用此样式。
剪裁子窗WS_CLIPSIBLINGS0x04000000相对于彼此剪裁子窗口;重绘时若有不绘子窗样式会将其他
重叠的子窗口剪裁到子窗口的区域之外进行更新。
是否禁用WS_DISABLED0x08000000窗口最初处于禁用状态。 已禁用的窗口无法接收用户的输入。
对话边框WS_DLGFRAME0x00400000窗口具有通常与对话框一起使用的样式的边框。
具有此样式的窗口不能具有标题栏。
分组控制WS_GROUP0x00020000窗口是一组控件的第一个控件。组由第一个控件及其后定义的
所有控件组成,以便用户可以在组之间移动焦点。
水平滚动WS_HSCROLL0x00100000窗口具有水平滚动条。
垂直滚动WS_VSCROLL0x00200000窗口具有垂直滚动条。
最小化WS_ICONIC0x20000000窗口最初最小化。
最大化WS_MAXIMIZE0x01000000窗口最初是最大化的。
最大化钮WS_MAXIMIZEBOX0x00010000窗口有一个“最大化”按钮。
不能与 WS_EX_CONTEXTHELP样式组合使用。
还必须指定 WS_SYSMENU 样式。
最小化WS_MINIMIZE0x20000000窗口最初最小化。
最小化钮WS_MINIMIZEBOX0x00020000窗口有一个最小化按钮。
不能与 WS_EX_CONTEXTHELP样式组合使用。
还必须指定 WS_SYSMENU 样式。
重叠窗口WS_OVERLAPPED0x00000000窗口是重叠的窗口。
重叠窗口WS_TILED0x00000000该窗口是一个重叠的窗口。
标题边框WS_OVERLAPPEDWINDOW0xCF0000重叠的窗口带有标题栏和边框。
标题边框WS_TILEDWINDOW0xCF0000重叠的窗口带有标题栏和边框。
弹出窗口WS_POPUP0x80000000窗口是弹出窗口。 此样式不能与子窗口样式一起使用。
弹出标题WS_POPUPWINDOW0x80880000窗口是弹出窗口带有菜单栏和细线边框。
可调边框WS_SIZEBOX0x00040000窗口具有大小调整边框。
可调边框WS_THICKFRAME0x00040000窗口具有调整大小边框。
系统菜单WS_SYSMENU0x00080000窗口的标题栏上有一个窗口菜单。
还必须指定 WS_CAPTION 样式。
制表选择WS_TABSTOP0x00010000窗口是一个控件,当用户按下 TAB 键时,
该控件可以接收键盘焦点。
是否可见WS_VISIBLE0x10000000该窗口最初是可见的。


窗口扩展样式

中文名字英文名称数值作用解释
双边窗口WS_EX_DLGMODALFRAME1窗口有一个双边框
总在顶层WS_EX_TOPMOST8窗口应放置在所有非最顶部窗口的上方
文件拖曳WS_EX_ACCEPTFILES0x10窗口接受拖放文件。
窗口透明WS_EX_TRANSPARENT0x20窗口显示为透明,因为基础同级窗口的位已被绘制。
MDI 窗口WS_EX_MDICHILD0x40该窗口是 MDI 子窗口。
小标题栏WS_EX_TOOLWINDOW0x80工具窗口具有短于普通标题栏的标题栏
和使用较小的字体绘制的窗口标题。
凸起边缘WS_EX_WINDOWEDGE0x100窗口的边框带有凸起的边缘。
阴影边界WS_EX_CLIENTEDGE0x200窗口有一个带有凹陷边缘的边框。
问号帮助WS_EX_CONTEXTHELP0x400窗口的标题栏包含问号。
单击时光标将变成带指针的问号。
随后单击子窗口将收到 WM_HELP 消息。
导航子窗WS_EX_CONTROLPARENT0x10000包含参与对话框导航的子窗口。
执行导航操作(例如处理 TAB 键、箭头键或
键盘助记键)时,对话管理器将递归为此窗口的子级。
静态边框WS_EX_STATICEDGE0x20000窗口具有三维边框样式
旨在用于不接受用户输入的项。
到任务栏WS_EX_APPWINDOW0x40000在顶级窗口可见时强行将其放在任务栏上。
分层窗口WS_EX_LAYERED0x80000该窗口是一个分层窗口。
不重定向WS_EX_NOREDIRECTIONBITMAP0x00200000窗口不会呈现到重定向图面。
这适用于没有可见内容或使用表面以外的机制提供其
视觉对象的窗口。
后台窗口WS_EX_NOACTIVATE0x8000000创建的顶级窗口不会成为前台窗口。


中文名字英文名称长度作用解释
窗口外观类CREATESTRUCT48定义了传递给应用程序的窗口过程的初始化参数,它定义了窗口外观相关特性
窗口外观类——成员表
参数lpCreateParams整数指向将被用于创建窗口的数据的指针
实例hInstance整数标识了拥有新窗口的模块的模块实例的句柄
菜单hMenu整数标识了要被用于新窗口的菜单。如果是子窗口,则包含整数ID。
父窗hwndParent整数父窗口句柄
高度cy整数指定新窗口的高度
宽度cx整数指定新窗口的宽度
顶部y整数指定新窗口的左上角y坐标
左边x整数指定新窗口的左上角x坐标
风格style整数指定了新窗口的风格。
名称lpszName整数指定了新窗口的名字
类名lpszClass整数指定了新窗口的类名
扩展dwExStyle整数指定了新窗口的扩展风格


修改窗口类的值——控制外观

示例1:

修改窗口背景颜色

整数 红刷=创建画刷($FF);创建一个红色的画刷(用来填充颜色)

修改类值(窗体, 类背景色, 红刷);修改窗体的背景颜色为红色

重绘矩形(窗体, 0, 1)重绘窗体擦除背景,从而显示新的背景色

画刷可以使用系统固有的,有0-15种,把红刷改成整数 红刷=取控件数(窗体,1,0,0)

这里假定文本框的编号为1,在文本框里输入0-15的数字,可以修改查看修改窗体背景颜色的效果

示例2:

修改窗口光标

整数 光标=加载图像(0,"sec.cur",光标类型,0,0,$10);从文件中加载一个图标,$10标志是从文件加载

修改类值(窗体,窗类光标,光标);修改窗体的光标为指定的cur文件

删除对象(图标);删除加载的图标对象,从而释放读取图标使用的内存

加载光标可以使用系统固有的光标,例如把光标换成整数 光标=载入光标(0,32649)

显示的就是一个手形光标;

32512 箭头

32513 文本I

32514 转圈(忙)

32515 十字

32516 向上

32631 笔形

32642 左上右下对角线

32643 右上左下对角线

32644 水平调整

32645 垂直调整

32646 移动光标

32648 禁止

32649 链接

32650 后台工作

32651 帮助

32671 定位

32672 人员

中文名字常量数值英文名称释义
类菜单名-8GCL_MENUNAME获取/替换菜单名字符串的地址。
类背景色-10GCL_HBRBACKGROUND获取/替换与类有关的背景刷子的句柄。
窗类光标-12GCL_HCURSOR获取/替换与类有关的光标的句柄。
窗类图标-14GCL_HICON获取/替换与类有关的图标的句柄。
窗类模块-16GCL_HMODULE获取/替换注册类的模块的句柄。
窗类内存-18GCL_CBWNDEXTRA获得/修改与类中的每个窗口相关的额外窗口中内存空间的字节大小
窗类尺寸-20GCL_CBCLSEXTRA设置与类相关的尺寸的大小。不改变己分配的额外字节数。
窗类过程-24GCL_WNDPROC获取/替换与窗口类有关的窗口过程的地址。
窗类风格-26GCL_STYLE获取/替换窗口类的风格位。
窗类原子-32GCW_ATOM获得一个唯一标识窗口类的原子值
类小图标-34GCL_HICONSM获得与类有关的小图标句柄。


修改窗口属性——外观指针


改窗口值(窗体,窗口过程,@消息函数);为窗口过程设置新的函数地址。

改窗口值(窗体,窗口扩展,$200);修改窗体的扩展窗口风格为3D边框

改窗口值(窗体,窗口数值,数据);修改窗体的定义数值为指定数据

中文名字常量数值英文名称释义
窗口过程-4GWL_WNDPROC获得/修改窗口过程的地址
窗口实例-6GWL_HINSTANCE获得/修改应用事例的句柄。
窗口父级-8GWL_HWNDPARENT获得/修改父窗口句柄。
窗口风格-16GWL_STYLE获/修改得窗口风格。
窗口扩展-20GWL_EXSTYLE获得/修改扩展窗口风格。
窗口数值-21GWL_USERDATA获得/修改与窗口有关的定义数值。
窗口标识-12GWL_ID获得/修改窗口标识。
对话消息0DWL_MSGRESULT获得/修改在对话框过程中一个消息处理的返回值。
对话过程4DWL_DLGPROC获得/修改对话框过程的地址
对话定义8DWL_USER获得/修改应用程序私有的额外信息,例如一个句柄或指针。


修改窗口显示


显隐窗口(窗体,窗口最小);激活窗口并将其最小化。

显隐窗口(窗体,窗口隐藏);隐藏窗口并激活其他窗口。

显隐窗口(窗体,窗口显示);激活窗口并恢复原来的尺寸。

中文名字常量数值英文名称释义
窗口隐藏0SW_HIDE隐藏窗口并激活其他窗口。常用于显隐窗口
恢复原来1SW_SHOWNORMAL激活并显示一个窗口。如果窗口被最小化或最大化,
系统将其恢复到原来的尺寸和大小。
窗口最小2SW_SHOWMINIMIZED激活窗口并将其最小化。
窗口最大3SW_SHOWMAXIMIZED激活窗口并将其最大化
恢复最近4SW_SHOWNOACTIVATE以窗口最近一次的大小和状态显示窗口。激活窗口仍然维持激活状态。
窗口显示5SW_SHOW在窗口原来的位置以原来的尺寸激活和显示窗口。
最小切换6SW_MINIMIZE最小化指定的窗口并且激活在Z序中的下一个顶层窗口。
最小激活7SW_SHOWMINNOACTIVE窗口最小化,激活窗口仍然维持激活状态。
恢复激活8SW_SHOWNA以窗口原来的状态显示窗口。激活窗口仍然维持激活状态。
激活原来9SW_RESTORE激活并显示窗口。如果窗口最小化或最大化,
则系统将窗口恢复到原来的尺寸和位置。
恢复设定10SW_SHOWDEFAULT依据在STARTUPINFO结构中指定的SW_FLAG标志设定显示状态


修改窗口大小位置和显示隐藏


设置窗口(标签1,0,0,0,0,0,$23);在窗口周围画一个边框。尺寸位置不变

设置窗口(窗口,0,左,顶,0,0,1);设置窗口的位置,忽略宽高

设置窗口(窗口,0,0,0,宽,高,2);设置窗口的宽高,忽略位置。

中文名字常量数值英文名称释义
保持尺寸$0001SWP_NOSIZE维持当前尺寸(忽略宽高参数)。常用于设置窗口
保持位置$0002SWP_NOMOVE维持当前位置(忽略左顶参数)。
保持层序$0004SWP_NOZORDER维持当前Z序。
保持图像$0008SWP_NOREDRAW不重画改变的内容。如果设置了这个标志,则不发生任何重画动作。
保持状态$0010SWP_NOACTIVATE不激活窗口。
增加边框$0020SWP_DRAWFRAME在窗口周围画一个边框(定义在窗口类描述中)。
显现窗口$0040SWP_SHOWWINDOW显示窗口
隐藏窗口$0080SWP_HIDEWINDOW隐藏窗口
清空窗口$0100SWP_NOCOPYBITS清除客户区窗口的所有内容。
不变顺序$0200SWP_NOREPOSITION不改变z序中的所有者窗口的位置。
防止同步$2000SWP_DEFERERASE防止产生同步消息。
防止死锁$4000SWP_ASYNCWINDOWPOS如果进程没有窗口,系统会向有窗口的线程发出消息。
防止在其他线程处理消息时发生死锁。


修改窗口层序


设置窗口(标签1,0,0,0,0,0,3);设置窗口显示在上层。尺寸位置不变

设置窗口(标签1,-1,0,0,0,0,3);设置窗口显示在最顶层。尺寸位置不变

中文名字常量数值英文名称释义
移至顶序0HWND_TOP将窗口置于Z序的顶部。常用于设置窗口
移至底层1HWND_BOTTOM将窗口置于Z序的底部。
顶层窗口失去顶级位置,并且被置在其他窗口的底部。
移至顶层-1HWND_TOPMOST将窗口置于所有非顶层窗口之上。
即使窗口未被激活窗口也将保持顶级位置。
移至顶后-2HWND_NOTOPMOST将窗口置于所有非顶层窗口之上(即在所有顶层窗口之后)。


查找指定窗口的指定关系窗口


整数 窗口=获取窗口(窗体,同级首个);查找窗体同级别第一个窗口

整数 窗口=获取窗口(窗体,同级最后);查找窗体同级别最后一个窗口

使用更多的是查找窗口:整数 窗口=查找窗口(0,窗口名)

中文名字常量数值英文名称释义
同级首个0GW_HWNDFIRST同级别第一个,常用于GetWindow
同级最后1GW_HWNDLAST同级别最后一个
同级下个2GW_HWNDNEXT同级别下一个
同级上个3GW_HWNDPREV同级别上一个
从主窗口4GW_OWNER属主窗口
属子窗口5GW_CHILD查子窗口
属弹出窗6GW_ENABLEDPOPUP查弹出窗