精华内容
下载资源
问答
  • 里面的控件并没有进行改变,接下来我就介绍一下此问题的解决办法,我们其实一般的都会把窗口的最大化按钮失效,是窗口不能进行最大化操作,但是有时候我们还是需要对窗口进行最大化操作的,下面我们可以通过添加WM_...

    我们经常会发现当我们将窗口最大化时,里面的控件并没有进行改变,接下来我就介绍一下此问题的解决办法,我们其实一般的都会把窗口的最大化按钮失效,是窗口不能进行最大化操作,但是有时候我们还是需要对窗口进行最大化操作的,下面我们可以通过添加WM_SIZE消息来解决此问题。
    1 在XXDLg.h中添加
    afx_msg void OnSize(UINT nType, int cx, int cy);
    2 在XXDLg.h中添加
    ON_WM_SIZE() 或者 ON_MESSAGE(WM_SIZE,OnSize)
    3 在XXDlg类中添加以下成员变量
    POINT oSize
    4 在XXDlg类中OnInitDialog()添加以下代码

        CRect rect;  
        GetClientRect(&rect);  //获取客户端区域的大小
        oSize.x = rect.right - rect.left;  //初始窗口的宽度
        oSize.y = rect.bottom - rect.top;  //初始窗口的高度
    5在XXDlg类中添加以下成员函数
    

    “`
    void XXDlg::OnSize(UINT nType, int cx, int cy)
    {
    CDialog::OnSize(nType, cx, cy);
    if (nType==SIZE_RESTORED || nType==SIZE_MAXIMIZED) //窗口变化的类型
    {

        float   ratio[2];  //变化率
        POINT   newDialogSize;  //新的窗口的大小
        CRect   newRect;  
        GetClientRect(&newRect);  //获取新的客户区的大小 
        newDialogSize.x = newRect.right - newRect.left;  //新窗口的宽度
        newDialogSize.y = newRect.bottom - newRect.top;   //新窗口的高度
    
        //得现在的对话框与以往对话框的大小比例  
        ratio[0]    = (float)newDialogSize.x / oSize.x;  
        ratio[1]    = (float)newDialogSize.y / oSize.y;  
    
        CRect Rect;  
        int woc;  
    
        //左右上角的数据  
        CPoint OldTLPoint, NewTLPint;  //左上角
        CPoint OldBRPoint, NewBRPint;  //右下角
    
        //列出所有控件 
        HWND  hwndChild = ::GetWindow(m_hWnd,GW_CHILD);  
    
        while(hwndChild)  
        {  
            //取得ID  
            woc  = ::GetDlgCtrlID(hwndChild);  
            GetDlgItem(woc)->GetWindowRect(Rect);  //获取控件的区域大小
            ScreenToClient(Rect);  //映射到客户端区域大小
    
            OldTLPoint = Rect.TopLeft();  
            NewTLPint.x  = long(OldTLPoint.x*ratio[0]);  
            NewTLPint.y  = long(OldTLPoint.y*ratio[1]);  
    
            OldBRPoint   = Rect.BottomRight();  
            NewBRPint.x  = long(OldBRPoint.x*ratio[0]);  
            NewBRPint.y  = long(OldBRPoint.y*ratio[1]);  
    
            Rect.SetRect(NewTLPint,NewBRPint);  //重新设置控件区域大小
            GetDlgItem(woc)->MoveWindow(Rect,TRUE);  //显示到窗口上
            hwndChild=::GetWindow(hwndChild, GW_HWNDNEXT); //获取下一个控件的句柄 
        }  
        oSize   = newDialogSize;   //新的窗口大小作为下一次变化的依据   
    }  
    

    }

    但是,经过多次的窗口变化后,里面的控件会失真,这个问题还未解决!

    展开全文
  • 动态改变对话框可调整大小属性

    千次阅读 2015-11-13 15:00:36
    打开资源文件,对话框资源的属性列表中,有一个“Border”项,改变该项的值就可以改变窗口边框风格。实际上windows窗口是否可调整大小,就是根据边框的风格来确定的。窗口风格中与边框有关的值如下:  WS_BORDER-...
    MFC的对话框CDialog是怎么控制窗口可调整大小的属性的呢?打开资源文件,对话框资源的属性列表中,有一个“Border”项,改变该项的值就可以改变窗口边框风格。实际上windows窗口是否可调整大小,就是根据边框的风格来确定的。窗口风格中与边框有关的值如下:
    
       WS_BORDER- Thin-line border,不能调整大小;
       WS_DLGFRAME -dialog box typical border,不能调整大小;
       WS_SIZEBOX -sizing border,可以调整大小;
       WS_THICKFRAME - WS_SIZEBOX。

       我们可以通过CreateWindow函数的dwStyle参数值来指定窗口风格,但是如果想在运行期动态改变窗口边框风格呢?可以用ModifyStyle函数,通过简单的添加和删除上面的窗口风格,就能实现窗口可调整大小属性的改变。

       但是如果你将“SystemMenu”属性设置为“True”,就会发现即使调用ModifyStyle(WS_BORDER,WS_THICKFRAME, SWP_FRAMECHANGED);将边框修改为thickframe也不能调整大小,出现了箭头,但是窗口大小是固定的,原因是必须要将“Maximize Box”设置为“True”。
       当然,也可以用代码 ModifyStyle(NULL, WS_SYSMENU |WS_MAXIMIZEBOX); 来添加系统菜单和最大化按钮。

       当我们需要固定对话框尺寸时,有3个地方需要控制:1,边框不能拉伸窗口;2,最大化按钮不可用;3,禁止双击标题栏最大化。指定边框风格为WS_BORDER可完成1和3,去掉WS_MAXIMIZEBOX可完成2。MFC已经为我们封装的很好。

    自己测试要如下设置才能调整大小。

        //设置边框WS_THICKFRAME 可拉伸模式
        ModifyStyle(WS_BORDER, WS_THICKFRAME, SWP_FRAMECHANGED);
        //关闭菜单功能。(关闭菜单功能才能缩放)
        ModifyStyle(WS_SYSMENU, 0);

    展开全文
  • 打开资源文件,对话框资源的属性列表中,有一个“Border”项,改变该项的值就可以改变窗口边框风格。实际上windows窗口是否可调整大小,就是根据边框的风格来确定的。窗口风格中与边框有关的值如下:  WS_BORDER...
    MFC的对话框CDialog是怎么控制窗口可调整大小的属性的呢?打开资源文件,对话框资源的属性列表中,有一个“Border”项,改变该项的值就可以改变窗口边框风格。实际上windows窗口是否可调整大小,就是根据边框的风格来确定的。窗口风格中与边框有关的值如下:
    
        WS_BORDER - Thin-line border,不能调整大小;
        WS_DLGFRAME - dialog box typical border,不能调整大小;
        WS_SIZEBOX - sizing border,可以调整大小;
        WS_THICKFRAME - WS_SIZEBOX。

        我们可以通过CreateWindow函数的dwStyle参数值来指定窗口风格,但是如果想在运行期动态改变窗口边框风格呢?可以用ModifyStyle函数,通过简单的添加和删除上面的窗口风格,就能实现窗MFC的对话框CDialog是怎么控制窗口可调整大小的属性的呢?打开资源文件,对话框资源的属性列表中,有一个“Border”项,改变该项的值就可以改变窗口边框风格。实际上windows窗口是否可调整大小,就是根据边框的风格来确定的。窗口风格中与边框有关的值如下:
        WS_BORDER - Thin-line border,不能调整大小;
        WS_DLGFRAME - dialog box typical border,不能调整大小;
        WS_SIZEBOX - sizing border,可以调整大小;
        WS_THICKFRAME - 同WS_SIZEBOX。


        我们可以通过CreateWindow函数的dwStyle参数值来指定窗口风格,但是如果想在运行期动态改变窗口边框风格呢?可以用ModifyStyle函数,通过简单的添加和删除上面的窗口风格,就能实现窗口可调整大小属性的改变。
        但是如果你将“System Menu”属性设置为“True”,就会发现即使调用ModifyStyle(WS_BORDER, WS_THICKFRAME, SWP_FRAMECHANGED);将边框修改为thick frame也不能调整大小,出现了箭头,但是窗口大小是固定的,原因是必须要将“Maximize Box”设置为“True”。
        当然,也可以用代码ModifyStyle(NULL, WS_SYSMENU | WS_MAXIMIZEBOX);来添加系统菜单和最大化按钮。


        当我们需要固定对话框尺寸时,有3个地方需要控制:1,边框不能拉伸窗口;2,最大化按钮不可用;3,禁止双击标题栏最大化。指定边框风格为WS_BORDER可完成1和3,去掉WS_MAXIMIZEBOX可完成2。MFC已经为我们封装的很好。口可调整大小属性的改变。
        但是如果你将“System Menu”属性设置为“True”,就会发现即使调用ModifyStyle(WS_BORDER, WS_THICKFRAME, SWP_FRAMECHANGED);将边框修改为thick frame也不能调整大小,出现了箭头,但是窗口大小是固定的,原因是必须要将“Maximize Box”设置为“True”。
        当然,也可以用代码ModifyStyle(NULL, WS_SYSMENU | WS_MAXIMIZEBOX);来添加系统菜单和最大化按钮。

        当我们需要固定对话框尺寸时,有3个地方需要控制:1,边框不能拉伸窗口;2,最大化按钮不可用;3,禁止双击标题栏最大化。指定边框风格为WS_BORDER可完成1和3,去掉WS_MAXIMIZEBOX可完成2。MFC已经为我们封装的很好。
    展开全文
  • 在编写基于对话框的程序的时候,很喜欢将Border的属性设置为none,这样整个对话框看起来什么也没有(没有棱角也没有非客户区),这样你...但唯一不爽的对话框不能跟随鼠标移动,也不能通过鼠标改变大小。以下

    原文链接:http://blog.csdn.net/yuzhenxiong0823/article/details/8215326


    在编写基于对话框的程序的时候,很喜欢将Border的属性设置为none,这样整个对话框看起来什么也没有(没有棱角也没有非客户区),这样你可以用一些好看的图片自己设置绘制非客户区和对话框边缘。但唯一不爽的是,对话框不能跟随鼠标移动,也不能通过鼠标改变大小。以下的方法会实现这些功能:

    在对话框类当中添加一个变量m_nHitTest,

    添加WM_MOUSEMOVE消息处理函数,在处理函数中添加以下代码

    1. CRect rect;   
    2. GetClientRect(&rect);   
    3. if(point.x <= rect.left+3)   
    4. {   
    5. SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZEWE)));   
    6. m_nHitTest = HTLEFT;   
    7. }   
    8. else if(point.x >= rect.right-3)   
    9. {   
    10. SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZEWE)));   
    11. m_nHitTest = HTRIGHT;   
    12. }   
    13. else if(point.y <= rect.top+3)   
    14. {   
    15. SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENS)));   
    16. m_nHitTest = HTTOP;   
    17. }   
    18. else if(point.y >= rect.bottom-3)   
    19. {   
    20. SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENS)));   
    21. m_nHitTest = HTBOTTOM;   
    22. }   
    23. else if(point.x <= rect.left+10 && point.y <= rect.top+10)   
    24. {   
    25. SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENWSE)));   
    26. m_nHitTest = HTTOPLEFT;   
    27. }   
    28. else if(point.x >= rect.right-10 && point.y <= rect.top+10)   
    29. {   
    30. SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENESW)));   
    31. m_nHitTest = HTTOPRIGHT;   
    32. }   
    33. else if(point.x <= rect.left+10 && point.y >= rect.bottom-10)   
    34. {   
    35. SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENESW)));   
    36. m_nHitTest = HTBOTTOMLEFT;   
    37. }   
    38. else if(point.x >= rect.right-10 && point.y >= rect.bottom-10)   
    39. {   
    40. SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENWSE)));   
    41. m_nHitTest = HTBOTTOMRIGHT;   
    42. }   
    43. else   
    44. {   
    45. SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)));   
    46. m_nHitTest = 0;   
    47. }  

    添加WM_LBUTTONDOWN消息处理函数,在处理函数中添加以下代码

    1. if(m_nHitTest == HTTOP)   
    2. {   
    3. SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENS)));   
    4. SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_TOP, MAKELPARAM(point.x, point.y));   
    5. }   
    6. else if(m_nHitTest == HTBOTTOM)   
    7. {   
    8. SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENS)));   
    9. SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_BOTTOM, MAKELPARAM(point.x, point.y));   
    10. }   
    11. else if(m_nHitTest == HTLEFT)   
    12. {   
    13. SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZEWE)));   
    14. SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_LEFT, MAKELPARAM(point.x, point.y));   
    15. }   
    16. else if(m_nHitTest == HTRIGHT)   
    17. {   
    18. SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZEWE)));   
    19. SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_RIGHT, MAKELPARAM(point.x, point.y));   
    20. }   
    21. else if(m_nHitTest == HTTOPLEFT)   
    22. {   
    23. SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENWSE)));   
    24. SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_TOPLEFT, MAKELPARAM(point.x, point.y));   
    25. }   
    26. else if(m_nHitTest == HTTOPRIGHT)   
    27. {   
    28. SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENESW)));   
    29. SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_TOPRIGHT, MAKELPARAM(point.x, point.y));   
    30. }   
    31. else if(m_nHitTest == HTBOTTOMLEFT)   
    32. {   
    33. SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENESW)));   
    34. SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_BOTTOMLEFT, MAKELPARAM(point.x, point.y));   
    35. }   
    36. else if(m_nHitTest == HTBOTTOMRIGHT)   
    37. {   
    38. SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENWSE)));   
    39. SendMessage(WM_SYSCOMMAND, SC_SIZE | WMSZ_BOTTOMRIGHT, MAKELPARAM(point.x, point.y));   
    40. }   
    41. else   
    42. {  
    43.   
    44. //实现对话框跟随鼠标移动  
    45.   
    46. ::SendMessage (GetSafeHwnd(), WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);   
    47. }  

    展开全文
  • 默认情况下,对话框(Dialog)不能改变大小,但是用户可以设置 resizable 属性为 true,使其可以改变大小。 创建对话框(Dialog) 对话框(Dialog)非常简单,可以从 DIV 标记创建,如下所示: <div id="dd" ...
  • 对话框

    2008-11-02 20:46:00
     对话框窗口有区别,它没有最大化按钮、没有最小化按钮、不能改变形状大小 对话框人机交流的一种方式,用户对对话框进行设置,计算机就会执行相应的命令。对话框中有单选框、复选框等。 对话框的组成 ...
  • 你可以把它用到ASP.NET,AJAX,Java等等所有网页上,支持的功能有:可以改变窗口大小、支持最小化、最大化窗口、模型对话框、渐入渐出的渐变效果,支持皮肤等等功能。现有的实例包括:模仿MAC OS的对话框,在对话框...
  • 可扩展的对话框

    2017-11-04 21:52:57
    1. 这里的可扩展的对话框指的是可以通过按钮、命令去控制对话框其中一部分显示、隐藏。如下:扩展部分显示:2. 如何实现(1)设计窗口及布局(2)实现扩展的窗口必须设定为不可拖拽大小的: //设置窗口不可改变大小...
  • 三、改变对话框外观

    2006-09-12 02:24:00
    三、改变对话框外观 对话框的外观控制包括从窗口边缘风格(edge)、是否存在滚动条(scroll)、是否包含上下文关联提示图标(help)、是否显示状态栏(status)以及是否可以改变窗口大小(resizable)等方面。...
  • 默认情况下,对话框(Dialog)不能改变大小,但是用户可以设置 resizable 属性为 true,使其可以改变大小。 这种就是对话框了。 EasyUI有两种创建方式: 第一种:通过已存在的DOM节点元素标签创建 <!DOCTYPE ...
  • 前几天看dbnetgrid,发现其弹出窗口可以根据窗口内容自动改变其自身大小,查代码发现下面的代码起了作用注:上述代码中的layout为body中的一个table的id,页面的所有控件都包含在此table中,且未设置其width和...
  • Android对话框总结

    2015-04-28 15:19:11
    (“打开文件”对话框是可以改变大小的) 对话框:是人机交流的一种方式,用户对对话框进行设置,计算机就会执行相应的命令。对话框中有单选框、复选框等。 要我说,对话框,就是一个用于和用户进行对话的小框框。...
  • 用VC制作动态弹出的对话框

    千次阅读 2008-11-11 20:26:00
    一、选择方法 通常,我们可以对话框的WM_INITDIALOG事件的响应函数中加入对话框的一些初始化设置,比如改变窗口的位置及大小。同样,我们也可以在WM_INITDIALOG事件的响应函数中让对话框由小到大地显示。但是,...
  • EasyUI 创建对话框

    2016-09-27 10:21:00
    默认对话框不能改变大小,但是用户可以设置resizeable属性为true来使它可以改变大小对话框非常简单,可以使用DIV标记创建: <divid="dd"style="padding:5px;width:400px;height:200px;"> Dialog...
  • 在jquery的应用中,我们可以选择使用 jquery ui来快速完成前端搭建,当然jquery ui不能做页面布局很让人伤心的一件事。 但最让人无法忍受的还是它的那个...但随之而来的另一个问题,这个窗口没办法改变大小
  • 前不久在官方网站看见这个插件,所以今天趁有空就看了一下,随便给大家共享一下。也许你早已知道了 ,如果这样那请跳过,不要拍砖。...在你改变改变浏览器窗口大小时候,它能够自适应用户 窗口的调整。 5:如
  • 设置视图背景颜色对于VC++文档、视结构中的视图,从用户的角度来看,只是可以改变大小、位置的普通窗口,同其他基于Windows应用程序的窗口是一样的;从程序员的角度来看,视图并不是普通的窗口,而是从MFC库中...
  • 控件大小窗口变化

    千次阅读 2010-06-24 09:21:00
    <br /> 我们可以采取下面的措施:对话框窗口,最大化窗口大小改变,而在windows message handle中有个WM_SIZE的消息,该消息在窗口大小发生变化的时候会产生。那么我们可以根据这个消息,在窗口...
  • MFC 禁止调整窗口大小

    千次阅读 2013-07-01 14:38:03
    但是基于单(多)文档的MFC应用程序在默认情况下,窗口大小是可以调整的。可以修改工程中的CMainFrame::PreCreateWindow函数来限制这一行,代码如下所示。 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { ...
  • 打开资源文件,对话框资源的属性列表中,有一个“Border”项,改变该项的值就可以改变窗口边框风格。实际上windows窗口是否可调整大小,就是根据边框的风格来确定的。窗口风格中与边框有关的值如下:WS_BORDER-Thi.....
  • 本范例用JQuery实现了一系列的对话框来替代浏览器自己的对话框,包含Alert,Confirm,Prompt对话框,本对话框有如下特点: 1、用户可以自定义对话框的界面 2、可以自定义对话框的标题本提示框使用标准的模式窗口弹...
  • JOptionPaneSwing中一个很有用的类,它提供了很多标准对话框可以简化我们对这种标准对话框的使用,从而获得更友好的用户界面。 不时的会看到很多朋友问在使用JOptionPane时如何改变其字体大小、颜色等等。其实...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 185
精华内容 74
关键字:

对话框窗口大小是可以改变的