Probleme GDI et Aero

Le
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 ?
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Mickael
Le #16444491
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 ?
Erwan
Le #16445421
> 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.
Mickael
Le #16445501
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
Erwan
Le #16446661
> 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.
Vincent Burel
Le #16448751
"Erwan" 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
nico
Le #16452161
"Erwan" news:4890d82d$0$859$
Pour afficher une image .bmp dans une boite de dialogue, j'utilise les api
suivantes :

GetDC
LoadBitmap



Dans WM_PAINT ?!
Erwan
Le #16453921
> 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 ?
Erwan
Le #16453911
>> GetDC
LoadBitmap



Dans WM_PAINT ?!



Eh oui. Voir précédent.
Vincent Burel
Le #16454181
"Erwan" 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
nico
Le #16458581
"Erwan" 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)
Publicité
Poster une réponse
Anonyme