所有的對話方塊都是基於cdialog的,也就都具有cdialog的特徵,本文以cdialog為基類派生乙個新的類cskindialogbase,只需將基於cdialog的對話方塊中cdialog替換成cskindialogbase,則可具有自繪dlg的特徵.
下面例子是自己重繪了非客戶區及客戶區底色完成的乙個圓角dialog的基類,直接上圖:
實現步驟:
1.派生自cdialog的類cskindialogbase,這時系統會自動生成乙個dlg資源,把enum ;刪除掉,過載cskindialogbase的建構函式:
記得把原來預設的建構函式刪除掉
2.在onnccalcsize中定義非客戶區邊框的size,這裡用到的繪製邊框的都是6*5的,所以設定如下:
3.在onnchittest中設定caption的size,將客戶區一部分對映為非客戶區,以便拖動。
4.將客戶區顏色刷為和非客戶區繪製一樣的顏色,這裡為rgb(240,240,240),有兩種實現方式,在onerasebkgnd中和在onctlcolor均可實現 或
5.繪製非客戶區,這裡必須用cwindowdc來繪製
至此,完成,呼叫方法很簡單:對任意以cdialog為基類的對話方塊,將cdialog用cskindialogbase替換,即可變成上圖所示的對話方塊形狀(請將邊框設為none)。
本人小菜,隨手寫的,很多不周,請多指點,3q。
獲取對話方塊當前cfont 自繪對話方塊
閒來無事,寫了乙個簡單的對話方塊介面,希望給需要的朋友有所幫助。介面如下 介面很單調,我只是想說明一下如何實現介面的自繪。如果有需要,也可以繪製更複雜漂亮的介面。程式的實現也不複雜,接下來就跟著我一步一步做。首先,建立乙個基於對話方塊的應用程式。接下來,在ctestdlg類中新增兩個成員函式 in ...
自繪對話方塊標題欄
本例中將涉及到對話方塊標題欄的自繪,雙緩衝點陣圖的顯示以及位圖按鈕類的使用。1.標題欄自繪 2.雙緩衝顯示位圖 雙緩衝顯示點陣圖的原理網上介紹的比較多,主要思路如下 本例中的ctestbitmapshowdlg主測試類中位圖的顯示,以及ccolortitledlg標題欄重繪類中標題欄的貼圖操作都是使...
Qt5教程 8 標準對話方塊和檔案對話方塊
includeqaction p3 pdialog addaction 關於 connect p3,qaction triggered,執行後點選選單欄下的 關於 彈出 關於 對話方塊 qaction p4 pdialog addaction 選項 connect p4,qaction trigge...