Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Effet désagréable lors du redimentionnement

2 réponses
Avatar
Michel
Bonjour.
Avec un programme standard utilisant l'API et dont l'affichage prend
un peu de temps, j'ai remarqu=E9 qu'on a un effet plutot moche lorsqu'on
redimentionne la fen=EAtre vers le haut ou vers la gauche : la fen=EAtre
est comme transparente du cot=E9 oppos=E9 pendant un intervalle tr=E8s
court.
Cet effet est d'autant plus g=E9nant qu'il ne touche pas seulement
l'espace client, mais =E9galement la barre du haut.
Pourtant un background est utilis=E9, ce qui normalement r=E9duit les
effet de transparence.
Comment faire pour l'=E9viter?

Voila le code sur lequel je me base :


#include <windows.h>

HINSTANCE hInstance;

LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam,
LPARAM lParam);

int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance,
LPSTR lpszArgument, int nFunsterStil)
{
HWND hWnd;
MSG messages;
WNDCLASSEX wincl;
RECT Client;

UNREFERENCED_PARAMETER (hPrevInstance);
UNREFERENCED_PARAMETER (lpszArgument);

hInstance =3D hThisInstance;

// Infos importantes
wincl.hInstance =3D hInstance;
wincl.lpszClassName =3D "Classe principale";
wincl.lpfnWndProc =3D WndProc;
wincl.style =3D 0;
wincl.cbSize =3D sizeof (WNDCLASSEX);

// Icones et curseurs par d=E9faut
wincl.hIcon =3D LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm =3D LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor =3D LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName =3D NULL;
wincl.cbClsExtra =3D 0;
wincl.cbWndExtra =3D 0;
wincl.hbrBackground =3D GetStockObject (BLACK_BRUSH);

if (!RegisterClassEx (&wincl)) {
return EXIT_FAILURE;}

Client.left =3D 0;
Client.top =3D 0;
Client.right =3D 775;
Client.bottom =3D 575;
AdjustWindowRectEx (&Client, WS_OVERLAPPEDWINDOW, TRUE, 0);

hWnd =3D CreateWindowEx (
0,
"Classe principale",
"Fen=EAtre",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
Client.right - Client.left, Client.bottom - Client.top,
NULL, NULL, hInstance, NULL);

if (!hWnd) {
return EXIT_FAILURE;}

ShowWindow(hWnd, nFunsterStil);
UpdateWindow(hWnd);

while (GetMessage (&messages, NULL, 0, 0))
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}

return messages.wParam;
}

LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam,
LPARAM lParam)
{
HDC hDC;
PAINTSTRUCT ps;

switch (message)
{
case WM_DESTROY:
PostQuitMessage (0);
return TRUE;

case WM_PAINT:
// Affiche le bitmap.
hDC =3D BeginPaint (hWnd, &ps);
Sleep (20);
EndPaint (hWnd, &ps);
return TRUE;

default:
return DefWindowProc (hWnd, message, wParam, lParam);
}
}

2 réponses

Avatar
louis
Michel wrote:
Bonjour.
Avec un programme standard utilisant l'API et dont l'affichage prend
un peu de temps, j'ai remarqué qu'on a un effet plutot moche lorsqu'on
redimentionne la fenêtre vers le haut ou vers la gauche : la fenêtre
est comme transparente du coté opposé pendant un intervalle très
court.
Cet effet est d'autant plus génant qu'il ne touche pas seulement
l'espace client, mais également la barre du haut.
Pourtant un background est utilisé, ce qui normalement réduit les
effet de transparence.
Comment faire pour l'éviter?



ça a l'air d'etre un comportement normal.
Si tu fais la meme chose avec l'explorateur par exemple, le comportement
est le meme..
Avatar
Michel
On 2 mai, 23:33, louis wrote:
ça a l'air d'etre un comportement normal.
Si tu fais la meme chose avec l'explorateur par exemple, le comportement
est le meme..



Mais c'est vrai ! Et cet fenêtre là n'ont pas de background en plus...
Ooups.vraiment désolé de poster cette question, je devrai toujours
essayer sur des fenêtre "pro" avant de trouver que c'est anormal...