函数说明

GUICreate

创建一个 GUI 窗口。

GUICreate ( "窗口标题" [, 宽度 [, 高度 [, 左侧 [, 上方 [, 风格 [, 扩展风格 [, 父窗口]]]]]]] )

 

参数

窗口标题 窗口标题。
宽度 [可选参数] 窗口宽度。
高度 [可选参数] 窗口高度。
左侧 [可选参数] 窗口左侧离屏幕左边缘的距离(象素)。默认值为 -1,表示窗口将居中显示,若此参数被指定则参数 上方 也必须指定。
上方 [可选参数] 窗口上方离屏幕上边缘的距离(象素)。默认值为 -1,表示窗口将居中显示,
风格 [可选参数] 指定窗口的风格。请查看附录中关于 GUI 控件风格 的说明。

默认值为 -1,表示下列风格的组合:$WS_MINIMIZEBOX、$WS_CAPTION、$WS_POPUP、$WS_SYSMENU。

某些风格总是被包括进去的:$WS_CLIPSIBLINGS;若 $WS_MAXIMIZEBOX 或 $WS_SIZEBOX 被指定则 $WS_SYSMENU 也将被添加到窗口风格中。
扩展风格 [可选参数] 指定窗口的扩展风格。请查看下面的 扩展风格表。默认值为 -1。
父窗口 [可选参数] 另外一个已创建窗口的句柄,此(新创建的)窗口将成为该窗口的子窗口。

 

返回值

成功: 返回窗口句柄。
失败: 返回值为0,说明无法创建窗口,并把 @error 设为 1。

 

注意

在默认设置下创建的窗口是不可调整大小并且是不可最大化的。您可以使用 WS_SIZEBOX 或 WS_MAXIMIZEBOX 来添加相应风格。
若使用了 WS_SIZEBOX 则窗口将以最小尺寸显示,当窗口被调整大小时其所属控件也同时被自动定位。
由于只指定一个风格就只会添加一个风格,所以别忘了和默认的风格组合起来。比如说,如果只是指定 WS_SIZEBOX 那么将没有 WS_MINIMIZEBOX、WS_CAPTION、WS_POPUP、WS_SYSMENU。因此要定义一个可调整大小的窗口最好还是使用 WS_OVERLAPPEDWINDOW。

要在默认风格的基础上添加一个新的风格可使用 BitOr($GUI_SS_DEFAULT_GUI, 新风格,...)。

扩展风格表
扩展风格 结果
$WS_EX_ACCEPTFILES 允许(用户)通过拖放让被创建的GUI窗口中的编辑框/输入控件接受文件名。该控件也必须具有 $GUI_ACCEPTFILES 状态(由 GUICtrlSetState 设置)。
$WS_EX_APPWINDOW 当窗口可见时将一个顶层窗口放到任务栏上。
$WS_EX_CLIENTEDGE 使窗口带有凹陷边框。
$WS_EX_CONTEXTHELP 使窗口标题栏带有一个问号标志,不能和 WS_MAXIMIZEBOX 或 WS_MINIMIZEBOX 同时使用。
$WS_EX_DLGMODALFRAME 创建一个带有双层边框的窗口;对这种窗口还可以在创建时通过在风格参数中指定 WS_CAPTION 风格使其带有标题栏(可选)。
$WS_EX_OVERLAPPEDWINDOW 相当于 WS_EX_CLIENTEDGE 和 WS_EX_WINDOWEDGE 风格的组合。
$WS_EX_STATICEDGE 创建一个带有三维边框风格的窗口,一般用于不接受用户输入的项目。
$WS_EX_TOPMOST 使带有此风格的窗口放置在所有非顶层窗口之上,而且即使在该窗口失去激活状态时还总是保持在它们之上。
$WS_EX_TRANSPARENT 该窗口将透明显示,因为在它下方的同属窗口已被重绘。
$WS_EX_TOOLWINDOW 创建一个工具窗口;也即,一个一般用作浮动工具栏的窗口。工具窗口的标题栏比普通标题栏要短,而且它的窗口标题使用更小的字体。工具窗口在任务栏上不显示按钮,用户按下热键 Alt+Tab 后在弹出的对话框中也不会显示它的图标。如果一个工具窗口拥有系统菜单,那么它的图标不会在其标题栏上显示出来。不过,您可以按下热键 Alt+空格 来显示它的系统菜单。
$WS_EX_WINDOWEDGE 使窗口带有凸起边框。
$WS_EX_LAYERED 创建一个分层的窗口。注意,此风格不能用于子窗口。

要使用上面列出的数值必须先 #include <GUIConstants.au3> 到脚本中。

注意:本函数返回的句柄是真正的窗口句柄,也就是说我们不能像 WinGetHandle 那样使用返回值。

 

相关

GUISet..., GUICtrlCreate..., GUIGetMsg, GUIDelete, WinGetHandle

 

示例


#include <GUIConstants.au3>

GUICreate("我的 GUI")  ; 创建一个居中显示的窗口
GUISetState (@SW_SHOW)       ; 空的窗口

; 运行脚本直到窗口被关闭
While 1
    $msg = GUIGetMsg()
   
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Wend