文本框隐藏在gif动画后面 我在C++中用支持WiNAPI(不是MFC)来制作窗口,我用GDI+在窗口上做GIF动画,我创建了文本框,它显示,但是有部分在GIF后面。此链接中的图像: LRESULT回调WndProc(HWND HWND,UINT msg,WPARAM WPARAM,LPARAM LPARAM){ 开关(msg){ 案例WM_创建: hMWDC=GetDC(hwnd); pGphcs=新图形(hMWDC); WCHAR路径[最大路径]; getModuleFileName(NULL,path,MAX_path); PathRemoveFileSpecW(路径); PathAppendW(路径,L“gifs\\test.gif”); pImg=新图像(路径); 如果(pImg){ nFrmCnt=pImg->GetFrameCount(&FrameDimensionTime); 设置计时器(hwnd,绘图动画,100,空); } 打破 案例WM_计时器: 如果(wParam==绘制动画) { pImg->SelectActiveFrame(&FrameDimensionTime,nFrm); Rect DRC(0,0,pImg->GetWidth(),pImg->GetHeight()); pGphcs->Clear(彩色(128128128)); pGphcs->DrawImage(pImg、DRC); 如果(nFrm

文本框隐藏在gif动画后面 我在C++中用支持WiNAPI(不是MFC)来制作窗口,我用GDI+在窗口上做GIF动画,我创建了文本框,它显示,但是有部分在GIF后面。此链接中的图像: LRESULT回调WndProc(HWND HWND,UINT msg,WPARAM WPARAM,LPARAM LPARAM){ 开关(msg){ 案例WM_创建: hMWDC=GetDC(hwnd); pGphcs=新图形(hMWDC); WCHAR路径[最大路径]; getModuleFileName(NULL,path,MAX_path); PathRemoveFileSpecW(路径); PathAppendW(路径,L“gifs\\test.gif”); pImg=新图像(路径); 如果(pImg){ nFrmCnt=pImg->GetFrameCount(&FrameDimensionTime); 设置计时器(hwnd,绘图动画,100,空); } 打破 案例WM_计时器: 如果(wParam==绘制动画) { pImg->SelectActiveFrame(&FrameDimensionTime,nFrm); Rect DRC(0,0,pImg->GetWidth(),pImg->GetHeight()); pGphcs->Clear(彩色(128128128)); pGphcs->DrawImage(pImg、DRC); 如果(nFrm,c++,winapi,gif,animated-gif,C++,Winapi,Gif,Animated Gif,我希望gif作为背景,文本框将在它前面。 但是什么都没有:(出于性能原因,默认情况下,给定HWND的设备上下文不会从父窗口的客户端区域剪裁子窗口 如果父窗口在与子窗口相同的位置绘制某些内容,它也会在子窗口上绘制。接受某些内容(现在是最小的)性能命中您可以通过在创建主框架窗口时添加WS_CLIPCHILDREN样式,从主框架窗口绘制区域自动剪裁子窗口。使用此样式,为主框架窗口获得的任何HDC都会将子控件占用的区域排除在绘制区域之外。这将保护通过其父窗口活动防止ld窗口过度绘制 为主框架窗口设置WS

我希望gif作为背景,文本框将在它前面。
但是什么都没有:(

出于性能原因,默认情况下,给定
HWND
的设备上下文不会从父窗口的客户端区域剪裁子窗口

如果父窗口在与子窗口相同的位置绘制某些内容,它也会在子窗口上绘制。接受某些内容(现在是最小的)性能命中您可以通过在创建主框架窗口时添加
WS_CLIPCHILDREN
样式,从主框架窗口绘制区域自动剪裁子窗口。使用此样式,为主框架窗口获得的任何
HDC
都会将子控件占用的区域排除在绘制区域之外。这将保护通过其父窗口活动防止ld窗口过度绘制

主框架窗口设置
WS\u CLIPCHILDREN
应该可以解决您的问题

hwnd = CreateWindow( class_name, title, some_styles | WS_CLIPCHILDREN, ... );

有时子窗口相互重叠,然后它们可以相互透支。在这种情况下,
WS\u CLIPSIBLINGS
应用于子窗口(同一父窗口的),保护一个孩子不受另一幅画的影响。

在创建主窗口时添加
WS\u CLIPCHILDREN
可能会有所帮助。在主窗口中,是吗?是的,在主窗口中。它会从父窗口HDC的绘画区域中剪切孩子所占据的区域。请将其作为答案写入?