使用Visual C 重繪標題欄

2021-09-06 02:57:35 字數 1499 閱讀 4534

在做拖動小視窗程式時,遇到乙個問題,怎麼樣對標題欄進行繪製,弄了半天才弄出來。和vc中原理差不多,但在.net下需要將api中的hdc通過graphics.fromhdc()轉換為system.drawing.graphics

程式執行結果如下:

**如下:

///

/// 對視窗的標題欄進行重繪和設定

///

///

///

[dllimport("user32.dll")]

private static extern intptr getwindowdc(intptr hwnd);

[dllimport("user32.dll")]

private static extern int releasedc(intptr hwnd,intptr hdc);

[dllimport("kernel32.dll")]

private static extern int getlasterror();

//標題欄按鈕的矩形區域

rectangle m_rect = new rectangle(3,4,194,18);

protected override void wndproc(ref message m)

case 0xa1://wm_nclbuttondown

break; }

case 0x00a0://wm_ncmousemove

break; }

} }

主要事件參照表:

winuser.h中,定義如下:

#define wm_ncmousemove                  0x00a0

#define wm_nclbuttondown                0x00a1

#define wm_nclbuttonup                  0x00a2

#define wm_nclbuttondblclk              0x00a3

#define wm_ncrbuttondown                0x00a4

#define wm_ncrbuttonup                  0x00a5

#define wm_ncrbuttondblclk              0x00a6

#define wm_ncmbuttondown                0x00a7

#define wm_ncmbuttonup                  0x00a8

#define wm_ncmbuttondblclk              0x00a9

終結mfc標題欄重繪

1.如果需要加高標題欄 用於貼圖等 就要呼叫onnccalcsize追加部分空間 非客戶區間 cpp view plain copy void cmy2011082302dlg onnccalcsize bool bcalcvalidrects,nccalcsize params far lpncs...

MFC自繪標題欄和邊框

mfc視窗有標題欄和邊框的時候,重繪不是很方便,在onncpaint中重繪標題欄如果呼叫基類的onncpaint,自己的後面的重繪都不生效,如果不呼叫基類的onncpaint,win10上的mfc程式出現了win7風格的邊框,而且寬度還不能控制。移除邊框 dword dw getwindowlong...

自繪對話方塊標題欄

本例中將涉及到對話方塊標題欄的自繪,雙緩衝點陣圖的顯示以及位圖按鈕類的使用。1.標題欄自繪 2.雙緩衝顯示位圖 雙緩衝顯示點陣圖的原理網上介紹的比較多,主要思路如下 本例中的ctestbitmapshowdlg主測試類中位圖的顯示,以及ccolortitledlg標題欄重繪類中標題欄的貼圖操作都是使...