0

我的应用程序是注入到第 3 方 GUI 应用程序中的 dll。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 等。有什么想法吗?

4

1 回答 1

0

你可以试试 WS_CLIPSIBLINGS...自从我直接对窗口样式做任何事情以来已经很长时间了,但我似乎记得这种样式需要帮助减少非顶级窗口中的重绘闪烁。祝你好运。

于 2012-06-08T19:03:03.113 回答