zoukankan      html  css  js  c++  java
  • 对话框和控件位置设置

    本程序下载地址:  

      通常设置对话框以及对话框上的各种控件的位置,可以直接在资源对话框那里进行手动来调整。 但这样做往往导致调整不精确,不能够很好的进行界面布局,对齐方式也不是很好。 同时对话框上的各控件资源可能会在放大、缩小、隐藏对话框的时候,控件资源隐藏了部分,或者全部都隐藏了。 对这种问题的解决方式就是在WM_SIZE消息处理函数中,通过编写代码的方式对各个控件进行调整。

      用来调整对话框以及各个控件位置的函数就是:MoveWindow, 该函数原型如下:

    void MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE);

      通过设置控件和对话框的的起始坐标x,y, 以及它的宽和高就指定了控件在对话框上的显示位置了。最后一个参数为默认参数,可以不管他。

      下面是一个例子: 通过在WM_SIZE消息处理函数Onsize中设置 “打开”, “关闭” 按钮, 以及“文本框” 在对话框上的位置。

    void CWindowSizeDlg::OnSize(UINT nType, int cx, int cy) 
    {
        CDialog::OnSize(nType, cx, cy);
        
        // TODO: Add your message handler code here
        CRect rtClient;
        GetClientRect(&rtClient);
    
        //表示一个间隔,可以任意设置
        int nVal = 50;
    
        //按钮宽高
        int nBtnWidth = 40;
        int nBtnHigh = 30;
    
        //文本框宽高
        int nEditWidth = 200;
        int nEditHigh = 30;
    
        //打开按钮位置
        if( m_BtnOpen.GetSafeHwnd() )
        {
            m_BtnOpen.MoveWindow(rtClient.left + nVal, rtClient.top + nVal, nBtnWidth, nBtnHigh);
        }
    
        //关闭按钮位置
        if( m_BtnClose.GetSafeHwnd() )
        {
            m_BtnClose.MoveWindow(rtClient.left + nVal + nBtnWidth + 100,  rtClient.top + nVal, nBtnWidth, nBtnHigh);
        }
    
        //文本框按钮位置
        if( m_Edit.GetSafeHwnd() )
        {
            m_Edit.MoveWindow( rtClient.left + nVal, rtClient.top + nVal + 100, nEditWidth, nEditHigh);
        }
    }

      程序运行结果如下: 

         

  • 相关阅读:
    cocos2D-X 4.0 build
    Boost Download
    史上最全的CSS hack
    web前端js中ES6的规范写法
    爬虫最终杀手锏 --- PhantomJS 详解(附案例)
    移动端300ms延迟的解决方法
    js动态生成html元素并为元素追加属性
    css中border-sizing属性详解和应用
    纯CSS实现Tab切换
    阻止移动端浏览器点击图片会预览的几种方法
  • 原文地址:https://www.cnblogs.com/xydblog/p/3641220.html
Copyright © 2011-2022 走看看