找回密码
 加入
搜索
查看: 4919|回复: 10

[GUI管理] 一个可以缩放的窗体,能不能控制当缩到一定大小之后就不可以缩放了呢

  [复制链接]
发表于 2011-5-10 15:18:56 | 显示全部楼层 |阅读模式
本帖最后由 awfymwvf 于 2011-5-11 08:35 编辑
#include <GUIConstants.au3>
#include <GUIListView.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>

dim $dll,$Button1,$hPic1,$hPic2,$Tu1=0,$Tu2=0,$check1
Opt("GUIOnEventMode", 1)
;OnAutoItExitRegister("Quit") 

Func Button1()
        AdlibUnRegister()
        Exit
EndFunc

Func CLOSEClicked()
        AdlibUnRegister()
        Exit
EndFunc

$Form1=GUICreate ( "MYFROM", 484, 302,-1,-1,BitOR($WS_SIZEBOX,$WS_MAXIMIZEBOX,$WS_MINIMIZEBOX)) 
$check1=GUICtrlCreateCheckbox("列表",28,200,58,58)
GUISetState (@SW_SHOW,$Form1)

$Button1 = GUICtrlCreateButton("退出程序", 406, 206, 80,30)
GUICtrlSetOnEvent($Button1, "Button1")
;GUICtrlSetOnEvent($check1, "check1")
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") ; 设置窗口关闭事件

While 1
        Sleep(1000)
WEnd
我想让这个窗体在缩小到一定程度后就不可以再缩小了,想了好久,没有思路,望高手帮助。谢谢了
发表于 2011-5-10 15:35:04 | 显示全部楼层
Opt("GUIOnEventMode", 1)
GUICreate("限制窗口大小示例", -1, -1, -1, -1, 0x40000)
GUISetOnEvent(-3, "GuiEvent")
GUIRegisterMsg(0x24, "WM_GETMINMAXINFO")
GUISetState()
While 1
        Sleep(100)
WEnd
Func GuiEvent()
        Switch @GUI_CtrlId
                Case -3
                        GUIDelete()
                        Exit
        EndSwitch
EndFunc   ;==>GuiEvent
 
Func WM_GETMINMAXINFO($hWnd, $Msg, $wParam, $lparam)
        Local $tBuffer = DllStructCreate("int;int;int;int;int;int;int;int;int;int", $lparam)
        DllStructSetData($tBuffer, 7, 400);限制窗口的最小宽度为400
        DllStructSetData($tBuffer, 8, 250);限制窗口的最小高度为600
        DllStructSetData($tBuffer, 9, 600);限制窗口的最大宽度为600
        DllStructSetData($tBuffer, 10, 800);限制窗口的最大宽度为800
        Return "GUI_RUNDEFMSG"
EndFunc
 楼主| 发表于 2011-5-10 16:35:17 | 显示全部楼层
本帖最后由 awfymwvf 于 2011-5-10 17:05 编辑

超版的代码真是太强大了。谢谢超版的关注,测试去,看在我的代码中有效吗?

再次谢谢超版。

GUISetOnEvent(-3, "GuiEvent")

这行代码中的-3是什么意思,在什么时候用-3,什么时候用-1,有没有-2呢?
发表于 2011-5-10 21:49:46 | 显示全部楼层
-3 是某个窗口被关闭的系统消息的常量
因为版主没有使用#include <GUIConstantsEx.au3>
所以直接使用的-3,否则你看到的应该是$GUI_EVENT_CLOSE
至于-2  -1 你可以打开GUIConstantsEx.au3看看具体的含义,大概应该能看出来,实在看不出来就去查查别的资料把
 楼主| 发表于 2011-5-11 08:20:00 | 显示全部楼层
本帖最后由 awfymwvf 于 2011-5-11 08:39 编辑

谢谢超版,谢谢LOVE7173,

还有一点不明白的就是,DllStructCreate("int;int;int;int;int;int;int;int;int;int", $lparam) 这个创建的数据结构中,为什么要创建10个INT型?

还有就是DllStructSetData($tBuffer, 7, 531)         这行代码中,为什么在这10个数据结构中,其中的数字“7”是限制窗口的最小宽度,是什么依据呢?
发表于 2011-5-11 08:57:32 | 显示全部楼层
ceoguang 发表于 2011-5-10 15:35

呵呵!换头像啦?
这段代码似曾相识!前辈不是一次回答这样的问题吧?
发表于 2011-5-11 14:37:36 | 显示全部楼层
呵呵!换头像啦?
这段代码似曾相识!前辈不是一次回答这样的问题吧?
水木子 发表于 2011-5-11 08:57

是在当时的回复里直接复制过来的
回复 5# awfymwvf
WM_GETMINMAXINFO
MINMAXINFO Structure
发表于 2011-5-11 17:39:46 | 显示全部楼层
学习代码.....
 楼主| 发表于 2011-5-12 07:23:02 | 显示全部楼层
超版啊。看了你给的两个连接,没明白啊。唉。我太笨。。。

我在论坛以"缩放"为关键字,没有找到超版的回复啊。。。。。唉。。。。还是。。。。。
发表于 2011-5-12 08:21:24 | 显示全部楼层
超版啊。看了你给的两个连接,没明白啊。唉。我太笨。。。

我在论坛以"缩放"为关键字,没有找到超版的回复啊。。。。。唉。。。。还是。。。。。
 楼主| 发表于 2011-5-13 07:28:27 | 显示全部楼层
楼上TX真是强大了。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-18 04:06 , Processed in 0.084845 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表