#define groupbox_startid 8000
code:
crect currentrect;
getwindowrect(¤trect) // 得到當前對話方塊的大小
currentrect.bottom += groupbox_rect.height()+20;
movewindow(¤trect,true); //改變大小,true是改變大小之後重新整理
[動態新增控制項]
以groupbox為例,首先需要new乙個cbutton,然後呼叫其create函式,注意這裡的create中的crect引數,如果是用其他的控制項的位置作為參照值,那麼用getwindowrect()得到該控制項的位置之後還需要用screentoclient()來轉換為空間在對話方塊內的座標。
code:
cbutton m_groupbox[10];
m_mjpeg_groupbox_ctl.getwindowrect(&groupbox_rect); //這是另乙個groupbox的位置
screentoclient(&groupbox_rect); //這裡容易出錯
int h=groupbox_rect.height();
groupbox_rect.bottom += h+20;
groupbox_rect.top += h+20;
m_groupbox[0].create(_t(""),bs_groupbox|ws_visible|ws_child,groupbox_rect,this,groupbox_startid+0);
m_groupbox[0].showwindow(sw_show);
//在想銷毀該控制項的地方可以用
m_groupbox[0].destroywindow();
cedit的例子:
定義乙個 cptrarray m_ptr;用於儲存建立的cedit的指標。
code:
#define groupbox_startid 8000
cptrarray m_ptr;
//建立的時候
cedit* pedit=null;
pedit=new cedit;
pedit->create(ws_visible | ws_child|ws_border,crect(0,0,80,50),this,groupbox_startid+0);
pedit->showwindow(sw_show);
//新增到m_ptr中
if(pedit!=null)
m_ptr.add((void*)pedit);
//銷毀的時候
int n=m_ptr.getsize();
for(int i=0;i
m_ptr.removeall();
cedit的例子參考自:
動態改變對話方塊大小
首先,需要在改變大小的對話方塊中新增一條分隔條,分隔條是用影象控制項製作的picture control,分隔條的位置就是對話方塊變小時所在的位置。修改分隔條id為 idc separator,選擇sunken屬性,意思是下陷。然後在需要修改的地方加入以下 static crect rectlarg...
如何讓對話方塊中的控制項隨著對話方塊大小的改變而隨之改變
今天做乙個介面專案的時候,需要讓對話方塊開始時就最大化,但是介面上的控制項,並不會隨著對話方塊的最大化 而變大,需要我們在 中設定,網上找到的方法如下 1.首先為對話方塊類增加成員變數 話框rect,利用新舊兩個rect 的比例,來計算得到各控制項位置,具體 如下 pwnd getdlgitem i...
MFC 動態改變對話方塊控制項位置尺寸
題記 第一種方法實踐時無法同時改變兩個控制項的位置,不知為何 用cwnd類的函式movewindow 或setwindowpos 可以改變控制項的大小和位置。void movewindow int x,int y,int nwidth,int nheight void movewindow lpcr...