我已经使用DWM创建了一个自定义窗口。我使用PaintCustomCaption()
绘制了标题,这是MSDN的示例。在添加SetLayeredWindowAttributes()
之前,它一直可以正常工作。
添加前的窗口
SetLayeredWindowAttributes(hWnd,RGB(0,0,1),0,LWA_COLORKEY);
添加后
我尝试更改RGB值,但是除了RGB(0,0,0)之外,它仍然是黑色的。
我想知道
BitBlt()
是否正常工作。编辑:
我添加SetLayeredWindowAttributes的原因是为了解决此问题
您还有其他绘画字幕的方法吗?
case WM_ACTIVATE: {
DwmExtendFrameIntoClientArea(hWnd,&m); // m={-1,-1,-1,-1};
break;
}
case WM_INITDIALOG: {
SetWindowPos(hWnd,NULL,0,0,500,500,SWP_NOMOVE|SWP_FRAMECHANGED);
SetWindowLongPtr(hWnd,GWL_STYLE,WS_VISIBLE|WS_OVERLAPPEDWINDOW);
SetWindowLongPtr(hWnd,GWL_EXSTYLE,WS_EX_LAYERED);
SetLayeredWindowAttributes(hWnd,RGB(0,0,1),0,LWA_COLORKEY);
RedrawWindow(hWnd,NULL,NULL,RDW_INVALIDATE|RDW_ERASE);
return true;
}
case WM_PAINT: {
hdc=BeginPaint(hWnd,&paintstruct);
PaintCustomCaption(hWnd,hdc)
EndPaint(hWnd,&paintstruct);
break;
}
最佳答案
如果保留窗口边框,则无需自己绘制标题,除非您想在标题中添加一些内容。
即,正常处理WM_NCCALCSIZE
和WM_NCHITTEST
。