解决方案 »

  1.   

    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;
    }
      

  2.   

    VB的话看这里:
    http://bbs.csdn.net/topics/50358102
      

  3.   

    sub form_resize
    if width <某值 then width=最小值
    if height <某值 then height=最小值
    end sub
      

  4.   


    如果最小化也不允许的话就再加上:
    If form1.windowstatus=1 then
       form1.windowstatus=0
       width=最小值
       height=最小值
    end if
      

  5.   


    对哦,其实就是在窗口子类化中处理那个WM_GETMINMAXINFO的问题啊。
      

  6.   


    如果最小化也不允许的话就再加上:
    If form1.windowstatus=1 then
       form1.windowstatus=0
       width=最小值
       height=最小值
    end if
    应该直接禁用最小化按钮(幸好VB还是内置支持这个的)。你允许最小化按钮而不允许最小化,这种不合逻辑的设计让用户觉得莫名其妙。你知道为什么要“为了研究而研究,为了理论而理论”么?因为只有站在更高的角度,你才能让你现有的工作做得更好——让设计不但符合直觉,也符合更深层次的隐喻。
      

  7.   


    如果最小化也不允许的话就再加上:
    If form1.windowstatus=1 then
       form1.windowstatus=0
       width=最小值
       height=最小值
    end if
    应该直接禁用最小化按钮(幸好VB还是内置支持这个的)。你允许最小化按钮而不允许最小化,这种不合逻辑的设计让用户觉得莫名其妙。你知道为什么要“为了研究而研究,为了理论而理论”么?因为只有站在更高的角度,你才能让你现有的工作做得更好——让设计不但符合直觉,也符合更深层次的隐喻。或许可以这样理解: 这个最小的尺寸就是这个窗体的"最小状态", 这样的话"最小化"按钮就起到了让窗体变成允许的最小尺寸的功能了.
      

  8.   


    如果最小化也不允许的话就再加上:
    If form1.windowstatus=1 then
       form1.windowstatus=0
       width=最小值
       height=最小值
    end if
    应该直接禁用最小化按钮(幸好VB还是内置支持这个的)。你允许最小化按钮而不允许最小化,这种不合逻辑的设计让用户觉得莫名其妙。你知道为什么要“为了研究而研究,为了理论而理论”么?因为只有站在更高的角度,你才能让你现有的工作做得更好——让设计不但符合直觉,也符合更深层次的隐喻。或许可以这样理解: 这个最小的尺寸就是这个窗体的"最小状态", 这样的话"最小化"按钮就起到了让窗体变成允许的最小尺寸的功能了.
    你这么说呢,也没错。但是这不符合约定。
    你可以编写一大本很厚的使用说明,详细地介绍你的理解——详细地直到把用户吓走。
      

  9.   

    关于你发的这个链接中运用子类技术处理窗体的例子没看太明白,我原本的目的只是想让窗体的最小限制在一个范围内,类似于电脑的任务管理器那样子的,但是    
        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事件也响应不了了!关于子类处理的方法还是不太明白!
      

  10.   

    现在好了,只要把    MinMax.ptMaxTrackSize.x = Screen.Width \ Screen.TwipsPerPixelX \ 2
        MinMax.ptMaxTrackSize.y = 3480 \ Screen.TwipsPerPixelY删掉就好了,但是不明白的是为什么这样一赋值后,窗体大小就能限制了,   
    MinMax.ptMinTrackSize.x = 3975 \ Screen.TwipsPerPixelX
    MinMax.ptMinTrackSize.y = 1740 \ Screen.TwipsPerPixelY
    这样赋值后也没有看到把这个x,y大小赋给窗体啊,真不明白这其中的工作流程!
      

  11.   


    如果最小化也不允许的话就再加上:
    If form1.windowstatus=1 then
       form1.windowstatus=0
       width=最小值
       height=最小值
    end if
    应该直接禁用最小化按钮(幸好VB还是内置支持这个的)。你允许最小化按钮而不允许最小化,这种不合逻辑的设计让用户觉得莫名其妙。你知道为什么要“为了研究而研究,为了理论而理论”么?因为只有站在更高的角度,你才能让你现有的工作做得更好——让设计不但符合直觉,也符合更深层次的隐喻。或许可以这样理解: 这个最小的尺寸就是这个窗体的"最小状态", 这样的话"最小化"按钮就起到了让窗体变成允许的最小尺寸的功能了.
    你这么说呢,也没错。但是这不符合约定。
    你可以编写一大本很厚的使用说明,详细地介绍你的理解——详细地直到把用户吓走。我觉得你这个建议不错, 你跟楼主说一下, 人家或许给你个最佳创意奖.