http://weseetips.com/2008/04/26/how-to-set-the-minimum-and-maximum-window-size-while-resizing/Modify the message map as followsBEGIN_MESSAGE_MAP(CDialogDlg, CDialog) ... ON_WM_GETMINMAXINFO() END_MESSAGE_MAP() Now add a function with the following signature to your dialog class.void CDialogDlg::OnGetMinMaxInfo( MINMAXINFO FAR* pMinMaxInfo ) { // Preferred Maximum X & Y. const int MAX_SIZE_X = 750; const int MAX_SIZE_Y = 650; // Preferred Minimum X & Y. const int MIN_SIZE_X = 400; const int MIN_SIZE_Y = 350; // Set the maximum size. Used while maximizing. pMinMaxInfo->ptMaxSize.x = MAX_SIZE_X; pMinMaxInfo->ptMaxSize.y = MAX_SIZE_Y; // Set the Minimum Track Size. Used while resizing. pMinMaxInfo->ptMinTrackSize.x = MIN_SIZE_X; pMinMaxInfo->ptMinTrackSize.y = MIN_SIZE_Y; // Set the Maximum Track Size. Used while resizing. pMinMaxInfo->ptMaxTrackSize.x = MAX_SIZE_X; pMinMaxInfo->ptMaxTrackSize.y = MAX_SIZE_Y; }
VB的话看这里: http://bbs.csdn.net/topics/50358102
sub form_resize if width <某值 then width=最小值 if height <某值 then height=最小值 end sub
如果最小化也不允许的话就再加上: If form1.windowstatus=1 then form1.windowstatus=0 width=最小值 height=最小值 end if
对哦,其实就是在窗口子类化中处理那个WM_GETMINMAXINFO的问题啊。
如果最小化也不允许的话就再加上: If form1.windowstatus=1 then form1.windowstatus=0 width=最小值 height=最小值 end if 应该直接禁用最小化按钮(幸好VB还是内置支持这个的)。你允许最小化按钮而不允许最小化,这种不合逻辑的设计让用户觉得莫名其妙。你知道为什么要“为了研究而研究,为了理论而理论”么?因为只有站在更高的角度,你才能让你现有的工作做得更好——让设计不但符合直觉,也符合更深层次的隐喻。
如果最小化也不允许的话就再加上: If form1.windowstatus=1 then form1.windowstatus=0 width=最小值 height=最小值 end if 应该直接禁用最小化按钮(幸好VB还是内置支持这个的)。你允许最小化按钮而不允许最小化,这种不合逻辑的设计让用户觉得莫名其妙。你知道为什么要“为了研究而研究,为了理论而理论”么?因为只有站在更高的角度,你才能让你现有的工作做得更好——让设计不但符合直觉,也符合更深层次的隐喻。或许可以这样理解: 这个最小的尺寸就是这个窗体的"最小状态", 这样的话"最小化"按钮就起到了让窗体变成允许的最小尺寸的功能了.
如果最小化也不允许的话就再加上: If form1.windowstatus=1 then form1.windowstatus=0 width=最小值 height=最小值 end if 应该直接禁用最小化按钮(幸好VB还是内置支持这个的)。你允许最小化按钮而不允许最小化,这种不合逻辑的设计让用户觉得莫名其妙。你知道为什么要“为了研究而研究,为了理论而理论”么?因为只有站在更高的角度,你才能让你现有的工作做得更好——让设计不但符合直觉,也符合更深层次的隐喻。或许可以这样理解: 这个最小的尺寸就是这个窗体的"最小状态", 这样的话"最小化"按钮就起到了让窗体变成允许的最小尺寸的功能了. 你这么说呢,也没错。但是这不符合约定。 你可以编写一大本很厚的使用说明,详细地介绍你的理解——详细地直到把用户吓走。
如果最小化也不允许的话就再加上: If form1.windowstatus=1 then form1.windowstatus=0 width=最小值 height=最小值 end if 应该直接禁用最小化按钮(幸好VB还是内置支持这个的)。你允许最小化按钮而不允许最小化,这种不合逻辑的设计让用户觉得莫名其妙。你知道为什么要“为了研究而研究,为了理论而理论”么?因为只有站在更高的角度,你才能让你现有的工作做得更好——让设计不但符合直觉,也符合更深层次的隐喻。或许可以这样理解: 这个最小的尺寸就是这个窗体的"最小状态", 这样的话"最小化"按钮就起到了让窗体变成允许的最小尺寸的功能了. 你这么说呢,也没错。但是这不符合约定。 你可以编写一大本很厚的使用说明,详细地介绍你的理解——详细地直到把用户吓走。我觉得你这个建议不错, 你跟楼主说一下, 人家或许给你个最佳创意奖.
... ON_WM_GETMINMAXINFO()
END_MESSAGE_MAP()
Now add a function with the following signature to your dialog class.void CDialogDlg::OnGetMinMaxInfo( MINMAXINFO FAR* pMinMaxInfo )
{
// Preferred Maximum X & Y.
const int MAX_SIZE_X = 750;
const int MAX_SIZE_Y = 650; // Preferred Minimum X & Y.
const int MIN_SIZE_X = 400;
const int MIN_SIZE_Y = 350; // Set the maximum size. Used while maximizing.
pMinMaxInfo->ptMaxSize.x = MAX_SIZE_X;
pMinMaxInfo->ptMaxSize.y = MAX_SIZE_Y; // Set the Minimum Track Size. Used while resizing.
pMinMaxInfo->ptMinTrackSize.x = MIN_SIZE_X;
pMinMaxInfo->ptMinTrackSize.y = MIN_SIZE_Y; // Set the Maximum Track Size. Used while resizing.
pMinMaxInfo->ptMaxTrackSize.x = MAX_SIZE_X;
pMinMaxInfo->ptMaxTrackSize.y = MAX_SIZE_Y;
}
http://bbs.csdn.net/topics/50358102
if width <某值 then width=最小值
if height <某值 then height=最小值
end sub
如果最小化也不允许的话就再加上:
If form1.windowstatus=1 then
form1.windowstatus=0
width=最小值
height=最小值
end if
对哦,其实就是在窗口子类化中处理那个WM_GETMINMAXINFO的问题啊。
如果最小化也不允许的话就再加上:
If form1.windowstatus=1 then
form1.windowstatus=0
width=最小值
height=最小值
end if
应该直接禁用最小化按钮(幸好VB还是内置支持这个的)。你允许最小化按钮而不允许最小化,这种不合逻辑的设计让用户觉得莫名其妙。你知道为什么要“为了研究而研究,为了理论而理论”么?因为只有站在更高的角度,你才能让你现有的工作做得更好——让设计不但符合直觉,也符合更深层次的隐喻。
如果最小化也不允许的话就再加上:
If form1.windowstatus=1 then
form1.windowstatus=0
width=最小值
height=最小值
end if
应该直接禁用最小化按钮(幸好VB还是内置支持这个的)。你允许最小化按钮而不允许最小化,这种不合逻辑的设计让用户觉得莫名其妙。你知道为什么要“为了研究而研究,为了理论而理论”么?因为只有站在更高的角度,你才能让你现有的工作做得更好——让设计不但符合直觉,也符合更深层次的隐喻。或许可以这样理解: 这个最小的尺寸就是这个窗体的"最小状态", 这样的话"最小化"按钮就起到了让窗体变成允许的最小尺寸的功能了.
如果最小化也不允许的话就再加上:
If form1.windowstatus=1 then
form1.windowstatus=0
width=最小值
height=最小值
end if
应该直接禁用最小化按钮(幸好VB还是内置支持这个的)。你允许最小化按钮而不允许最小化,这种不合逻辑的设计让用户觉得莫名其妙。你知道为什么要“为了研究而研究,为了理论而理论”么?因为只有站在更高的角度,你才能让你现有的工作做得更好——让设计不但符合直觉,也符合更深层次的隐喻。或许可以这样理解: 这个最小的尺寸就是这个窗体的"最小状态", 这样的话"最小化"按钮就起到了让窗体变成允许的最小尺寸的功能了.
你这么说呢,也没错。但是这不符合约定。
你可以编写一大本很厚的使用说明,详细地介绍你的理解——详细地直到把用户吓走。
MinMax.ptMinTrackSize.x = 3975 \ Screen.TwipsPerPixelX
MinMax.ptMinTrackSize.y = 1740 \ Screen.TwipsPerPixelY
MinMax.ptMaxTrackSize.x = Screen.Width \ Screen.TwipsPerPixelX \ 2
MinMax.ptMaxTrackSize.y = 3480 \ Screen.TwipsPerPixelY
这几句话意思不太明白,还有用这种方法后我的窗体resize事件也响应不了了!关于子类处理的方法还是不太明白!
MinMax.ptMaxTrackSize.y = 3480 \ Screen.TwipsPerPixelY删掉就好了,但是不明白的是为什么这样一赋值后,窗体大小就能限制了,
MinMax.ptMinTrackSize.x = 3975 \ Screen.TwipsPerPixelX
MinMax.ptMinTrackSize.y = 1740 \ Screen.TwipsPerPixelY
这样赋值后也没有看到把这个x,y大小赋给窗体啊,真不明白这其中的工作流程!
如果最小化也不允许的话就再加上:
If form1.windowstatus=1 then
form1.windowstatus=0
width=最小值
height=最小值
end if
应该直接禁用最小化按钮(幸好VB还是内置支持这个的)。你允许最小化按钮而不允许最小化,这种不合逻辑的设计让用户觉得莫名其妙。你知道为什么要“为了研究而研究,为了理论而理论”么?因为只有站在更高的角度,你才能让你现有的工作做得更好——让设计不但符合直觉,也符合更深层次的隐喻。或许可以这样理解: 这个最小的尺寸就是这个窗体的"最小状态", 这样的话"最小化"按钮就起到了让窗体变成允许的最小尺寸的功能了.
你这么说呢,也没错。但是这不符合约定。
你可以编写一大本很厚的使用说明,详细地介绍你的理解——详细地直到把用户吓走。我觉得你这个建议不错, 你跟楼主说一下, 人家或许给你个最佳创意奖.