一、對話方塊屬性
1.styles->clip siblings:排除子視窗之間的相對區域,也就是說,當乙個特定的視窗接收到繪圖訊息時,將所有重疊視窗排除在外,只重繪指定的子視窗。
styles->clip children:當在父視窗內繪圖時,排除子視窗區域。
2.more styles
system modal:系統模式對話方塊
absolute align:座標相對於螢幕原點
set foreground:設定為前台視窗
no fail create:應用於windows 95
no idle message:不傳送空閒訊息
control:不使用標題欄的對話方塊
center:在螢幕中心顯示對話方塊
center mouse:以滑鼠座標為對話方塊中心顯示對話方塊
3.extended styles
tool window:工具欄窗體
client edge:對話方塊邊框下凹
static edge:對話方塊邊框為實邊框
accept files:是否接受檔案拖放
control parent:用鍵在視窗的子視窗間搜尋
context help:在視窗標題欄新增乙個問號按鈕
no parent notify:以這個風格建立的視窗在建立和銷毀時,不向父視窗傳送wm_parentnotfy訊息
二、對話方塊的建立與顯示
1.模態對話方塊:
cdlg dlg;
dlg.domodal();
cdialog::onok();//或cdialog::oncancel()關閉模態對話方塊
2.非模態對話方塊
cdlg *dlg=new cdlg;
dlg->create(idd_dialog,this);
dlg->showwindow(sw_show);
dlg->destroywindow();//銷毀非模態對話方塊,若在乙個非模態對話方塊中實現oncancel方法,需在內部呼叫 destroywindow方法,
//不要呼叫基類的oncancel方法,因為它呼叫enddialog方法將使對話方塊不可見,但不銷毀對話方塊。
delete dlg;//destroywindow只銷毀視窗,但不釋放物件。delete釋放物件。
三、遍歷對話方塊中的控制項
控制項也是視窗,所有可以用cwnd類的方法操作控制項,gettopwindow方法可以獲得第乙個屬於cwnd的子視窗,getnextwindow方法返回視窗管理器中的下乙個視窗。首先在對話方塊中新增幾個控制項,然後在主視窗的oninitdialog中新增:
cwnd* pwnd = gettopwindow();
while(pwnd != null)
int i = pwnd->getdlgctrlid();
cstring str;
str.format("id是:%d",i);
pwnd->setwindowtext(str);
pwnd = pwnd->getnextwindow();
四、訊息處理函式共享
指多個連續id的控制項都發出相同的訊息,使用on_control_range巨集來實現,類嚮導不支援on_control_range巨集,需手動新增:
afx_msg onbuttonclicked();
on_control_range(bn_clicked,idc_button1,idc_button3,onbuttonclicked).
然後在onbuttonclicked()中新增訊息響應。
VC對話方塊小知識
一 對話方塊屬性 1.styles clip siblings 排除子視窗之間的相對區域,也就是說,當乙個特定的視窗接收到繪圖訊息時,將所有重疊視窗排除在外,只重繪指定的子視窗。styles clip children 當在父視窗內繪圖時,排除子視窗區域。2.more styles system m...
VC 選擇目錄對話方塊
browseinfo br itemidlist pitem char path max path br.hwndowner this getsafehwnd br.iimage 0 br.lparam 0 br.lpfn 0 br.lpsztitle 請選擇路徑 br.pidlroot 0 br....
vc 對話方塊 圓角視窗
為了實現圓角的對話方塊視窗,這裡主要用兩個函式,createroundrectrgn,和setwindowrgn 程式先通過getwindowrgn函式得到視窗矩形,然後通過createroundrectrgn函式建立乙個圓角矩形,最後通過setwindowrgn函式改變視窗的形狀。具體操作如下 1...