MFC小筆記 控制項隨視窗變化

2021-10-01 18:44:05 字數 850 閱讀 5701

當視窗大小變化時,如最大化、最小化時,控制項位置和大小並沒有變化,本文實現此功能。

主介面為對話方塊,有最小化、最大化、關閉等功能。

當視窗變化時,響應 onsize 函式,並計算各控制項位置,按比例縮放。

在對話方塊類嚮導中新增 wm_size 訊息。其函式定義如下:

afx_msg void onsize(uint ntype, int cx, int cy);
在對話方塊標頭檔案宣告變數:

crect m_crect;
用於儲存位置資訊。

在oninitdialog函式中先獲取位置資訊並儲存:

getclientrect(&m_crect);
同一檔案,實現控制項變化的計算,**如下:

void ctestdlg::changesize(int ctrid, int cx, int cy)

}

先獲取控制項id,得到控制項大小,再根據當前的 x、y計算比例,再移動控制項。

在 onsize 函式中呼叫 changesize 函式:

void ctestdlg::onsize(uint ntype, int cx, int cy)

; for (int i = 0; i < sizeof(cdlgitem) / sizeof(cdlgitem[0]); i++)

getclientrect(&m_crect);// 將變化後的對話方塊大小設為舊大小

}

根據指定的控制項id進行縮放。注意,有些控制項可以不進行縮放,比如,左上方的提示語相關控制項,不需要移動。

MFC控制項隨視窗大小變化原理及實現

本文主要針對mfc的dialog,實現控制項隨視窗大小變化。原理 首先獲取dialog的初始大小,當視窗傳送變動時,呼叫onsize事件和方法,計算縮放比例,然後對介面中的所有控制項進行縮放和布局。實現 建立乙個cmfcdemodlg的dialog對話方塊 cmfcdemodlg 對話方塊 clas...

EASY SIZE 控制項隨視窗變化自由調整大小

1.設定對話方塊屬性 styles broder resizing 2.新增 include easysize.h 3.在對話方塊類定義的最前面新增 declare easysize 注意 沒有分號 4.在對話方塊的 oninitdialog 訊息函式中新增 oninitdialog 5.過載訊息 ...

控制項大小隨視窗變化的正確方法

一.在介紹這個方法之前先看下在網上見過一種方法 vc 之根據對話方塊大小調整控制項大小 1 在對話方塊類中加入成員變數crect m rect 用於儲存對話方塊大小變化前的大小 2 在對話方塊的oninitdialog 函式中獲取對話方塊建立時的大小 getclientrect m rect 3 在...