Problème Canvas sous Vista Aero

dim07 Messages postés 5 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 31 juillet 2008 - 29 juil. 2008 à 09:16
dim07 Messages postés 5 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 31 juillet 2008 - 31 juil. 2008 à 15:37
Bonjour,
J'utilise le code suivant pour afficher du texte dans la barre de menu d'un écran :
procedure TForm1.Button2Click(Sender: TObject);
var
X, Y, CYFrame, CXFrame, CXSize, CYSize: Integer;
begin
CYFrame := GetSystemMetrics(SM_CYFRAME); // Hauteur bordure
CXFrame := GetSystemMetrics(SM_CXFRAME);
CXSize := GetSystemMetrics(SM_CXSIZE); // Largeur bouton barre de titre
CYSize := GetSystemMetrics(SM_CYSIZE);
Canvas.Handle := GetWindowDC(Self.Handle);
try
Y := (CYSize + (2 * CYFrame) - Canvas.TextHeight('W'))div2 ;
//ShowMessage(IntToStr(Y)); // = 11
X := (CXSize + (2 * CXFrame) - Canvas.TextHeight('Z'))div2 ;
//ShowMessage(IntToStr(X)); // = 17
Canvas.TextOut(X, Y, 'Test2');
finally
ReleaseDC(Self.Handle, Canvas.Handle);
Canvas.Handle := 0;
end;
end;

Il fonctionne très bien sous XP, mais pose problème sous vista :

Lorsque l'Aero est activé, rien de s'affiche.

Si je désactive l'Aero, l'affichage est correct.

Y a t-il un moyen de contourner ce problème ?Il fonctionne très bien sous XP, mais pose problème sous vista :

Lorsque l'Aero est activé, rien de s'affiche.

Si je désactive l'Aero, l'affichage est correct.

Y a t-il un moyen de contourner ce problème ?

2 réponses

cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
30 juil. 2008 à 09:17
salut,

sans avoir vista, je suppose que tu devrait essayer de déplacer ce code dans un form1.OnPaint (ou similaire). Mais je doute que tu puisse "passer par dessus" areo.

bonne chance,

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
0
dim07 Messages postés 5 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 31 juillet 2008
31 juil. 2008 à 15:37
J'ai essayé de déplacer le traitement sur d'autres évènements mais toujours aucun résultat.
0
Rejoignez-nous