控制窗口大小例子
;功能:控制窗口最小尺寸100 x 100,最大尺寸400 x 400Global Const $WM_GETMINMAXINFO = 0x0024
$Gui = GUICreate("控制窗口大小", 300, 300, -1, -1, 0x00040000) ;$WS_SIZEBOX
GUISetState()
GUIRegisterMsg($WM_GETMINMAXINFO, "WM_GETMINMAXINFO")
Do
Until GUIGetMsg() = -3
Func WM_GETMINMAXINFO($hwnd, $Msg, $wparam, $lparam)
Local $tagMINMAXINFO = "int;int;int;int;int;int;int;int;int;int"
$MINMAXINFO = DllStructCreate($tagMINMAXINFO, $lparam)
DllStructSetData($MINMAXINFO,7,100) ;minx
DllStructSetData($MINMAXINFO,8,100) ;miny
DllStructSetData($MINMAXINFO,9,400) ;maxx
DllStructSetData($MINMAXINFO,10,400) ;maxy
EndFunc ;==>WM_GETMINMAXINFO
回复 3# 风行者
恩,谢谢 回复 1# 风行者
哈喽,帅哥,你停靠边栏触发研究的咋样了?
能否分享点经验 回复 2# Ycxw2008
你说这个么?窗口收缩
$hForm = GUICreate('My GUI',250,600)
GUISetState()
While GUIGetMsg() <> -3
_WinHide($hForm)
Sleep(10)
WEnd
Func _WinHide($Hwnd)
$Wp = WinGetPos($hForm)
$Mp = MouseGetPos()
Select
Case $Wp <=3
If ($Mp<$Wp Or $Mp > $Wp+$Wp or $Mp > $Wp+$Wp) Then
WinMove($Hwnd,"",$Wp,3-$Wp,$Wp,$Wp,1)
Else
WinMove($Hwnd,"",$Wp,3,$Wp,$Wp,1)
EndIf
Case $Wp >= (@DesktopWidth - $Wp+3)
If ($Mp<$Wp Or $Mp < $Wp Or $Mp > $Wp+$Wp) Then
WinMove($Hwnd,"",@DesktopWidth - 3,$Wp,$Wp,$Wp,1)
Else
WinMove($Hwnd,"",@DesktopWidth - $Wp+3,$Wp,$Wp,$Wp,1)
EndIf
EndSelect
EndFunc 谢谢分享经验! 收藏备用,哈 嗯嗯,不错,两天就搞定,呵呵 谢谢提供,不错
不过查了一下结构,注释有点问题
typedef struct tagMINMAXINFO {
POINT ptReserved;
POINT ptMaxSize;
POINT ptMaxPosition;
POINT ptMinTrackSize;
POINT ptMaxTrackSize;
} MINMAXINFO, *PMINMAXINFO, *LPMINMAXINFO;
7,8,9,10不是minx,miny,maxx,maxy
应该是
MinTrackSize,MaxTrackSize
即鼠标拖动的最小最大尺寸 不错,收下了 回复 3# 风行者
不错。
不过同时靠右和靠上的情况(即右上角)还可以再处理下。 回复 3# 风行者
强大,我测试左边和下边不行呢?请指教。谢谢! 学习学习...... 谢谢分享!学习了... 谢谢分享{:face (361):} 这个不错,谢谢提供,
页:
[1]
2