我的应用程序是dll,它被注入第三方GUI应用程序。 dll会在应用程序的主窗口上创建包含很少控件的子窗口。问题是当重绘主窗口时,我的窗口及其控件会闪烁。我已经阅读了很多关于类似问题的文章,但无法修复它。这是一些代码
hwndContainer = CreateWindowEx( WS_EX_TOPMOST, PANEL_CLASS_NAME, "", WS_CHILD | WS_VISIBLE, 0, 0, width, height, hwnd, 0, g_hInstance, cd );
CreateWindowEx( WS_EX_TOPMOST, "button", "Click me", WS_CHILD | WS_VISIBLE | WS_TABSTOP, x, y, w, h, hwndContainer, 0, 0, 0 );
...
case WM_PAINT:
PAINTSTRUCT ps;
HDC hdc = BeginPaint( hwndPanel, &ps );
RECT r;
GetClientRect( hwndPanel, &r );
SelectObject( hdc, hpenBorder );
SelectObject( hdc, GetStockObject( NULL_BRUSH ) );
RoundRect( hdc, 0, 0, r.right, r.bottom, 5, 5 );
EndPaint( hwndPanel, &ps );
return 0;
我尝试将WS_CLIPCHILDREN添加到主窗口样式,处理主窗口的WM_PAINT等。有什么想法吗?
答案 0 :(得分:0)
你可以试试WS_CLIPSIBLINGS ......我已经很长时间没有直接使用窗口样式,但我似乎记得这种样式需要帮助减少非顶级窗口中的重绘闪烁。祝你好运。