介紹 對話方塊通常是矩形的。可以採用多種方法使其在形狀上非矩形。但是,這些方法中的大多數都很複雜,適合使用**建立具有**或影象形狀的對話方塊的應用程式。如果對話方塊所需的形狀很簡單,比如圓角矩形或橢圓,那麼可以使用更簡單的方法。在這個方法中,建立多個crgn物件,然後組合(區域的聯合)來建立乙個復合區域。對話方塊然後給出復合區域的形狀。 的** 所有需要的**都在對話方塊的oninitdialog方法中 步驟1:設定對話方塊樣式 為了改變對話方塊的形狀,在對話方塊的oninitdialog中,對話方塊的標題和邊框被刪除。隱藏,複製code
...步驟2:建立單獨的區域 然後使用對話方塊的windowhide座標建立單個的橢圓區域。複製code// remove caption and border
setwindowlong(m_hwnd, gwl_style, getwindowlong(m_hwnd, gwl_style)
& (~(ws_caption | ws_border)));
...
// get the rectangle步驟3:將這些區域合併為乙個區域 這些區域被組合成乙個單獨的區域。這種結合實際上是所有獨立區域的結合。複製codecrect rect;
getwindowrect(&rect);
int w = rect.width();
int h = rect.height();
crgn rgn1;
crgn rgn2;
// create the top ellipse
rgn1.createellipticrgn(1, 1, w, h/2 + 30);
// create the bottom ellipse
rgn2.createellipticrgn(1, h/2 - 30, w, h);
// combine the two ellipses步驟4:改變對話方塊的形狀到區域 對話方塊的形狀可以使用下面的**隱藏來更改複製codecombinergn(rgn1, rgn1, rgn2, rgn_or);
// set the window region第五步:清理 crgn物件需要與區域分離,否則當rgn物件離開scopehide時,crgn析構器會關閉hrgn控制代碼。複製codesetwindowrgn(static_cast(rgn1.getsafehandle()), true);
rgn1.detach();rgn2.detach();
建立簡單對話方塊
簡單對話方塊playgame.cpp在搞了大約乙個星期左右,終於看見想要的框了,不過還不太完善,先寫出這個星期來所學到的問題吧!1.首先要定義資源 resource dialog r dlg player name dialog dlg line 2.接下來編寫對話方塊 executeld 用於裝載...
模態對話方塊和非模態對話方塊的建立彈出
一 模態對話方塊的建立及顯示 1 windows對話方塊分為兩類 模態對話方塊和非模態對話方塊。模態對話方塊 當它彈出後,本應用程式其他視窗將不再接受使用者輸入,只有該對話方塊響應使用者輸入,在對它進行相應操作退出後,其他視窗才能繼續與使用者互動。非模態對話方塊 它彈出後,本程式其他視窗仍能響應使用...
MFC建立模態對話方塊和非模態對話方塊
以下主對話方塊類為 maindlg 一 建立模態對話方塊 1.在資源檢視裡插入dialog,對新建的對話方塊進行更改屬性新增需要的控制項等操作。2.在新建的對話方塊中右鍵新增類,新增新的對話方塊類cmodeldlg。3.在maindlg.h中包含modeldlg的標頭檔案 include cmode...