So bestimmen Sie die Größe des Schaltflächenbereichs eines Windows-Optionsfelds

8

Ich zeichne alte Schule (unthemed - themed Radios sind ein ganz anderes Problem) Radio-Buttons selbst mit DrawFrameControl:

%Vor%

Ich bin noch nie in der Lage gewesen, einen sicheren Feuerweg zu finden, um herauszufinden, was für den RECT passieren soll. Ich habe ein 12x12 Rechteck verwendet, aber ich bin wie Windows, um mir die Größe eines Optionsfelds zu sagen.

DrawFrameControl scheint den Radioknopf so zu skalieren, dass er zu dem Rechteck passt, das ich passiere, also muss ich nah an der "richtigen" Größe des Radios sein und von anderen (nicht gezeichneten) Radios auf dem Bildschirm absehen.

Weiß jemand, wie man das macht?

    
Aardvark 14.09.2008, 23:59
quelle

2 Antworten

4

Diese Seite enthält einige Größenrichtlinien für Steuerelemente. Beachten Sie, dass die Größen sowohl in DLU (Dialogeinheiten) als auch in Pixeln angegeben werden, je nachdem, ob Sie das Steuerelement in einem Dialogfeld platzieren oder nicht:

Ссылка

Ich dachte, die GetSystemMetrics API könnte die Standardgröße für einige der allgemeinen Steuerelemente zurückgeben, aber ich habe nichts gefunden. Es könnte eine gemeinsame kontrollspezifische API geben, um die Größe zu bestimmen.

    
Brannon 24.09.2008 00:44
quelle
2

Es ist schon eine Weile her, dass ich daran gearbeitet habe, also beschreibe ich, was ich getan habe, und nicht unbedingt eine direkte Antwort auf die Frage.

Ich verwende zufällig Bitmaps 13 x 13 statt 12 x 12. Der Bitmap-Teil des Kontrollkästchens scheint im WM_DRAWITEM übergeben zu werden. Allerdings hatte ich auch WM_MEASUREITEM eingerichtet und verfügte über die gleichen Werte, so dass meine Antwort "im richtigen philosophischen Sinn" sein könnte.

%Vor%

Das scheint sowohl für Win2000 als auch für XP gut zu funktionieren, obwohl ich nbo Ahnung habe, was Vista machen könnte.

Es könnte ein Experiment wert sein, um zu sehen, was WM_MEASUREITEM auslässt, obwohl ich normalerweise mit altem Code entdecke, dass ich normalerweise einen guten Grund habe, etwas zu tun, das überflüssig aussieht.

    
David L Morris 24.09.2008 00:29
quelle

Tags und Links