写了一个最小化到系统栏+还原,请教还有更好的办法么?
本帖最后由 KLU3K 于 2009-5-25 18:24 编辑1. 感觉代码比较长,有简洁一些的写法么?主要就是最小化和还原功能的精简(23-35行的精简办法)。
2. 还原功能目前有瑕疵,在Win7下测试有时候是比较平滑的,有时候会从莫名其妙的地方还原回来。不稳定,有什么办法解决?
3. 点击系统栏图标后让窗口最小化到系统栏怎么写?
include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
Opt("GUIOnEventMode", 1)
Opt("TrayOnEventMode", 1)
Opt("TrayMenuMode", 1)
$Form1 = GUICreate("Form1", 180, 180, -1, -1)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1Minimize")
TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN, "Form1RESTORE")
GUISetState(@SW_SHOW)
While 1
Sleep(100)
WEnd
Func Form1Close()
Exit
EndFunc ;==>Form1Close
Func Form1Minimize()
Select
Case @GUI_CtrlId = $GUI_EVENT_MINIMIZE
GUISetState(@SW_HIDE, $Form1)
EndSelect
EndFunc ;==>Form1Minimize
Func Form1RESTORE()
Select
Case @TRAY_ID = $TRAY_EVENT_PRIMARYDOWN
GUISetState(@SW_SHOW, $Form1)
EndSelect
EndFunc ;==>Form1RESTORE
本帖最后由 sensel 于 2009-5-25 03:07 编辑
看不懂。最小化事件后还要判断控件ID?难道你的窗口上还有别的控件会产生最小化事件?
至于点击系统栏图标来显示/隐藏主窗口,获得$TRAY_EVENT_PRIMARYDOWN事件后判断一下窗口当前状态,如果显示则隐藏,否则反之。
下面的代码,那2条最小化和恢复,是为了做出窗口动画效果。
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
Opt("GUIOnEventMode", 1)
Opt("TrayOnEventMode", 1)
Opt("TrayMenuMode", 1)
$Form1 = GUICreate("Form1", 180, 180, -1, -1)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1Minimize")
TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN, "Form1RESTORE")
GUISetState(@SW_SHOW)
While 1
Sleep(100)
WEnd
Func Form1Close()
Exit
EndFunc ;==>Form1Close
Func Form1Minimize()
GUISetState(@SW_HIDE, $Form1)
EndFunc ;==>Form1Minimize
Func Form1RESTORE()
If BitAND(WinGetState($Form1), 2) Then
GUISetState(@SW_MINIMIZE, $Form1)
GUISetState(@SW_HIDE, $Form1)
Else
GUISetState(@SW_RESTORE, $Form1)
GUISetState(@SW_SHOW, $Form1)
EndIf
EndFunc ;==>Form1RESTORE 怎么没有最大化和恢复 怎么没有最大化和恢复
17911 发表于 2009-5-25 11:09 http://www.autoitx.com/images/common/back.gif
去看帮助文件GUICreate函数说明,风格部分。 最大化和恢复#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 633, 447, 192, 124,$WS_OVERLAPPEDWINDOW)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd在默认设置下创建的窗口是不可调整大小并且是不可最大化的.您可以使用 WS_SIZEBOX 或 WS_MAXIMIZEBOX 来添加相应样式.
由于只指定一个风格就只会添加一个样式,所以别忘了和默认的样式组合起来.比如说,如果只是指定 WS_SIZEBOX 那么将没有 WS_MINIMIZEBOX、WS_CAPTION、WS_POPUP、WS_SYSMENU.因此要定义一个可调整大小的窗口最好还是使用 WS_OVERLAPPEDWINDOW.
要在默认风格的基础上添加一个新的样式可使用 BitOr($GUI_SS_DEFAULT_GUI, 新样式,...). 受教了,谢谢 学习一下 0.0 貌似不错的样子
页:
[1]