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);
        }
    }

      程序运行结果如下: 

         

  • 相关阅读:
    创建类型5-3:单例模式(Singleton Pattern)
    创建类型5-2:抽象工厂模式(Abstract Factory Pattern)
    创建类型5-1:工厂模式(Factory Pattern)
    第一章:Netty介绍
    第二章:第一个Netty程序
    第四章:Transports(传输)
    第十六章:从EventLoop取消注册和重新注册
    第十五章:选择正确的线程模型
    第十四章:实现自定义的编码解码器
    第十三章:通过UDP广播事件
  • 原文地址:https://www.cnblogs.com/xydblog/p/3641220.html
Copyright © 2011-2022 走看看