精华内容
下载资源
问答
  • 摘要:VC/C++源码,界面编程,对话框 VC++使对话框大小可调整的实例源码,这是一个再简单不过的VC++初学者示例程序也,用VC++设计窗体界面的基础技巧,高手就不要下载了,懂得可以下载源码参考学习,实例运行截图...
  • 动态改变对话框可调整大小属性

    千次阅读 2015-11-13 15:00:36
    MFC的对话框CDialog是怎么控制窗口可调整大小的属性的呢?打开资源文件,对话框资源的属性列表中,有一个“Border”项,改变该项的值就可以改变窗口边框风格。实际上windows窗口是否可调整大小,就是根据边框的风格...
    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);

    展开全文
  • Qt创建对话框调整对话框大小方法

    千次阅读 2019-12-02 22:37:34
    1.对于主窗口,在构造函数中调用如下语句实现对话框大小调整 MainWindow::MainWindow(QWidget *parent) : this->resize(QSize(1000,700)); 2.对于弹出对话框,调用如下语句实现: QDialog dialog1...

    1.对于主窗口,在构造函数中调用如下语句实现对话框大小调整

    MainWindow::MainWindow(QWidget *parent) :
        this->resize(QSize(1000,700));

    2.对于弹出对话框,调用如下语句可实现:

     
        QDialog dialog1(this);
        dialog1.setWindowTitle("Hello World!");
        dialog1.resize(QSize(300,100));
        dialog1.exec();

     

    展开全文
  • MFC的对话框CDialog是怎么控制窗口可调整大小的属性的呢?打开资源文件,对话框资源的属性列表中,有一个“Border”项,改变该项的值就可以改变窗口边框风格。实际上windows窗口是否可调整大小,就是根据边框的风格...
    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已经为我们封装的很好。
    展开全文
  • ClxDialog类 ...//从此类派生出的对话框可以根据对话框大小变化自动调整控件大小 //头文件 [cpp] view plaincopyprint? ////////////////////////////////////

    ClxDialog类

    分类: MFC/C++   174人阅读  评论(0)  收藏  举报

    //从此类派生出的对话框可以根据对话框大小变化自动调整控件大小

    //头文件

    1. ///  
    2. //      自动改变控件位置和大小的对话框类  
    3. //      文件名:lxDialog.h  
    4. //      作者:StarLee(coolstarlee@sohu.com)  
    5. //  
    6.   
    7. class ClxDialog : public CDialog  
    8. {  
    9. public:  
    10.     ClxDialog(UINT nID, CWnd* pParent = NULL);  
    11.   
    12.     typedef struct _dlgControlTag  
    13.     {  
    14.         int iId;  
    15.         int iFlag;  
    16.         int iPercent;  
    17.     } DLGCTLINFO, *PDLGCTLINFO;  
    18.   
    19.     enum  
    20.     {  
    21.         MOVEX = 0,  
    22.         MOVEY,  
    23.         MOVEXY,  
    24.         ELASTICX,  
    25.         ELASTICY,  
    26.         ELASTICXY  
    27.     };  
    28.   
    29.     //  设置控件信息  
    30.     BOOL SetControlProperty(PDLGCTLINFO lp, int nElements);  
    31.   
    32.     //  是否在对话框右下角显示表示可改变大小的图标  
    33.     void ShowSizeIcon(BOOL bShow = TRUE);  
    34.   
    35. protected:  
    36.     virtual BOOL OnInitDialog();  
    37.     afx_msg void OnSize(UINT nType, int cx, int cy);  
    38.     afx_msg void OnSizing(UINT nSide, LPRECT lpRect);  
    39.     DECLARE_MESSAGE_MAP()  
    40.   
    41. private:  
    42.     int m_iClientWidth;  //  对话框client区域的宽度  
    43.     int m_iClientHeight;  //  对话框client区域的高度  
    44.     int m_iMinWidth;  //  对话框的最小宽度  
    45.     int m_iMinHeight;  //  对话框的最小高度  
    46.     PDLGCTLINFO m_pControlArray;  //  控件信息数组指针  
    47.     int m_iControlNumber;  //  设置控件信息的控件个数  
    48.     BOOL m_bShowSizeIcon;  //  是否显示表示可改变大小的图标  
    49.     CStatic m_wndSizeIcon;  //  放图标的静态控件  
    50.     //  保存图标的bitmap  
    51.     CBitmap m_bmpSizeIcon;  
    52.     BITMAP m_bitmap;  
    53. };  


    //实现文件

    1. ///  
    2. //      自动改变控件位置和大小的对话框类  
    3. //      文件名:lxDialog.cpp  
    4. //      作者:StarLee(coolstarlee@sohu.com)  
    5. //  
    6.   
    7. #include "stdafx.h"  
    8. #include "lxDialog.h"  
    9.   
    10. //  表示可改变大小的图标ID  
    11. #ifndef OBM_SIZE  
    12. #define OBM_SIZE 32766  
    13. #endif  
    14.   
    15. ClxDialog::ClxDialog(UINT nID, CWnd* pParent /*=NULL*/)  
    16.     : CDialog(nID, pParent)  
    17.     , m_iClientWidth(0)  
    18.     , m_iClientHeight(0)  
    19.     , m_iMinWidth(0)  
    20.     , m_iMinHeight(0)  
    21.     , m_pControlArray(NULL)  
    22.     , m_iControlNumber(0)  
    23.     , m_bShowSizeIcon(TRUE)  
    24. {}  
    25.   
    26. BEGIN_MESSAGE_MAP(ClxDialog, CDialog)  
    27.     ON_WM_SIZE()  
    28.     ON_WM_SIZING()  
    29. END_MESSAGE_MAP()  
    30.   
    31. BOOL ClxDialog::OnInitDialog()  
    32. {  
    33.     CDialog::OnInitDialog();  
    34.   
    35.     //  设置对话框为可变大小的  
    36.     ModifyStyle(0, WS_SIZEBOX);  
    37.   
    38.     //  以对话框的初始大小作为对话框的宽度和高度的最小值  
    39.     CRect rectDlg;  
    40.     GetWindowRect(rectDlg);  
    41.     m_iMinWidth = rectDlg.Width();  
    42.     m_iMinHeight = rectDlg.Height();  
    43.   
    44.     //  得到对话框client区域的大小  
    45.     CRect rectClient;  
    46.     GetClientRect(rectClient);  
    47.     m_iClientWidth = rectClient.Width();  
    48.     m_iClientHeight = rectClient.Height();  
    49.   
    50.     //  Load图标  
    51.     m_bmpSizeIcon.LoadOEMBitmap(OBM_SIZE);  
    52.     m_bmpSizeIcon.GetBitmap(&m_bitmap);  
    53.   
    54.     //  创建显示图标的静态控件并放在对话框右下角  
    55.     m_wndSizeIcon.Create(NULL, WS_CHILD | WS_VISIBLE | SS_BITMAP, CRect(0, 0, m_bitmap.bmWidth, m_bitmap.bmHeight), this, 0);  
    56.     m_wndSizeIcon.SetBitmap(m_bmpSizeIcon);  
    57.     m_wndSizeIcon.MoveWindow(m_iClientWidth - m_bitmap.bmWidth, m_iClientHeight - m_bitmap.bmHeight, m_bitmap.bmWidth, m_bitmap.bmHeight);  
    58.   
    59.     //  显示图标  
    60.     m_wndSizeIcon.ShowWindow(m_bShowSizeIcon);  
    61.   
    62.     return TRUE;  
    63. }  
    64.   
    65. void ClxDialog::OnSize(UINT nType, int cx, int cy)  
    66. {  
    67.     CDialog::OnSize(nType, cx, cy);  
    68.   
    69.     //  对话框宽度和高度的增量  
    70.     int iIncrementX = cx - m_iClientWidth;  
    71.     int iIncrementY = cy - m_iClientHeight;  
    72.   
    73.     //  最小化时增量为0  
    74.     if (nType == SIZE_MINIMIZED)  
    75.     {  
    76.         iIncrementX = iIncrementY = 0;  
    77.     }  
    78.   
    79.     for (int i = 0; i < m_iControlNumber; i++)  
    80.     {  
    81.         CWnd *pWndCtrl = NULL;  
    82.   
    83.         int iId = m_pControlArray[i].iId;  
    84.         int iFlag = m_pControlArray[i].iFlag;  
    85.         int iPercent = m_pControlArray[i].iPercent;  
    86.   
    87.         //  无效值  
    88.         if ((iPercent < 0) || (iPercent > 100))  
    89.             continue;  
    90.   
    91.         //  得到控件指针  
    92.         pWndCtrl = GetDlgItem(iId);  
    93.         if ((NULL != pWndCtrl) && IsWindow(pWndCtrl->GetSafeHwnd()))  
    94.         {  
    95.             CRect rectCtrl;  
    96.             pWndCtrl->GetWindowRect(rectCtrl);  
    97.   
    98.             ScreenToClient(rectCtrl);  
    99.   
    100.             int iLeft = rectCtrl.left;  
    101.             int iTop = rectCtrl.top;  
    102.             int iWidth = rectCtrl.Width();  
    103.             int iHeight = rectCtrl.Height();  
    104.   
    105.             switch (iFlag)  
    106.             {  
    107.             case MOVEX:  //  X方向移动  
    108.                 iLeft += (iIncrementX * iPercent / 100);  
    109.                 break;  
    110.   
    111.             case MOVEY:  //  Y方向移动  
    112.                 iTop += (iIncrementY * iPercent / 100);  
    113.                 break;  
    114.   
    115.             case MOVEXY:  //  X方向和Y方向同时移动  
    116.                 iLeft += (iIncrementX * iPercent / 100);  
    117.                 iTop += (iIncrementY * iPercent / 100);  
    118.                 break;  
    119.   
    120.             case ELASTICX:  //  X方向改变大小  
    121.                 iWidth += (iIncrementX * iPercent / 100);  
    122.                 break;  
    123.   
    124.             case ELASTICY:  //  Y方向改变大小  
    125.                 iHeight += (iIncrementY * iPercent / 100);  
    126.                 break;  
    127.   
    128.             case ELASTICXY:  //  X方向和Y方向同时改变大小  
    129.                 iWidth += (iIncrementX * iPercent / 100);  
    130.                 iHeight += (iIncrementY * iPercent / 100);  
    131.                 break;  
    132.   
    133.             default:  
    134.                 ;  
    135.             }  
    136.   
    137.             //  把控件移动到新位置  
    138.             pWndCtrl->MoveWindow(iLeft, iTop, iWidth, iHeight);  
    139.             }  
    140.     }  
    141.   
    142.     //  把图标移动到对话框右下角  
    143.     if (IsWindow(m_wndSizeIcon.GetSafeHwnd()))  
    144.         m_wndSizeIcon.MoveWindow(cx - m_bitmap.bmWidth, cy - m_bitmap.bmHeight, m_bitmap.bmWidth, m_bitmap.bmHeight);  
    145.   
    146.     //  记录对话框client区域的大小  
    147.     if (nType != SIZE_MINIMIZED)  
    148.     {  
    149.         m_iClientWidth = cx;  
    150.         m_iClientHeight = cy;  
    151.     }  
    152. }  
    153.   
    154. void ClxDialog::OnSizing(UINT nSide, LPRECT lpRect)  
    155. {  
    156.     CDialog::OnSizing(nSide, lpRect);  
    157.   
    158.     //  对话框不能小于初始大小  
    159.   
    160.     int iWidth = lpRect->right - lpRect->left;  
    161.     int iHeight = lpRect->bottom - lpRect->top;  
    162.   
    163.     if (iWidth <= m_iMinWidth)  
    164.         lpRect->right = lpRect->left + m_iMinWidth;  
    165.    
    166.     if(iHeight <= m_iMinHeight)  
    167.         lpRect->bottom = lpRect->top + m_iMinHeight;  
    168. }  
    169.   
    170. BOOL ClxDialog::SetControlProperty(PDLGCTLINFO lp, int nElements)  
    171. {  
    172.     //  设置控件数组信息  
    173.   
    174.     if (NULL == lp)  
    175.         return FALSE;  
    176.   
    177.     if (nElements <= 0)  
    178.         return FALSE;  
    179.   
    180.     m_pControlArray = lp;  
    181.     m_iControlNumber = nElements;  
    182.   
    183.     return TRUE;  
    184. }  
    185.   
    186. void ClxDialog::ShowSizeIcon(BOOL bShow /*=NULL*/)  
    187. {  
    188.     m_bShowSizeIcon = bShow;  
    189. }  

    使用方法

    //使用方法,添加到工程文件中,然后从ClxDialog派生对话框 
    1,在非模态对话框类的头文件(.h)顶部加上#include "lxDialog.h",然后把非模态对话框类的基类改成ClxDialog,也就是在头文件里class C****** : public CDialog 改成: class C****** : public ClxDialog 
    2,在非模态对话框类的.cpp函数里,把构造函数 
    C*****::C*****(CWnd* pParent ): CDialog(C*****::IDD, pParent) 改成: 
    C*****::C*****(CWnd* pParent ): ClxDialog(C*****::IDD, pParent) 2,用类向导给非模态对话框添加一个OnInitDialog()函数;也就是在双击类向导->Message Maps-> 选非模态对话框类;Messages选WM_INITDIALOG双击它,这样在你的非模态对话框的cpp文件里就生成了ON_WM_INITDIALOG和OnInitDialog()函数; 
    3,在这个OnInitDialog函数里添加代码:  ClxDialog::OnInitDialog(); 
     ClxDialog::ShowSizeIcon(TRUE);//显示可以调整大小的图标
     static DLGCTLINFO dcMenuGroup[] =     {   
            {IDCANCEL, MOVEX, 100},        
    {IDCANCEL, MOVEY, 100}, 
            {IDC_EDIT_RECDSPDLG, ELASTICX, 100},       
    {IDC_EDIT_RECDSPDLG, ELASTICY, 100},  
     }; 
    // 设置控件信息
      SetControlProperty(dcMenuGroup, sizeof(dcMenuGroup)/sizeof(DLGCTLINFO));
     return TRUE;  
    //IDCANCEL是关闭按钮的ID,IDOK按钮我去掉了所以没加,IDC_EDIT_RECDSPDLG是一个EDIT控件 
    4,再用类向导添加OnSize()函数,也就是双击ON_WM_SIZE,这样就增加了 
    void C******::OnSize(UINT nType, int cx, int cy) 这个函数,然后在这个函数里添加代码:ClxDialog::OnSize(nType, cx, cy); 
    5,别忘了在资源里右键你的非模态对话框,把属性栏Styles里Border选成Resizing。

     
    展开全文
  • 1. 处理对话框的WM_SIZE,然后用MoveWindow或者SetWindowPos来把对话框上面的控件重新调整新位置和大小。  2. 基本的做法就是响应WM_SIZE消息,并按照窗口大小比例来调整控件的位置和大小,控件的大小最好设置成...
  • 下载demo project - 45 Kb 下载source - 6 Kb 下载MFC7.1 DLLs - 812 Kb (If you execute ResizeDlg.exe in above demo-project and OS fail for no mfcxxx.DLL found, then download those DLLs and unzip ...后对话框
  • 创建一个拖动,可调整大小和自定义对话框 这是一个使用Vanilla Javascript创建拖动对话框的库。 他使创建事件的过程自动化,该事件可以监听触摸,点击和移动。 因此,您无需担心创建javascript代码,打开...
  • 一个常见的用户失望是对话框不调整大小。虽然有很多方法来解决这个问题,大多数是面向新代码,可以设计调整。这使得现有的身体调整大小对话框。本文描述了一种方法,允许调整很容易改进的Win32对话框。通过...
  • 上图中的对话框宽度是根据屏幕宽度按比例设定的,高度是根据内容自动调整的,位置是距离屏幕顶端一定比例距离。 主要代码: public class CustomDialog extends Dialog { private static int default_width = 160;...
  • easysize_动态调整对话框控件位置和大小(转摘) 2008-08-29 14:21 EasySize - Dialog resizing in no time! http://www.codeproject.com/KB/dialog/easysize.aspx AutoSizeDlg - an autoresizing class for ATL...
  • VC对话框运行后能改变大小的问题

    千次阅读 2008-02-27 17:34:00
    进寻找后发现:通过对话框的属性的maxize和minize可以设置是否具有最大化和最小化按钮,但是仍然能改变大小。但是经过一番搜索,发现在对话框的Oninitdialog 加一句ModifyStyle( NULL, WS_THICKFRAME);可以设置...
  • MFC动态调整对话框控件位置和大小

    千次阅读 2016-06-01 19:54:11
    6,如果你希望窗口在调整大小的时候限制最大能超过多少,最小能小于多少可以重载onsizing消息 这个消息好象能在类向导里直接添加,其实是可以的。当然,你要是嫌麻烦的话,就如下做1: 直接早在: ...
  • 1,将在对话框的属性里设置 边框可调整大小的 <br />2,在主窗体cpp添加 #include EasySize.h ,也可以按照原创的方法添加到 stdafx.h中 <br />3,在定义主窗体的地方 <br />以下是引用片段:...
  • 一、禁止对话框的移动 (1)、第一种方法 为这个对话框添加系统消息过虑处理: .h中: ... afx_msg void OnSysCommand(UINT nID, LPARAM lParam); ... .cpp中 BEGIN_MESSAGE_MAP(CXXXDlg, CDialog) ... ...
  • 对话框

    千次阅读 2014-12-08 05:05:51
    对话框,大家应该很熟悉了,在我们常用的软件中大多都有对话框界面,例如,360安全卫士的主界面其实就是个对话框,只是它做了很多美工方面的工作,将其大大美化了。  创建对话框主要分两大步,第一,创建对话框...
  • MFC 对话框改变字体大小

    千次阅读 2016-12-24 19:05:14
    VC的对话框字体设置对所有控件都有效,你能单独地改变某个静态文本的字体。对于你的问题,需要首先用CreateFont来建立一个字体对象,然后调用控件的SetFont,就可以了。  例子:  1、改静态文体的ID,如:IDC_...
  • 6,如果你希望窗口在调整大小的时候限制最大能超过多少,最小能小于多少可以重载onsizing消息 这个消息好象能在类向导里直接添加,其实是可以的。当然,你要是嫌麻烦的话,就如下做1: 直接早在: 以下是引用...
  • 最简单的方法(51开源时代) 需要写任何代码禁止MFC改变窗口大小,只需要修改对话框外观的Border属性为Dialog Frame。
  • dialog创建对话框errordlg 创建错误对话框helpdlg 创建帮助对话框inputdlg 创建输入对话框listdlg 创建选择列表对话框msgbox创建消息对话框pagedlg 显示页面的版面对话框printdlg 显示打印对话框questdlg 问题对话框...
  • Delphi中实现可以更改大小对话框

    万次阅读 2005-04-11 13:33:00
    关键字:Dialog、对话框、resizable1、问题的提出问题来自Stanley_Xu,希望得到只有关闭按钮(还可以有帮助),左上也没有程序的图标并且能够更改窗口大小对话框。VCL中为TForm设置了BorderStyle和BorderIcons属性...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 42,811
精华内容 17,124
关键字:

对话框可不可以调整大小