函数参考


GUICreate

创建一个 GUI 窗口.

GUICreate ( "窗口标题" [, 宽度 [, 高度 [, 左侧 [, 顶部 [, 样式 [, 扩展样式 [, 父窗口]]]]]]] )

参数

窗口标题 对话框窗口标题.
宽度 [可选参数] 窗口宽度.
高度 [可选参数] 窗口高度.
左侧 [可选参数] 窗口左侧离屏幕左边缘的距离(像素).默认值(default)为 -1,表示窗口将居中显示,若此参数被定义则参数 顶部 也必须定义.
顶部 [可选参数] 窗口上方离屏幕上边缘的距离(像素).默认值(default)为 -1,表示窗口将居中显示.
样式 [可选参数] 指定窗口的显示样式.请查看附录中关于 GUI 控件样式 的说明.
默认值(default)为-1,表示下列样式的组合:$WS_MINIMIZEBOX,$WS_CAPTION,$WS_POPUP,$WS_SYSMENU.
某些样式总是被包括进去的:$WS_CLIPSIBLINGS,若有 $WS_MAXIMIZEBOX 或 $WS_SIZEBOX 则 $WS_SYSMENU 也将被添加到窗口样式中.
扩展样式 [可选参数] 指定窗口的扩展样式.请参考下方的 扩展样式表.默认值(default)为 -1.
父窗口 [可选参数] 另外一个已创建窗口的句柄,此(新创建的)窗口将成为该窗口的子窗口.

返回值

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

注意/说明

在默认设置下创建的窗口是不可调整大小并且是不可最大化的.您可以使用 WS_SIZEBOX 或 WS_MAXIMIZEBOX 来添加到样式参数.
由于只指定一个样式就只会添加一个样式,所以别忘了和默认的样式组合起来.比如说,如果只是指定 WS_SIZEBOX 那么将没有 WS_MINIMIZEBOX,WS_CAPTION,WS_POPUP,WS_SYSMENU.因此要定义一个可调整大小的窗口最好还是使用 WS_OVERLAPPEDWINDOW.
当使用 $WS_EX_MDICHILD 样式时,子窗体的坐标将会相对于父窗体的客户区. 使用 $WS_EX_LAYERED 可以使用一个透明图片背景定义于父窗口.
添加 $WS_CLIPCHILDREN 样式可以避免一些窗口闪烁,例如重设一个包含编辑控件的窗口大小时.
你可以启用窗口拖放.不添加 $WS_CAPTION 并使用 $WS_EX_CONTROLPARENT 于扩展样式参数.

要在默认样式的基础上添加一个新的样式可使用 BitOr($GUI_SS_DEFAULT_GUI, 新样式,...).
指定窗口大小只是定义窗口客户区的大小. 边框和标题栏的大小不算在里面. 使用菜单控件也会改变窗口的高度.(都在客户区)

扩展样式表


扩展样式 结果
$WS_EX_ACCEPTFILES 允许(用户)通过拖放让被创建的GUI窗口中的编辑框/输入控件接受文件名.该控件也必须具有 $GUI_DROPACCEPTED 状态,可由 GUICtrlSetState 函数设置. 其它控件的拖放信息可以由 @GUI_DRAGID, @GUI_DRAGFILE, @GUIDROPID返回.
$WS_EX_APPWINDOW 当窗口可见时将一个顶层窗口放到任务栏上.
$WS_EX_CLIENTEDGE 使窗口带有凹陷边框.
$WS_EX_CONTEXTHELP 使窗口标题栏带有一个问号标志,不能和 WS_MAXIMIZEBOX 或 WS_MINIMIZEBOX 同时使用.
$WS_EX_DLGMODALFRAME 创建一个带有双层边框的窗口;对这种窗口还可以在创建时通过在样式参数中指定 WS_CAPTION 样式使其带有标题栏(可选).
$WS_EX_MDICHILD 创建一个包含于父窗体的子窗体.(模拟MDI,但不是真正的MDI).
$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 <WindowsConstants.au3> 到脚本中.

注意:本函数返回的句柄是真正的窗口句柄,也就是说我们可以使用于像 WinGetHandle 那样的函数.

相关

GUISetParameters..., GUICtrlCreate..., GUIGetMsg, GUISwitch, GUIGetStyle, GUIDelete, WinGetHandle, GUICtrlSetDefBkColor, GUICtrlSetDefColor, GUIGetCursorInfo

示例/演示


#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Example1()
Example2()

;示例 1
Func Example1()
    Local $msg

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

    ; 运行界面,直到窗口被关闭
    While 1
        $msg = GUIGetMsg()

        If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd
    GUIDelete()
EndFunc   ;==>Example1

;示例 2
Func Example2()
    Local $sFile = "..\GUI\logo4.gif"

    Local $gui = GUICreate("Background", 400, 100)
    ; 创建背景图片
    GUICtrlCreatePic("..\GUI\msoobe.jpg", 0, 0, 400, 100)

    GUISetState(@SW_SHOW)

    ; 创建透明的 MDI子窗口
    GUICreate("", 169, 68, 20, 20, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $gui)
    ; 透明图片
    GUICtrlCreatePic($sFile, 0, 0, 169, 68)
    GUISetState(@SW_SHOW)

    Do
        Local $msg = GUIGetMsg()

    Until $msg = $GUI_EVENT_CLOSE
EndFunc   ;==>Example2