利用WM_NCPAINT自绘标题栏的问题(有代码)
本人有一段利用画刷根据指定位图自绘标题栏的代码。
但是程序运行后,出现以后问题:
1.标题栏上的最大化,最小化,还原按钮给画刷遮掩住了,必须鼠标移动到标题栏上才能显现
2.当移动标题栏所在窗口时, 位图相对于标题栏移动了
请高手不吝赐教.
代码如下:
CRect titleRect; //计算标题栏的坐标区域
GetWindowRect(&titleRect);
DWORD DialogBaseUnits = GetDialogBaseUnits();
WORD DialogBaseUnits_X = LOWORD(DialogBaseUnits)/4;
WORD DialogBaseUnits_Y = HIWORD(DialogBaseUnits)/8;
titleRect.top += GetSystemMetrics(SM_CYBORDER) * DialogBaseUnits_Y;
titleRect.left += GetSystemMetrics(SM_CXBORDER) * DialogBaseUnits_X;
titleRect.right -= GetSystemMetrics(SM_CXBORDER) * DialogBaseUnits_X;
titleRect.bottom = titleRect.top + GetSystemMetrics(SM_CYCAPTION)
CDC pDC; //创建DC设备
pDC.CreateDC("DISPLAY", NULL, NULL,NULL);
int saveDC = pDC.SaveDC(); //保存设备
CBrush brush; //使用自定义/位图画刷,画背景图
CBitmap bitmap;
// IDB_TITLEBAR即为上述主界面标题栏背景位图的资源ID
bitmap.LoadBitmap( IDB_TITLEBAR );
CBitmap* bk = &bitmap;
brush.CreatePatternBrush(bk);
pDC.SetBkMode(TRANSPARENT);//标题栏背景模式设为透明
//用自定义的画刷填充背景正中位置显示系统标题
pDC.FillRect(&titleRect,&brush);