可拉伸Gui简单示例函数.ahk
; https://www.autohotkey.com/boards/viewtopic.php?p=545039#p545039
#NoEnv
SetBatchLines -1
SetWorkingDir %A_ScriptDir%
#SingleInstance Force
;*******************************************
Gui1 := {}
Gui1.Scale := 1
;*******************************************
Gui, New, +AlwaysOnTop +hwndhwnd -DPIScale +Resize
Gui1.Hwnd := hwnd
;*******************************************
Gui1.MarginX := 10
Gui1.MarginY := 10
Gui, % Gui1.Hwnd ":Margin", % Gui1.MarginX , % Gui1.MarginY
;*******************************************
Gui1.FontType := "Segoe UI"
Gui1.FontSize := 9
Gui1.FontColor := "000000"
Gui1.FontOptions := ""
SetWindowFont( Gui1 )
;;*******************************************
Gui1.Controls := {}
;-----------------------------------------------------------------------------------
;Control Name Parent Object , Control Type , Options , Display Value , Rows
;-----------------------------------------------------------------------------------
;-----------------------------------------------------------------------------------
Gui1.Controls.ColorListBox := CreateControl(Gui1, "ListBox", "xm ym w250 h200 Multi", "hwnd|posX||posY|posW|posH|Type|WinObj|DisplayValue|Options|")
Gui1.Controls.CheckMeCheckBox := CreateControl(Gui1, "Checkbox", "x+m yp Checked section ", "Check Me!")
Gui1.Controls.HideButton := CreateControl(Gui1, "Button", "xs y+m wp", "Hide")
Gui1.Controls.ShowButton := CreateControl(Gui1, "Button", "xs y+m wp", "Show")
Gui1.Controls.Option1Radio := CreateControl(Gui1, "Radio", "xs y+m wp Checked", "Option 1")
Gui1.Controls.Option2Radio := CreateControl(Gui1, "Radio", "xs y+m wp", "Option 2")
Gui1.Controls.TTestDDL := CreateControl(Gui1, "DDL", "xs y+m w200 r10", "Item||Item|Item|Item|Item|Item|Item|Item|Item|Item|Item|", 10)
;-----------------------------------------------------------------------------------
;-----------------------------------------------------------------------------------
Gui, Show, AutoSize , Scale via +Resize
;;*******************************************
WinGetPos,,, w , h , % "ahk_id " Gui1.Hwnd
Gui1.W := w
Gui1.H := h
;;*******************************************
Gui1.Scale := A_ScreenDPI / 96
ScaleControls( Gui1 , Gui1.Scale )
;;*******************************************
return ;<<<<---- End of the auto-exectute section of the script.
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Exit Routine
GuiClose:
GuiContextMenu:
*ESC::ExitApp
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +RESIZE
GuiSize:
if( !init && init := 1 )
return
WinGetPos,,, w, h , % "ahk_id " Gui1.Hwnd
Gui1.Scale := w / Gui1.W
ScaleControls( Gui1 , Gui1.Scale )
sleep, 30
return
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% HOTKEYS
F1:: ScaleControls( Gui1 , Gui1.Scale := 1 )
;;*******************************************
F2:: ScaleControls( Gui1 , Gui1.Scale := 1.5 )
;;*******************************************
F3:: ScaleControls( Gui1 , Gui1.Scale := 2 )
;;*******************************************
F4:: ScaleControls( Gui1 , Gui1.Scale := .7 )
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Functions
ScaleControls( Gui1 , Scale := 1 ){
static lastSize
for k , v in Gui1.Controls {
cc := Gui1.Controls[ k ]
x := cc.X * Scale
y := cc.Y * Scale
w := cc.W * Scale
if( cc.Rows )
h := cc.Rows * GetRowHeight( cc.FontType , size , cc.FontOptions )
else
h := cc.H * Scale
size := ( cc.FontSize / ( A_ScreenDPI / 96 ) ) * scale
if( size != lastSize && lastSize := Size )
Gui, % Gui1.Hwnd ":Font" , % "norm s" size " c" cc.FontColor " " cc.FontOptions , % cc.FontType
GuiControl, % Gui1.Hwnd ":Font" , % cc.Hwnd
GuiControl, % Gui1.Hwnd ":MoveDraw" , % cc.Hwnd , % "x" X " y" Y " w" W " h" H
}
Gui, % Gui1.hwnd ":Margin", % Gui1.MarginX * scale , % Gui1.MarginY * scale
Gui, % Gui1.Hwnd ":Show" , AutoSize
}
;;*******************************************
GetRowHeight( FontType , FontSize , FontOptions ){
Gui, Dummy:Font, % "s" FontSize " " FontOptions , % FontType
Gui, Dummy:Add, Text,, % "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyyYzZ1!2@3#4$5%6^7&8*9(0)-_=+[{]}\|,<.>/?"
GuiControlGet, pos , Dummy:pos , static1
Gui, Dummy:Destroy
return posH
}
;;*******************************************
SetWindowFont( Gui1 ){
local size := Gui1.FontSize / ( A_ScreenDPI / 96 )
Gui, % Gui1.Hwnd ":Font" , % "norm s" size " c" Gui1.FontColor " " Gui1.FontOptions , % Gui1.FontType
}
;;*******************************************
CreateControl( WinObj , Type := "Button" , Options := "" , DisplayValue := "" , Rows := "" ){
local obj := {}
Gui, % WinObj.Hwnd ":Add" , % Type , % Options " +hwndhwnd" , % DisplayValue
GuiControlGet, pos , % WinObj.Hwnd ":pos" , % hwnd
obj.Hwnd := hwnd
obj.Rows := Rows
obj.X := posX
obj.Y := posY
obj.W := posW
obj.H := posH
obj.Type := Type
obj.Parent := WinObj.Hwnd
obj.DisplayValue := DisplayValue
obj.Options := Options
obj.FontType := WinObj.FontType
obj.FontSize := WinObj.FontSize
obj.FontColor := WinObj.FontColor
obj.FontOptions := WinObj.FontOptions
return obj
}
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。

评论(0)