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 ?