#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的客戶區 例...