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

Probleme GDI et Aero

11 réponses
Avatar
Erwan
Pour afficher une image .bmp dans une boite de dialogue, j'utilise les api
suivantes :

GetDC
LoadBitmap
GetObject
GetDlgItem
GetClientRect
ClientToScreen
ScreenToClient
CreateCompatibleDC
SelectObject
BitBlt

Sous Vista avec Aero, l'image n'est pas affichée. Avec Aero désactivé ou XP,
l'image est correctement affichée.
Une idée ?

10 réponses

1 2
Avatar
Mickael
Erwan wrote:
Pour afficher une image .bmp dans une boite de dialogue, j'utilise les api
suivantes :

GetDC
LoadBitmap
GetObject
GetDlgItem
GetClientRect
ClientToScreen
ScreenToClient
CreateCompatibleDC
SelectObject
BitBlt

Sous Vista avec Aero, l'image n'est pas affichée. Avec Aero désactivé ou XP,
l'image est correctement affichée.
Une idée ?




As-tu testé les retours des apis et GetLastError() pour savoir la/les
apis qui sont en erreur ?
Avatar
Erwan
> As-tu testé les retours des apis et GetLastError() pour savoir la/les apis
qui sont en erreur ?



Non parce que c'est un plugin pour IE et que le debug n'est pas simple, même
si je peux utiliser OutputDebugString.
C'est ce que je vais faire si je n'ai pas plus d'indices, mon post était en
fait une question pour savoir si il y a avait des incompatibilités connues
(manifestement oui !) avec Aero.
Avatar
Mickael
Erwan wrote:
As-tu testé les retours des apis et GetLastError() pour savoir la/les apis
qui sont en erreur ?



Non parce que c'est un plugin pour IE et que le debug n'est pas simple, même
si je peux utiliser OutputDebugString.
C'est ce que je vais faire si je n'ai pas plus d'indices, mon post était en
fait une question pour savoir si il y a avait des incompatibilités connues
(manifestement oui !) avec Aero.




Apparemment oui avec BitBlt()
Il faut voir peut-être les fonctions comme DwmEnableComposition et autres
Avatar
Erwan
> As-tu testé les retours des apis et GetLastError() pour savoir la/les apis
qui sont en erreur ?



Je viens de le faire et il n'y aucune erreur retournée par les API.
J'en ai profité pour faire un essai dans le bitblt en remplaçant SRCAND par
SRCCOPY, sans succès.
Avatar
Vincent Burel
"Erwan" wrote in message
news:4890d82d$0$859$
Pour afficher une image .bmp dans une boite de dialogue, j'utilise les api
suivantes :

GetDC
LoadBitmap
GetObject
GetDlgItem
GetClientRect
ClientToScreen
ScreenToClient
CreateCompatibleDC
SelectObject
BitBlt

Sous Vista avec Aero, l'image n'est pas affichée. Avec Aero désactivé ou


XP,
l'image est correctement affichée.
Une idée ?



Au lieu de faire dans rébu, poster le code de votre fonction "DrawBitmap" on
vous dira ce qui cloche.

VB
Avatar
nico
"Erwan" wrote in message
news:4890d82d$0$859$
Pour afficher une image .bmp dans une boite de dialogue, j'utilise les api
suivantes :

GetDC
LoadBitmap



Dans WM_PAINT ?!
Avatar
Erwan
> Au lieu de faire dans rébu, poster le code de votre fonction "DrawBitmap"
on
vous dira ce qui cloche.



En fait j'ai hérité de cette portion code datant d'une dizaine d'années et
dont je ne suis pas l'auteur.
J'avoue la trouver anormalement compliquée, sensation confirmée par
plusieurs commentaires donc j'envisage de la ré-écrire, proprement, en
partant de 0. Est-ce que quelq'un connait un exemple en ligne qui me
permettrait d'amorcer ?
Avatar
Erwan
>> GetDC
LoadBitmap



Dans WM_PAINT ?!



Eh oui. Voir précédent.
Avatar
Vincent Burel
"Erwan" wrote in message
news:4892b1c1$0$852$
> Au lieu de faire dans rébu, poster le code de votre fonction


"DrawBitmap"
> on
> vous dira ce qui cloche.

En fait j'ai hérité de cette portion code datant d'une dizaine d'années et
dont je ne suis pas l'auteur.
J'avoue la trouver anormalement compliquée, sensation confirmée par
plusieurs commentaires donc j'envisage de la ré-écrire, proprement, en
partant de 0. Est-ce que quelq'un connait un exemple en ligne qui me
permettrait d'amorcer ?



je vous donne directement la fonction, c'est pas un secret ! :-)

void TOOLS_DrawBitmap(HDC dc,HBITMAP hbmp,int x0, int y0,int bmpcx,int
bmpcy)
{
HBITMAP oldBitmap;
HDC bitmapDC;
bitmapDC=CreateCompatibleDC(dc);
oldBitmap=(HBITMAP)SelectObject(bitmapDC,hbmp);
BitBlt(dc,x0,y0,bmpcx,bmpcy,bitmapDC,0,0,SRCCOPY);
SelectObject(bitmapDC,oldBitmap);
DeleteDC(bitmapDC);
}

VB
Avatar
nico
"Erwan" wrote in message
news:4892b1e2$0$853$

GetDC
LoadBitmap



Dans WM_PAINT ?!



Eh oui. Voir précédent.



Il ne faut pas de GetDC() dans WM_PAINT (BeginPaint)
1 2