找回密码
 加入
搜索
查看: 3969|回复: 14

[GUI管理] 如何控制窗口的大小??

 火.. [复制链接]
发表于 2010-6-5 11:14:29 | 显示全部楼层 |阅读模式
创建了一个可调整大小的窗口
我想让这个窗口的高度小于300时就不能再小了
宽度小于500时就不能再小了
请问哪位大虾知道如何解决???
我大概知道是用到 WM_SIZING  消息
可不知道具体怎么用,在百度找了半天也没找到合适的

如能解决,非常感谢
 楼主| 发表于 2010-6-5 11:16:49 | 显示全部楼层

希望有高手能提供示范的代码
发表于 2010-6-5 13:27:07 | 显示全部楼层
应该是dock吧
 楼主| 发表于 2010-6-5 13:52:29 | 显示全部楼层
dock是什么啊?不懂
发表于 2010-6-5 13:58:57 | 显示全部楼层
停靠呀,不指定左上角xy怎么控制大小
发表于 2010-6-5 14:37:52 | 显示全部楼层
dock是什么啊?不懂
发表于 2010-6-5 14:45:17 | 显示全部楼层
我也不懂.....
 楼主| 发表于 2010-6-5 16:00:50 | 显示全部楼层
我知道要指定大小,但是不知道如何指定
说白了,也就是 WM_SIZING   这个消息不知道怎么用
我在百度上找到一个Delphi的实例,实现的就是我所说的那个功能,但只看了个一知半解
所以希望高手能演示一段Au3实现这种功能的方法,先感谢啦!

unit Unit1; //Line 01
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
private
  { Private declarations }
  procedure PROC_WM_SIZING(var AMsg: TMessage); message WM_SIZING; //Line 12
public
  { Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.PROC_WM_SIZING(var AMsg: TMessage); //Line24
const
MinWidth = 400; //Line 26
var
ARect: ^TRect; //Line 28
begin
ARect := Ptr(AMsg.LParam);  //Line 30
ARect.Top := Top;       //Line 31
ARect.Bottom := Top + Height; //Line 32
if ARect.Right - ARect.Left < MinWidth then begin
  case AMsg.WParam of
   WMSZ_BOTTOMLEFT,
   WMSZ_LEFT,
   WMSZ_TOPLEFT:   ARect.Left := ARect.Right - MinWidth; //Line 37
   WMSZ_BOTTOMRIGHT,
   WMSZ_RIGHT,
   WMSZ_TOPRIGHT:  ARect.Right := ARect.Left + MinWidth; //Line 40
  else
  end;
end;
end; //Line 44
end. //Line 46
发表于 2010-6-5 16:07:39 | 显示全部楼层
不是可以用工具画的吗?
 楼主| 发表于 2010-6-5 16:39:36 | 显示全部楼层
楼上的回复更不懂了
还是哪位大哥教教我 WM_SIZING 这个消息的参数咋用吧
 楼主| 发表于 2010-6-6 10:54:39 | 显示全部楼层
没人解答呀
再顶一下
发表于 2010-6-7 23:38:30 | 显示全部楼层
不知道我明天记不记得来回复,我做过这个,代码在公司,如果明天记得我直接贴上来
发表于 2010-6-8 00:35:47 | 显示全部楼层
可调整窗口,最大无限制,最小是500*300
#include <GUIConstants.au3>
#include <WindowsConstants.au3>

GUICreate("Test",500,500,-1,-1,$WS_SIZEBOX)
GUISetState (@SW_SHOW)
GUIRegisterMsg(0x24, "MY_WM_Size")

While 1
    $msg = GUIGetMsg()
    If $msg =-3 Then ExitLoop
Wend
    
Func MY_WM_Size($hWnd, $Msg, $wParam, $lParam)
    $min = DllStructCreate("int;int;int;int;int;int;int;int;int;int",$lParam)
    DllStructSetData($min,7,500) 
    DllStructSetData($min,8,300)
EndFunc

评分

参与人数 2威望 +3 贡献 +1 收起 理由
lynfr8 + 1
afan + 3

查看全部评分

发表于 2010-6-8 10:01:15 | 显示全部楼层
不错,学习一下
发表于 2010-6-8 11:31:20 | 显示全部楼层
这个不错值得学习。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-9 07:07 , Processed in 0.096634 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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