OVH Cloud OVH Cloud

effacer sur le bureau

1 réponse
Avatar
maxime_phan
bonjour, j'ai reussi a afficher une image bitmap directement sur le
bureau comme ceci:

HWND HWNDdesktop;
HDC HDCdesktop;
HDC HDCtemp;
HANDLE bt;
HANDLE btOld;
DWORD eror;

HWNDdesktop = GetDesktopWindow();
HDCdesktop = GetWindowDC(HWNDdesktop);

bt = LoadImage(hInstance, MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP,
0, 0, LR_DEFAULTSIZE);
eror = GetLastError();
HDCtemp = CreateCompatibleDC(HDCdesktop);
btOld = SelectObject(HDCtemp, bt);

int x = 0;

while(1){
BitBlt(HDCdesktop, x, 0, 48, 48, HDCtemp, 0, 0, SRCCOPY);
Sleep(500);
x = x + 10;
}
ReleaseDC(HWNDdesktop, HDCdesktop);

cela marche parfaitement et l'image se deplace bien sur le bureau le
problème c'est qu'elle ne s'efface pas au fur et a mesure que l'image
se deplace donc qd limage avance les precedentes restent affichées et
cela crees une trainée.
comme faire pour qu'a chaque fois que mon image avance, la precedente
s'efface?
jai essayé InvalidateRect(HWNDdesktop, NULL, TRUE);(pour mettre a jour
l'affichage) mais ca ne marche pas

Merci d'avance pour toute aide

1 réponse

Avatar
patrox
Dessine dans une fenetre cree par tes soins , avec un NULLBRUSH comme fond,
elle agira alors comme un layer transparent. Il te suffira alors de bouger
la fenetre pour que ton "dessin" se deplace...

pat.

"maxime" a écrit dans le message de
news:
bonjour, j'ai reussi a afficher une image bitmap directement sur le
bureau comme ceci:

HWND HWNDdesktop;
HDC HDCdesktop;
HDC HDCtemp;
HANDLE bt;
HANDLE btOld;
DWORD eror;

HWNDdesktop = GetDesktopWindow();
HDCdesktop = GetWindowDC(HWNDdesktop);

bt = LoadImage(hInstance, MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP,
0, 0, LR_DEFAULTSIZE);
eror = GetLastError();
HDCtemp = CreateCompatibleDC(HDCdesktop);
btOld = SelectObject(HDCtemp, bt);

int x = 0;

while(1){
BitBlt(HDCdesktop, x, 0, 48, 48, HDCtemp, 0, 0, SRCCOPY);
Sleep(500);
x = x + 10;
}
ReleaseDC(HWNDdesktop, HDCdesktop);

cela marche parfaitement et l'image se deplace bien sur le bureau le
problème c'est qu'elle ne s'efface pas au fur et a mesure que l'image
se deplace donc qd limage avance les precedentes restent affichées et
cela crees une trainée.
comme faire pour qu'a chaque fois que mon image avance, la precedente
s'efface?
jai essayé InvalidateRect(HWNDdesktop, NULL, TRUE);(pour mettre a jour
l'affichage) mais ca ne marche pas

Merci d'avance pour toute aide