• 对话框和控件位置设置


    本程序下载地址:  

      通常设置对话框以及对话框上的各种控件的位置,可以直接在资源对话框那里进行手动来调整。 但这样做往往导致调整不精确,不能够很好的进行界面布局,对齐方式也不是很好。 同时对话框上的各控件资源可能会在放大、缩小、隐藏对话框的时候,控件资源隐藏了部分,或者全部都隐藏了。 对这种问题的解决方式就是在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);
        }
    }

      程序运行结果如下: 

         

  • 相关阅读:
    一个半路出家的渗透测试工程师(三)(持续更新中)
    linux简介
    Maven学习笔记
    博客项目实现文章评论功能(重点是评论回复)
    spring-mvc + shiro框架整合(sonne_game网站开发04)
    LeetCode题解 15题 第二篇
    jsp用jstl标签比较枚举
    spring-mvc+freemarker整合(sonne_game网站开发03)
    sonne_game网站开发02spring+mybatis框架搭建
    spring各jar包作用(转载)
  • 原文地址:https://www.cnblogs.com/xydblog/p/3641220.html
Copyright © 2020-2023  润新知