awfymwvf 发表于 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我想让这个窗体在缩小到一定程度后就不可以再缩小了,想了好久,没有思路,望高手帮助。谢谢了

ceoguang 发表于 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

awfymwvf 发表于 2011-5-10 16:35:17

本帖最后由 awfymwvf 于 2011-5-10 17:05 编辑

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

再次谢谢超版。

GUISetOnEvent(-3, "GuiEvent")

这行代码中的-3是什么意思,在什么时候用-3,什么时候用-1,有没有-2呢?

love5173 发表于 2011-5-10 21:49:46

-3 是某个窗口被关闭的系统消息的常量
因为版主没有使用#include <GUIConstantsEx.au3>
所以直接使用的-3,否则你看到的应该是$GUI_EVENT_CLOSE
至于-2-1 你可以打开GUIConstantsEx.au3看看具体的含义,大概应该能看出来,实在看不出来就去查查别的资料把

awfymwvf 发表于 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 http://www.autoitx.com/images/common/back.gif
呵呵!换头像啦?
这段代码似曾相识!前辈不是一次回答这样的问题吧?

ceoguang 发表于 2011-5-11 14:37:36

呵呵!换头像啦?
这段代码似曾相识!前辈不是一次回答这样的问题吧?
水木子 发表于 2011-5-11 08:57 http://www.autoitx.com/images/common/back.gif
是在当时的回复里直接复制过来的
回复 5# awfymwvf
WM_GETMINMAXINFO
MINMAXINFO Structure

lxz 发表于 2011-5-11 17:39:46

学习代码.....

awfymwvf 发表于 2011-5-12 07:23:02

超版啊。看了你给的两个连接,没明白啊。唉。我太笨。。。

我在论坛以"缩放"为关键字,没有找到超版的回复啊。。。。。唉。。。。还是。。。。。

kuanglong 发表于 2011-5-12 08:21:24

超版啊。看了你给的两个连接,没明白啊。唉。我太笨。。。

我在论坛以"缩放"为关键字,没有找到超版的回复啊。。。。。唉。。。。还是。。。。。

awfymwvf 发表于 2011-5-13 07:28:27

楼上TX真是强大了。。。
页: [1]
查看完整版本: 一个可以缩放的窗体,能不能控制当缩到一定大小之后就不可以缩放了呢