我有一个带有选项卡控件的 Win32 GUI 程序,每个选项卡都有一个 ListView 控件。每当调整窗口大小时,都会出现大量闪烁。我尝试了以下事情:
这是 RegisterClassEx 代码:
memset(&wcex, 0, sizeof(WNDCLASSEX));
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = 0;
wcex.lpfnWndProc = PhMainWndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = PhInstanceHandle;
wcex.hIcon = LoadIcon(PhInstanceHandle, MAKEINTRESOURCE(IDI_PROCESSHACKER));
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
//wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wcex.lpszMenuName = MAKEINTRESOURCE(IDR_MAINWND);
wcex.lpszClassName = PhWindowClassName;
wcex.hIconSm = (HICON)LoadImage(PhInstanceHandle, MAKEINTRESOURCE(IDI_PROCESSHACKER), IMAGE_ICON, 16, 16, 0);
WM_SIZE 处理程序:
RECT rect;
// Resize the tab control.
GetClientRect(PhMainWndHandle, &rect);
MoveWindow(TabControlHandle, rect.left, rect.top,
rect.right - rect.left, rect.bottom - rect.top, TRUE);
// Resize the list view.
TabCtrl_AdjustRect(TabControlHandle, FALSE, &rect);
MoveWindow(ListViewHandle, rect.left, rect.top,
rect.right - rect.left, rect.bottom - rect.top, TRUE);
样式如下:
WS_OVERLAPPEDWINDOW
WS_CHILD
(和 WS_VISIBLE
)WS_CHILD | WS_BORDER | LVS_REPORT
(和 WS_VISIBLE
)最佳答案
事实证明 Z 排序存在问题 - 在 ListView 上调用 BringWindowToTop 解决了这个问题。
关于user-interface - Win32 GUI 在调整大小时闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2036599/