在做拖動小視窗程式時,遇到乙個問題,怎麼樣對標題欄進行繪製,弄了半天才弄出來。和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標題欄重繪類中標題欄的貼圖操作都是使...