VC對話方塊小知識

2021-05-21 13:16:46 字數 1721 閱讀 4266

一、對話方塊屬性

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) 

四、訊息處理函式共享

指多個連續id的控制項都發出相同的訊息,使用on_control_range巨集來實現,類嚮導不支援on_control_range巨集,需手動新增:

afx_msg onbuttonclicked();

on_control_range(bn_clicked,idc_button1,idc_button3,onbuttonclicked).

然後在onbuttonclicked()中新增訊息響應。

文章出處:diy部落(

基礎篇 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...