Das Erzeugen des Controls selbst unterscheidet sich in keiner Weise von dem Erzeugen anderer Controls. Wir benutzen dazu "CreateWindowEx" und die Fensterklasse msctls_updown32:
hUD := CreateWindowEx(0, 'msctls_updown32', '', WS_VISIBLE or WS_CHILD or UDS_ALIGNRIGHT or UDS_ARROWKEYS or UDS_SETBUDDYINT, 10, 10, 30, 20, hWnd, IDC_UD, hInstance, nil);
Alternativ kann man auch die Konstante UPDOWN_CLASS als Fensterklasse benutzen.
| Wert | Bedeutung |
|---|---|
| UDS_ALIGNLEFT | Positioniert das Control links neben dem zugeordneten Control |
| UDS_ALIGNRIGHT | Positioniert das Control rechts neben dem zugeordneten Control |
| UDS_ARROWKEYS | Das Control reagiert auf die Pfeiltasten |
| UDS_AUTOBUDDY | Das Vorgängerfenster wird automatisch dem UpDown-Control zugeordnet |
| UDS_HORZ | Die Pfeile liegen horizontal |
| UDS_HOTTRACK | "HotTrack-Stil" |
| UDS_NOTHOUSANDS | keine Tausenderpunkte |
| UDS_SETBUDDYINT | Der Wert des UpDown-Controls wird automatisch im zugeordneten Fenster angezeigt |
Die meisten Stile sind selbsterklärend. Es empfiehlt sich, ein wenig damit zu experimentieren. Interessant dürfte aber der Stil UDS_AUTOBUDDY sein, denn damit wird das UpDown-Control automatisch dem zuvor erzeugten Fenster zugeordnet:
// Edit-Control erzeugen hwndEdit3 := CreateWindowEx(WS_EX_CLIENTEDGE, 'EDIT', '', WS_VISIBLE or WS_CHILD, 130, 100, 55, 19, wnd, IDC_EDIT3, hInstance, nil);
// UpDown-Control erzeugen ... hTrack1 := CreateWindowEx(0, UPDOWN_CLASS, '', WS_VISIBLE or WS_CHILD or UDS_ALIGNRIGHT or UDS_ARROWKEYS or UDS_SETBUDDYINT // ... und dem Edit automatisch zuordnen or UDS_AUTOBUDDY, 10, 10, 30, 20, wnd, IDC_TRACK1, hInstance, nil);
Dieser Auszug stammt aus dem erweiterten Beispielprogramm. Würden wir auf den Stil UDS_AUTOBUDDY verzichten, bzw. würden wir unsere UpDown-Controls zu einem späteren Zeitpunkt erzeugen, dann könnten wir die Zuordnung auch manuell vornehmen, was so aussehen müsste:
SendMessage(hTrack1, UDM_SETBUDDY, WPARAM(hwndEdit3), 0);