對話方塊控制項自動調整大小, 位置

2021-04-19 23:07:52 字數 2295 閱讀 9527

class

cwndautopos

;public

:

cwndautopos();

~cwndautopos();

bool

clear();

bool

additem(

intnid, bool

bredraw = false,

intnpersentx = 0,

intnpersenty = 0,

intnpersentwidth = 0,

intnpersentheigh = 0);

bool

initorgsize(cwnd *pparent);

bool

inflateitemrect(

intnid, crect &iftrect, bool

brepaint = true);

bool

deflateitemrect(

intnid, crect &dftrect, bool

brepaint = true);

bool

finditem(

intnid, item_data **ppitemdata);

virtual

void

onparentsize(

intnwidth,

intnheigh, bool

brepaint = false);

//cwnd *

m_pparent;

intm_nwidth;

intm_nheigh;

clist

m_itemlist;

};//cwndautopos

bool

nmfc::getdlgbkrgn(cwnd *pwnd, crgn *pbkrgn)

pbkrgn->createrectrgn(0, 0, 0, 0);

pbkrgn->combinergn(&mainrgn, &allrgn, rgn_xor);

mainrgn.deleteobject();

allrgn.deleteobject();

return

true;

}cwndautopos

::cwndautopos()

cwndautopos

::~cwndautopos()

bool

cwndautopos::clear()

bool

cwndautopos::additem(

intnid, bool

bredraw,

intnpersentx,

intnpersenty,

intnpersentwidth,

intnpersentheigh)

bool

cwndautopos::initorgsize(cwnd *pparent)

bool

cwndautopos::finditem(

intnid, item_data **ppitemdata)

}

return

false;

}bool

cwndautopos::inflateitemrect(

intnid, crect &iftrect, bool

brepaint)

bool

cwndautopos::deflateitemrect(

intnid, crect &dftrect, bool

brepaint)

void

cwndautopos::onparentsize(

intnwidth,

intnheigh, bool

brepaint)

enddeferwindowpos(hwinposinfo);

nmfc::getdlgbkrgn(m_pparent, &bkrgn);

m_pparent->invalidatergn(&bkrgn, true);

return

;

}

//cwndautopos

用法: (如 ctinyiedlg )

1. 初始化

bool

ctinyiedlg::oninitdialog()

2. onsize

void

ctinyiedlg::onsize(uint

ntype,

intcx,

intcy)

如何實現控制項隨對話方塊大小變化而自動調整大小和位置

1.處理對話方塊的wm size,然後用movewindow或者setwindowpos來把對話方塊上面的控制項重新調整新位置和大小。2.基本的做法就是響應wm size訊息,並按照視窗大小比例來調整控制項的位置和大小,控制項的大小最好設定成視窗的百分之幾,這樣的話,就可以根據視窗的大小隨時調整了。...

VC中自動改變控制項位置和大小的對話方塊類

在用 vc開發應用程式時,經常會要做一些可以改變大小的對話方塊,而這個時候就要求對話方塊上的控制項會隨著對話方塊大小的改變而改變自己的位置和大小。如果控制項比較少,那可以在對話方塊的onsize 事件裡面新增 通過計算來調整各個控制項的位置和大小 但是,如果對話方塊上的控制項比較多的話,那這將是一件...

VC中自動改變控制項位置和大小的對話方塊類

typedef struct dlgcontroltag dlgctlinfo,pdlgctlinfo 這裡要對結構中的iflag和ipercent進行一些解釋。其中iflag是下面的列舉值 enum ipercent表示改變值佔對話方塊改變值的百分比。例如,乙個控制項的ipercent值為100,...