J'ai un programme d'interface graphique Win32 avec un contrôle de tabulation, chaque onglet ayant un contrôle de liste. Il y a un scintillement massif chaque fois que la fenêtre est redimensionnée. J'ai essayé les choses suivantes:Win32 GUI scintillant sur le redimensionnement
- Manipuler WM_ERASEBKGND dans le wndproc principal et renvoyer TRUE. Aucun effet.
- Filtrage de tous les messages WM_ERASEBKGND dans la boucle d'événements. Aucun effet.
- Définition du style WM_CLIPCHILDREN dans la fenêtre principale. Maintenant, lorsque la fenêtre est redimensionnée, le contrôle de vue liste est simplement effacé sur un fond blanc et ne se redessine pas.
- L'utilisation de DefWindowPos au lieu de MoveWindow. Aucun effet.
- Passage de FAUX à bRepaint dans MoveWindow. Même effet que la définition de WS_CLIPCHILDREN (voir ci-dessus).
Voici le code 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);
Le gestionnaire 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);
Les styles sont les suivants:
- fenêtre principale:
WS_OVERLAPPEDWINDOW
- Contrôle Tab:
WS_CHILD
(etWS_VISIBLE
) - liste Voir contrôle:
WS_CHILD | WS_BORDER | LVS_REPORT
(etWS_VISIBLE
)
Ah oui, la fenêtre win32 scintille. Cela ramène des souvenirs ... –
Je me demande si le double tampon aiderait en quelque sorte ... –