[搬家帖]EasySize使用筆記

來源:互聯網
上載者:User

    要讓對話方塊中的控制項隨著對話方塊大小的變化進行自動調整,是一件很頭疼的事情,需要在WM_SIZE的響應函數中對所有的控制項用MoveWindow()或者SetWindowPos()設定其變化比例,極其繁瑣。EasySize是一個很好解決方案,用一些宏封裝了內部的實現機制,使用起來方便快捷。原文地址:http://www.codeproject.com/KB/dialog/easysize.aspx

使用方法如下:

1.首先將EasySize.h拷貝到工程檔案夾中,然後在stdafx.h中包含該標頭檔:
    #include "EasySize.h"

2.在對話方塊類聲明中添加DECLARE_EASYSIZE宏:
    class CEasySizeDemoDlg : public CDialog
    {
    DECLARE_EASYSIZE
    ...

3.在OnInitDialog()函數中添加INIT_EASYSIZE宏(注意有分號):
    BOOL CEasySizeDemoDlg::OnInitDialog()
    {
        CDialog::OnInitDialog();
        ...   
        INIT_EASYSIZE;
        return TRUE; // return TRUE  unless you set the focus to a control
    }

4.響應WM_SIZE訊息,在響應函數中添加UPDATE_EASYSIZE宏(注意有分號):
    void CEasySizeDemoDlg::OnSize(UINT nType, int cx, int cy)
    {    
        CDialog::OnSize(nType, cx, cy);
        UPDATE_EASYSIZE;
    }

5.如果需要限制對話方塊有一個最小尺寸,首先在資源檢視中為對話方塊添加上最大化最小化按鈕,然後Class Wizard中選擇Class Info標籤,在Message fileter下拉式清單中選擇Window,然後再點擊Message Maps標籤,就出現WM_SIZING訊息了,添加該訊息的響應函數:
    void CEasySizeDemoDlg::OnSizing(UINT fwSide, LPRECT pRect)
    {
        CDialog::OnSizing(fwSide, pRect);
        EASYSIZE_MINSIZE(280,250,fwSide,pRect);
    }
這樣就把對話方塊的最小尺寸限制在(280, 250)上了

6.添加控制項布局映射,放到訊息映射之後,基本格式如下:
    BEGIN_EASYSIZE_MAP(class_name)
        ...
        EASYSIZE(control,left,top,right,bottom,options)
        ...
    END_EASYSIZE_MAP

class_name就是對話方塊類的類名

control是要設定的控制項的ID

left、top、right、bottom分別指的是該控制項左、上、右、下方的控制項的ID,也可以為以下特殊值:
        ES_BORDER:保持與邊框距離不變
        ES_KEEPSIZE:保持大小不變
                所放位置:
                         left -- 表示和right指定的控制項靠右對齊
                         right -- 表示和left指定的控制項靠左對齊
                         top -- 表示和bottom指定的控制項上對齊
                         bottom -- 表示和top指定的控制項下對齊

options可指定為0,也可指定為以下值:
        ES_HCENTER:保持寬度不變,水平位置在left和right指定的控制項正中間
        ES_VCENTER:保持高度不變,垂直位置在left和right指定的控制項正中間

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.