MFC控制項大小隨窗體改變而改變大小

2021-10-01 02:10:07 字數 2312 閱讀 5721

#pragma once

/*程式說明

用於mfc程式控制元件隨著視窗大小改變而改變

標頭檔案

itemresize.h

.cpp檔案

itemresize.cpp

用法說明

1.在對話方塊標頭檔案中新增此類的物件 citemresize m_itemsize;

2.在視窗初始化函式 oninitdialog中填寫需要改變大小的對應控制項的id

m_itemsize.additemrect(idok,this);

m_itemsize.additemrect(id_list1,this);

此處的id替換成對話方塊控制項實際的id

3.新增onsize函式,並呼叫

m_itemsize.resizeitem();

不要忘記引用標頭檔案

*/#ifndef itemresize_h

#define itemresize_h

// !itemresize_h

#include

#include

using

namespace std;

typedef

struct _resizeinfo

resizeinfo;

class

citemresize

;#endif

#include

"stdafx.h"

#include

"itemresize.h"

citemresize::

citemresize()

citemresize::

~citemresize()

void citemresize::

additemrect

(uint nid, cwnd* pparent)

; rf.nid = nid;

rf.pparent = pparent;

crect rect;

pparent-

>

getclientrect

(&m_rectdlg)

; cwnd *pitem = pparent-

>

getdlgitem

(nid)

;assert

(pitem)

;//判斷控制項指標是否有效

pitem-

>

getwindowrect

(&rect)

; pparent-

>

screentoclient

(&rect)

; rf.fleft =

(float

)(rect.left)/(

float

)(m_rectdlg.

width()

);rf.fright =

(float

)(rect.right)/(

float

)(m_rectdlg.

width()

);rf.ftop =

(float

)(rect.top)/(

float

)(m_rectdlg.

height()

);rf.fbottom =

(float

)(rect.bottom)/(

float

)(m_rectdlg.

height()

);m_vresizeid.

push_back

(rf);}

void citemresize::

resizeitem()

}}

/*

用法說明

1.首先為窗體類新增crect m_rect,該成員變數用來記錄窗體的當前大小。

2.在類嚮導裡面(ctrl+w),為窗體新增訊息wm_size的響應函式onsize();

*/void c*****managementdlg::

onsize

(uint ntype,

int cx,

int cy)

//3.新增乙個改變控制項大小的使用者函式,void changesize(cwnd *pwnd, int cx, int cy),並編寫**

void c*****managementdlg::

changesize

(cwnd *pwnd,

int cx,

int cy)

}

mfc 控制項大小隨窗體改變而改變

控制項是從cwnd派生的,但不能使用setwindowpos 或onsize 或onsizing 來改變其大小,應在父視窗的wm size訊息中使用movewindow 來進行調整。vc 之根據對話方塊大小調整控制項大小 1 在對話方塊類中加入成員變數crect m rect 用於儲存對話方塊大小變...

MFC窗體所有控制項大小隨窗體改變而改變

在乙個基於mfc的dialog上布置許多控制項的時候,有時候在改變dialog大小的時候控制項不隨著改變,現在告訴大家怎麼讓dialog所有控制項隨dialog改變而改變。現在已最簡單新建的對話方塊,在新建的dialog裡面的 確定 和 取消 按鈕,在對話方塊最大化得時候,不會一起變大的,而是保持原...

wpf 控制項大小隨窗體大小改變而改變

wpf可以直接通過設定圖形類控制項的水平和垂直alighment為stretch實現 用乙個viewbox裝上所有的window內容然後當window縮放時就可以一起放大縮小了 viewbox的顯示機制是,先在記憶體中把按照邏輯大小把子控制項顯示出來,然後等比例的縮放顯示到viewbox的客戶區 例...