自繪對話方塊標題欄

2021-09-30 06:05:22 字數 882 閱讀 4043

本例中將涉及到對話方塊標題欄的自繪,雙緩衝點陣圖的顯示以及位圖按鈕類的使用。

1. 標題欄自繪

2. 雙緩衝顯示位圖

雙緩衝顯示點陣圖的原理網上介紹的比較多,主要思路如下:

本例中的ctestbitmapshowdlg主測試類中位圖的顯示,以及ccolortitledlg標題欄重繪類中標題欄的貼圖操作都是使用雙緩衝來實現,以避免介面的閃爍。

3. 位圖按鈕類的使用

本例中對ctestbitmapshowdlg主測試類中的按鈕進行了美化處理,使用了cbitmapbtn按鈕點陣圖類,事先用photoshop為每個按鈕繪製四種不同狀態的點陣圖,即正常狀態,滑鼠選中狀態,按下滑鼠狀態和非使用狀態,為了達到立體感的效果,需要使用到photoshop中的漸變色處理。cbitmapbtn按鈕點陣圖類的使用方法:首先將定義按鈕對應的控制項變數,然後將繪製的bitmap匯入到工程中,呼叫cbitmapbtn按鈕點陣圖類的setbitmap方法將按鈕與按鈕關聯起來,如下所示:

4. 存在的不足

當對話方塊比較大時,我們將滑鼠移到標題欄按下左鍵拖動對話方塊,向下拖動標題欄不會閃爍,但向上拖動時標題欄會閃爍,這點尚需討論和改進。

5. 結束語

正如上面所說,關於標題欄自繪的問題問的比較多,而網路上給出的例子大都存在問題,所以在此將我處理過的**拿出來與大家分享一下,相互學習,希望大家批評指正!另外,這是本人第一次發博,希望大家支援一下!謝謝!

ps:對話方塊標題欄自繪效果如下圖所示:(下圖是視窗失去焦點時的情況)

無標題欄對話方塊的拖動

實際上,用滑鼠點住對話方塊背景進行拖動操作並不難,但是你必須了解在標題欄裡拖動視窗的原理。windows首先確定滑鼠點中了那個視窗,然後向那個視窗傳送乙個wm nchittest訊息找出此視窗的哪個 非客戶區 如邊界 最大化 最小化按鈕 選單 標題等等 擁有滑鼠游標。接著預設的視窗過程響應訊息並返回...

MFC對話方塊 重繪非客戶端區域(標題欄)

某些情況下需要在對話方塊標題欄上新增按鈕,在此mark下 環境 win7 vs2008 sp1 專案 mfc對話方塊 步驟 1.重寫方法 defwindowproc 1.1 h檔案新增 如下 a.virtual void dodataexchange cdataexchange pdx ddx dd...

WPF 標題欄 右鍵視窗標題新增關於對話方塊

原文 wpf 標題欄 右鍵視窗標題新增關於對話方塊 wpf標題欄 右鍵選單 中新增新項 public partial class mainwindow window region 給wpf標題欄的右鍵選單欄 新增 關於 選單項 private void mainwindow sourceinitia...