2010-10-13 11 views
5

Ich versuche, ein CSpinButtonCtrl als Buddy eines Bearbeitungsfelds in Windows 7 zu zeichnen. Wenn mein CEdit-Fenster 12 Dialogeinheiten hoch ist, sind die Drehschaltflächen wirklich schlecht skaliert und der obere Rand ist abgeschnitten. CSpinButtonCtrl Zeichnungsproblem mit kleinen CEdit-Steuerelement

spin fail

Das sieht ziemlich hässlich. Wie kann ich das umgehen, oder muss ich meine CEdit-Steuerelemente auf 14 Dialogeinheiten hoch begrenzen?

Meine Einstellungen sind thusly erklärt:

EDITTEXT  IDC_LOWER_EDIT,51,20,63,12,ES_MULTILINE | ES_WANTRETURN,WS_EX_RIGHT 
CONTROL   "",IDC_LOWER_SPIN,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,104,17,11,12 

Ich habe versucht, Ändern der Größe Movewindow verwenden, aber das hilft nicht. Irgendwelche Ideen?

+0

Nun, ich denke, meine Optionen sind: 1) Saugen Sie es auf; 2) Machen Sie alle meine Bearbeitungssteuerelemente 14 DUs hoch; 3) Überschreiben Sie die Kontrolle, Zeichnen und pflegen Sie meine eigenen Tasten. * seufz * Ich tendiere in Richtung 1) ... – north5

+0

Wir wollen auch vermeiden zu gehen und alles wieder zu legen ... Windows zu überzeugen, das Richtige zu tun, wäre vorzuziehen! – Bids

Antwort

2

Ich denke, ich würde für # 2 gehen - sind Sie das für den Bildschirm Platz gedrückt?

+0

Viele meiner Kontrollen sind ziemlich beschäftigt und ich versuche, vertikale Immobilien zu reduzieren, wo ich kann. Übrigens wird meine Benutzeroberfläche nur auf Mac OS X repliziert, wo es eine standardmäßige "kleine" Steuerungsgröße gibt (aber keine Drehsteuerung als Standard, so dass diese nur selten verwendet werden). – north5

0

Eine andere Option ist: lassen Sie es nicht gebunden (entfernen Sie UDS_ALIGNRIGHT) und platzieren Sie es direkt neben dem Bearbeitungssteuerelement.

3

fand ich den Code für die

CWnd* pWnd = GetDlgItem(IDC_SPIN1); 
CRect rect; 
pWnd->GetWindowRect(&rect); 
ScreenToClient(&rect); 
rect.right += 5 ; // make 5 pixels wider 
pWnd->MoveWindow(&rect) ; 

es Setzen Sie in der OnInitDialog() Breite zu verändern.

Verwandte Themen