zoukankan      html  css  js  c++  java
  • 简单而强大的可调整大小的对话框

    示例对话框 原来的对话框 后对话框大小的右下角 后对话框大小的工具 介绍 这类的大小可调整的对话框可以自动调整控件的位置 和/或大小对话框的大小。重新定位和调整方向敏感 (左、右、上和底部可以分别处理不同) 行为六个方法之一:没有,调整,回购,相对的,变焦,DELTA_ZOOM(见 下面的更多信息)。 背景 这个类是源自于无闪烁 调整对话框(谢谢安迪·布朗)。安迪·布朗已经解决了闪烁 问题(这真的困惑我一次)和他的类支持在没有调整, 调整、回购、相对模式。 但是我需要更多的可控的重新定位和/或调整处理程序,我想 别人也需要它。所以我增强的安迪·布朗的类和写这类 这增加了以下功能: 重新定位和调整方向敏感。如安迪·布朗的类治疗 对话框的大小左右一样大小(x)。这个类可以 用不同的方式来对待它们。 变焦控制对话框放大。 能够调整多个控件的位置和大小分别 在同一X / y形水准仪。如这类可以调整两个控件 都处于同一水平线对话框的changed-width 50%,在另一个吗 话说,如果对话框的宽度增加了10个像素,这类增加 控件的宽度5像素。 使用的代码 ResizeDlg.cpp和ResizeDlg.h添加到您的项目或makefile; 添加“#包括ResizeDlg。h”stdafx.h文件或您的对话框 头文件; 让你dialog-derived类继承CResizeDlg代替 的CDialog取代“CDialog”的所有实例 与“CResizeDlg”在你的对话框头文件和实现文件。 添加一个处理程序WM_INITDIALOG如果你在你的对话框类 没有这样做,如下所述。 WM_INITDIALOG (OnInitDialog) 在你OnInitDialog处理程序应该调用基类的 OnInitDialog AddControl呼吁这些控件 自动重新定位和/或大小当对话框的大小。 这是一个例子。隐藏,复制Code

    //
    // the minimal work you have to do in your OnInitDialog handler.
    //
    BOOL CMyDialog::OnInitDialog()
    {
     CResizeDlg::OnInitDialog();
    
     AddControl(IDOK, CST_REPOS, CST_REPOS, CST_NONE, CST_NONE, 1);
     AddControl(IDCANCEL, CST_REPOS, CST_REPOS, CST_NONE, CST_NONE, 1);
     
     return TRUE;
    }

    如何控制定位和/或尺寸吗 这个类允许控制动态地重新定位和/或大小 方向(左、上、右、下)是以下方式之一。 CST_NONEdo不是这个方向重新定位和规模;CST_RESIZEsize控制对话框的大小改变 方向。隐藏,/ /复制代码 / /在x方向,△ / /对话框的changed-width。 // ctrlRect。+ =△; CST_REPOSreposition控制对话框的改变大小 方向。隐藏,/ /复制代码 / /在x方向,△对话框 / / changed-width。 // ctrlRect。左+ =△; ctrlRect。+ =△; CST_RELATIVEreposition控件的用户定义的比例(可以做控制 总是在同一比例位置对话框)。隐藏,/ /复制代码 / /在x方向,m_xRatio在哪里 / /定义的比例 / /新ClientRect pnRect是对话框 // newCx = ctrlRect.Width (); ctrlRect。= (int) (m_xRatio * pnRect→宽度()——newCx / 2.0); ctrlRect。正确的= ctrlRect。左+ newCx; CST_ZOOMreposition和大小控制自动隐藏,/ /复制代码 / /在x方向,pnRect在哪里 / /对话框的新ClientRect。 / /原始ClientRect pR0是对话框 / /(不是以前的宽度)。 // ctrlRect。= (int) (1.0 * ctrlRect.left离开了 *(双)pnRect→宽度()/ pR0→宽度()); ctrlRect。= (int) (1.0 * ctrlRect.right *(双)pnRect→宽度()/ pR0→宽度()); CST_DELTA_ZOOMreposition和大小控制比例,比例都可以 分别设置。隐藏,/ /复制代码 / /在x方向,deltaX0在哪里 / /对话框的chenged-width / /与原来相比宽度(不是 / /之前的宽度,否则错误 / /将混乱的结果)。 / /用户定义X-reposition m_xRatio / /比例和 / / m_cxRatio是用户定义的X-size比例。 // newCx = ctrlRect.Width (); ctrlRect。= (int) (ctrlRect。左+ deltaX0 * m_xRatio + newCx + deltaX0 * m_cxRatio); ctrlRect。左+ = (int) (deltaX0 * m_xRatio); 使用AddControl 你应该叫AddControl设置对话框控件的行为方式 在OnInitDialog大小。它的原型如下:隐藏,复制Code

    void AddControl( UINT nID, int xl, int xr, int yt, 
                  int yb, int bFlickerFree = 0, 
                  double xRatio = -1.0, double cxRatio = -1.0,
                  double yRatio = -1.0, double cyRatio = -1.0 );

    where nIDcontrol资源IDxlhow控制对话框调整离开时,重新定位和/或调整。 把它CST_xx之一。xrhow控件重新定位和/或调整时对话框调整正确。 把它CST_xx之一。ythow控件重新定位和/或调整时对话框大小。 把它CST_xx之一。ybhow控制对话框调整底部时重新定位和/或调整。 把它CST_xx之一。bFlickerFreewhether尽量避免闪烁时重新定位和/或调整 这个比例controlxRatiouser-defined方向重新定位。有效的只有当 xl xr是CST_RELATIVE或者CST_DELTA_ZOOM。将其设置为0.0 ~ 1.0.cxRatiou由ser定义的x方向调整比例。仅当xl时有效 xr是CST_DELTA_ZOOM。将其设置为0.0~1.0。yratiouser定义的y方向复位比例。有效的只有当 yt或yb是CST_RELATIVE或CST_DELTA_ZOOM。将其设置为0.0~1.0。胞浆菌定义的y方向调整比例。仅当yt时有效 或者yb是CST_DELTA_ZOOM。将其设置为0.0~1.0。 典型的AddControl用法 保持编辑控件水平调整为对话框大小。隐藏,复制CodeAddControl(编辑id, CST_RESIZE, CST_RESIZE, CST_NONE CST_NONE 1); 保持右上角按钮在相同的右上角位置。隐藏,复制CodeAddControl(按钮id, CST_REPOS, CST_REPOS, CST_NONE CST_NONE 1); 保持一个按钮在固定距离的底部和水平中心。隐藏,复制CodeAddControl(按钮id, CST_RELATIVE, CST_RELATIVE, CST_REPOS, CST_REPOS, 1, 1.0); 在水平线上有两个编辑控件,请调整左编辑控件的大小 而右一个保持相同的大小时,对话框左大小,或左一个保持 相同的大小和右一个调整时,对话框大小正确。隐藏,复制CodeAddControl (left-edit-ID CST_RESIZE, CST_NONE, CST_NONE, CST_NONE, 1); AddControl (right-edit-ID CST_REPOS, CST_RESIZE, CST_NONE, 1); 两个编辑控件如示例4。使它们的大小与对话框的大小相同 changed-width。换句话说,如果对话框的宽度增加了10个像素,那么每个 将编辑控件的宽度分别增加5像素。隐藏,复制CodeAddControl(左编辑id, CST_DELTA_ZOOM, CST_DELTA_ZOOM, CST_NONE, CST_NONE, 1,0.0, 0.5); AddControl (right-edit-ID CST_DELTA_ZOOM CST_DELTA_ZOOM, 其中0.0,0.5表示 左编辑控件不会将其位置和大小调整为对话框的50% changed-width。0.5表示右编辑控件改变其 位置为50%,因为左控件要调整大小,所以它必须重新定位,并调整大小 随对话框宽度变化50%。 注意 大小-抓地力(,在对话框的右下角)的资源ID (IDC_DLGSIZEBOX)为 ResizeDlg.h中定义。如果有的话,应该将其设置为另一个未使用资源ID 用在别的地方。 不要在对话框中为组控件设置无闪烁(设置 调用AddControl时,bFlickerFree到0)。 历史 2004年9月26日-首次公开发行。 本文转载于:http://www.diyabc.com/frontweb/news3626.html

  • 相关阅读:
    B2C电子商务网站的突围——再议什么是B2C网站,互联网营销 狼人:
    迅雷网站设计浅析,互联网营销 狼人:
    构建一个高性能的网页抓取器,互联网营销 狼人:
    Velocity China 2010大会回顾,互联网营销 狼人:
    尝试使用GraphicsMagick的缩略图功能,互联网营销 狼人:
    美妙的模电2013/4/18
    找素数 素数就是不能再进行等分的整数。比如:7,11。而9不是素数,因为它可以平分为3等份。
    WMI技术介绍和应用——查询硬件信息
    码农如何快速打造一个有设计感的网站 How to Make Your Site Look HalfDecent in Half an Hour
    poj321101背包
  • 原文地址:https://www.cnblogs.com/Dincat/p/13461229.html
Copyright © 2011-2022 走看看