Function Reference

首页  后退  前进

GUICreate

 

创建 GUI 窗口.

 

GUICreate ( "title" [, width [, height [, left = -1 [, top = -1 [, style = -1 [, exStyle = -1 [, parent = 0]]]]]]] )

参数

title

窗口标题.

width

[可选] 窗口宽度.

height

[可选] 窗口高度.

left

[可选] 窗口左侧像素距离. 默认值(default) -1, 窗口居中显示.

若此参数被指定,则参数"顶距"也必须指定.

top

[可选] 窗口上方的像素距离. 默认值(default)为 -1, 窗口居中显示

style

[可选] 指定窗口的显示样式. 见附录 GUI 控件样式表.

   默认值(default) -1,表示下列样式的组合:

$WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU.

   有些样式总是包括: $WS_CLIPSIBLINGS, 与 $WS_SYSMENU 例如 $WS_MAXIMIZEBOX 或 $WS_SIZEBOX.

exStyle

[可选] 指定窗口的扩展样式. 见下面 扩展样式表.

   默认 -1, 无扩展样式.

   强制样式: $WS_EX_WINDOWEDGE

parent

[可选] 另一个已创建窗口的句柄, 此(新创建)窗口将成为该窗口的子窗口.

返回值

成功:

返回窗口句柄.

失败:

返回 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, @GUI_DropId 检索.

$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() 函数将返回一样的结果.

GuiSetState() 前使用 WinMove() 改变 GUI 窗口大小不会改变已定义的控件位置和大小.

相关

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

函数示例

示例 1

#include <GUIConstantsEx.au3>
Example()
Func Example()
    ; Create a GUI with various controls.
    Local $hGUI = GUICreate("Example")
    Local $idOK = GUICtrlCreateButton("OK", 310, 370, 85, 25)
    ; Display the GUI.
    GUISetState(@SW_SHOW, $hGUI)
    ; Loop until the user exits.
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE, $idOK
                ExitLoop
        EndSwitch
    WEnd
    ; Delete the previous GUI and all controls.
    GUIDelete($hGUI)
EndFunc   ;==>Example

示例 2

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Example()
Func Example()
    Local $sFilePath = "..\GUI\logo4.gif"
    ; Create a GUI with various controls.
    Local $hGUI = GUICreate("Example", 400, 100)
    GUICtrlCreatePic("..\GUI\msoobe.jpg", 0, 0, 400, 100)
    ; Display the GUI.
    GUISetState(@SW_SHOW, $hGUI)
    Local $hChild = GUICreate("", 169, 68, 20, 20, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $hGUI)
    ; Create a picture control with a transparent image.
    GUICtrlCreatePic($sFilePath, 0, 0, 169, 68)
    ; Display the child GUI.
    GUISetState(@SW_SHOW)
    ; Loop until the user exits.
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd
    ; Delete the previous GUIs and all controls.
    GUIDelete($hGUI)
    GUIDelete($hChild)
EndFunc   ;==>Example

----------------------------------------