Windows 窗口(win32 UI)刷新不正确
这是一个win32程序。 当我拖动子窗口(使用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
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如此之难,编写一个运行良好的界面如此之难。原来的标准窗户至少对我来说不太好看。我已经做了很多努力,我会继续,我需要你的帮助