Wie berechnet man die Höhe der Titelleiste in VB6?

7

Ich versuche, ein Formular relativ zu einem Button auf einem Steuerelement darunter anzuzeigen.

Aber Button.top ist relativ zur Titelleiste des unteren Formulars, und das obere Formular ist relativ zum Bildschirm.

Also, um das auszugleichen muss ich jetzt wie hoch die Titelleiste ist.

Ich habe Form.height-Form.ScalemHeight verwendet, aber ScaleHeight enthält nicht die Titelleiste oder , so dass die Skalenhöhe etwas aufgebläht ist.

Weiß jemand, wie man die Höhe von nur in der Titelleiste berechnet?

    
Clay Nichols 30.01.2009, 22:44
quelle

6 Antworten

9

Subtrahiere es wieder:

%Vor%     
recursive 30.01.2009, 22:54
quelle
9

Sie müssen den Aufruf GetSystemMetrics API verwenden, um die Höhe der Titelleiste zu erhalten.

%Vor%

Hinweis: Dadurch wird die Höhe in Pixel zurückgegeben. Wenn Sie Twips benötigen, müssen Sie mit der ScaleY -Methode eines Formulars wie folgt konvertieren: Me.ScaleY(TitleBarHeight(), vbPixels, vbTwips)

    
rpetrich 30.01.2009 22:53
quelle
3

"Recursive's" Antwort ist nicht ganz korrekt. Es subtrahiert die doppelte Rahmenbreite - links und rechts gibt es einen Rahmen!

Wir erhalten die besten Ergebnisse damit:

%Vor%     
MarkJ 02.02.2009 19:01
quelle
3
%Vor%     
Pavel 10.06.2011 14:30
quelle
1

Sie müssen wahrscheinlich einen Win32-API-Aufruf für GetSystemMetrics ()

    
ahockley 30.01.2009 22:51
quelle
1

Sie können die Funktion ClientToScreen() windows API verwenden, um einen Punkt von Client-Koordinaten in Bildschirmkoordinaten zu konvertieren:

%Vor%

Wenn Sie dies überspringen und direkt zur Schaltfläche wechseln möchten, können Sie die Position der Schaltfläche (in Pixel) verwenden:

%Vor%

Oder rufen Sie einfach die Tastenposition mit GetWindowRect()

auf %Vor%     
Deanna 05.04.2013 10:31
quelle

Tags und Links