基 础 函 数 参 考


GUICreate

创建 GUI 窗口.

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

参 数

标题 窗口标题.
宽度 [可选参数] 窗口宽度.
高度 [可选参数] 窗口高度.
左距 [可选参数] 窗口左侧像素距离. 默认值(default) -1, 窗口居中显示.
若此参数被指定,则参数"顶距"也必须指定.
顶距 [可选参数] 窗口上方的像素距离. 默认值(default)为 -1, 窗口居中显示
样式 [可选参数] 指定窗口的显示样式. 见附录 GUI 控件样式表.
默认值(default) -1,表示下列样式的组合:
$WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU.
有些样式总是包括: $WS_CLIPSIBLINGS, 与 $WS_SYSMENU 例如 $WS_MAXIMIZEBOX 或 $WS_SIZEBOX.
扩展样式 [可选参数] 指定窗口的扩展样式. 见下面 扩展样式表. 默认值(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 样式可避免一些窗口闪烁, 例如调整包含编辑控件的 GUI 大小时.
使用 $WS_EX_CONTROLPARENT 扩展样式参数, 可以对没有 $WS_CAPTION 样式的 GUI 启用窗口拖动操作.

要在默认样式上添加新样式, 可使用 BitOr($GUI_SS_DEFAULT_GUI, 新样式,...) 语句.
指定的大小是窗囗客户区域的大小. 边框和标题栏将略大于指定的窗口大小. 使用菜单控件将改变窗口的高度.

扩展样式表


扩展样式表 结果
$WS_EX_ACCEPTFILES 允许 GUI 的编辑框/输入控件接受文件的拖放操作.
但控件必须由 GUICtrlSetState设置 $GUI_DROPACCEPTED 状态.
其它控件的拖放信息可以由 @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 多文档界面).
$WS_EX_OVERLAPPEDWINDOW WS_EX_CLIENTEDGE 与 WS_EX_WINDOWEDGE 的组合样式.
$WS_EX_STATICEDGE 创建三维边框样式的窗口, 用于不接受用户输入的项目.
$WS_EX_TOPMOST 创建的窗口即使失去激活状态, 也始终在所有非顶层窗口之上.
$WS_EX_TRANSPARENT 使窗口透明显示, 它下方的同属窗口已经被重绘.
$WS_EX_TOOLWINDOW 创建工具窗口, 作为浮动工具栏使用. 工具窗口的标题栏比普通标题栏要短, 标题使用更小的字体.
按下 ALT+TAB 快捷键时, 此窗口不会出现在任务栏中或对话框中.
如果工具窗口有系统菜单, 图标不会显示在标题栏中. 但点击 ALT+SPACE 可显示系统菜单.
$WS_EX_WINDOWEDGE 窗口带有凸起边框.
$WS_EX_LAYERED 创建分层窗口. 注意此样式不能用于子窗口.

使用上面列出的值必须将 #include <WindowsConstants.au3> 语句写入脚本中.

注意:本函数返回的句柄是真正的 windows 窗口句柄, 使用 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("我的 GUI") ; 创建居中显示的 GUI 窗口
    GUISetState(@SW_SHOW) ; 显示一个空白的窗口

    ; 运行 GUI, 直到 GUI 被关闭
    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

provider with jb51.net (unicode)