Windows 窗口(win32 UI)刷新不正确

Windows 窗口(win32 UI)刷新不正确,windows,winforms,Windows,Winforms,这是一个win32程序。 当我拖动子窗口(使用WS\u CHILDstyle)时,它无法正确刷新 子窗口的类是已注册的窗口类。子窗口具有WS\u标题样式。当您将光标放在标题区域时,按下鼠标左键,可以拖动此子窗口 但当拖动窗口覆盖另一个窗口时,如Gif所示,客户端区域和非客户端区域都是一团糟 我处理了WM\u NCPAINT来重新绘制非客户区 HDC hdc=GetWindowDC(hwnd); HDC memdc=CreateCompatibleDC(hdc); HBITMAP bmp=Crea

这是一个win32程序。 当我拖动子窗口(使用
WS\u CHILD
style)时,它无法正确刷新

子窗口的类是已注册的窗口类。子窗口具有
WS\u标题
样式。当您将光标放在标题区域时,按下鼠标左键,可以拖动此子窗口

但当拖动窗口覆盖另一个窗口时,如Gif所示,客户端区域和非客户端区域都是一团糟

我处理了
WM\u NCPAINT
来重新绘制非客户区

HDC hdc=GetWindowDC(hwnd);
HDC memdc=CreateCompatibleDC(hdc);
HBITMAP bmp=CreateCompatibleBitmap(hdc,width,height);
HBITMAP pre_bmp=(HBITMAP)SelectObject(memdc,bmp);

COLORREF color_mask=RGB(...);// transparent color mask
HBRUSH brush_trans=CreateSolidBrush(color_mask);
FillRect(memdc,&rcMem,brush_trans);// refresh the memdc.

// do my redrawing
....

//Blt
TransparentBlt(hdc,.....
               memdc,0,0,width,height,color_mask);

//gdi resource release and delete.
DeleteObject(SelectObject(memdc,pre_bmp);
DeleteObject(brush_trans);
DeleteDC(memdc);
ReleaseDC(hwnd,hdc);

有一些用于调整每个子窗口大小的
WM_SIZE
代码。我不知道是否相关。我使用
SetWindowPos
调整子窗口的大小。我怀疑这是否是由不正确的Z顺序设置引起的。是吗

I甚至不处理
WM_PAINT
消息,该消息将转到默认消息处理程序
DefWindowProc

据我所知,现在我真的不知道是什么导致了这场混乱

谁能告诉我怎么了?为什么win32 UI如此之难,编写一个运行良好的界面如此之难。原来的标准窗户至少对我来说不太好看。我已经做了很多努力,我会继续,我需要你的帮助