gpt4 book ai didi

SetLayeredWindowAttributes 和 BitBlt 之间的 C++ WinAPI 冲突

转载 作者:行者123 更新时间:2023-11-28 06:05:00 26 4
gpt4 key购买 nike

我使用 DWM 创建了一个自定义窗口。我使用 PaintCustomCaption() 绘制了标题,这是来自 MSDN 的示例。它工作正常,直到我添加 SetLayeredWindowAttributes() .

添加前的窗口

SetLayeredWindowAttributes(hWnd,RGB(0,0,1),0,LWA_COLORKEY);

enter image description here

添加后

enter image description here

我尝试更改 RGB 值,但除了 RGB(0,0,0) 之外它仍然是黑色。

我想知道 BitBlt() 是否正常工作。

编辑:

我之所以添加SetLayeredWindowAttributes就是为了解决这个问题

enter image description here

你有其他方法来绘制标题吗?

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_NCCALCSIZEWM_NCHITTEST

关于SetLayeredWindowAttributes 和 BitBlt 之间的 C++ WinAPI 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32564457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com