Stile
Der Stil des Elementes wird bei der Erzeugung festgelegt. Neben den allgemeinen Fensterstilen besitzt das Editfeld eigene Stile:- ES_AUTOHSCROLL
- Der Text wird 10 Zeichen weitergeschoben, wenn der Rand des Elements erreicht wird.
- ES_LEFT
- linksbündig
- ES_CENTER
- zentriert
- ES_RIGHT
- rechtsbündig
- ES_LOWERCASE
- wandelt alle Eingabezeichen in Kleinbuchstaben
- ES_UPPERCASE
- wandelt alle Eingabezeichen in Großbuchstaben
- ES_NOHIDESEL
- Bei Verlust des Eingabefokus wird normalerweise die Selektion verborgen. Dieser Stil verhindert dies.
- ES_OEMCONVERT
- Die Eingaben werden von ANSI in den OEM-Zeichensatz konvertiert.
- ES_PASSWORD
- Für jedes eingegebene Zeichen wird ein Stern angezeigt.
- ES_READONLY
- Änderungen am Inhalt des Eingabefeldes werden verhindert.
- ES_MULTILINE
- Mehrzeiliges Eingabefeld
- ES_AUTOVSCROLL
- Wenn der Anwender RETURN in der letzten Zeile eines mehrzeiligen Eingabefeldes eingibt, wird eine Seite weitergeblättert.
- ES_WANTRETURN
- Ein mehrzeiliges Eingabefeld kann so ein RETURN empfangen, das ansonsten an die Dialogbox ginge, um das Default-Element auszulösen.
Ansteuerung
- WM_GETTEXT
- wParam = max Zeichenzahl, lParam = Adresse des Puffers
lese den Inhalt des Eingabefeldes
- WM_SETTEXT
- wParam = 0, lParam = Adresse des Puffers
schreibe in den Inhalt des Eingabefeldes
- EM_LIMITTEXT
- wParam = max Zeichen, lParam = 0
begrenzt die Zahl der eingegebenen Zeichen.
- WM_SETFONT
- wParam = HFONT, lParam (boolean) Redraw
Der Zeichensatz des Elements wird umgeschaltet.
Ereignisse
- EN_CHANGE
- Änderung am Editfeld nachdem sie angezeigt werden.
- EN_UPDATE
- Änderung am Editfeld bevor sie angezeigt werden.
Beispiel
Diese Fensterfunktion erzeugt beim Start des Fensters ein Eingabefeld und merkt sich in der statischen Variablen EdHwnd das Handle. Die 1201 ist die (beliebige) ID des Editfeldes. Sie muss allerdings im Fenster eindeutig sein. Wird der Menüpunkt mit der ID M_SHOW (in der Ressource zu erstellen) gedrückt, erscheint der aktuelle Text des Eingabefeldes in der Messagebox. Der Menüpunkt IDM_EXIT sorgt nur für ein reguläres Beenden des Programmes.LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { static HWND EdHwnd; // merke Dir das Handle des Edit-Controls char str[256]; switch (message) { case WM_CREATE: EdHwnd = CreateWindow("EDIT", "", ES_AUTOHSCROLL|WS_VISIBLE|WS_CHILD|WS_BORDER, 10,50,300, 30, hWnd, (HMENU)1201, hInst, 0); break; case WM_COMMAND: switch (LOWORD(wParam)) { case M_SHOW: SendMessage(EdHwnd, WM_GETTEXT, sizeof(str), (ULONG)str); MessageBox(hWnd, str, "hallo", MB_OK); break; case IDM_EXIT: DestroyWindow(hWnd); break; } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } |
In einer Dialogbox ist der Zugriff auf die Textfelder durch die Funktionen SetDlgItemText und GetDlgItemText noch etwas einfacher.
char str[64]; SetDlgItemText(hDlg, IDC_EDCOLS, str); GetDlgItemText(hDlg, IDC_EDCOLS, str, sizeof(str)); |
Der erste Parameter ist das Dialoghandle, der zweite die Ressource-ID des Kontrollelements. Im dritten Parameter wird der Speicher angegeben, der den String hält. GetDlgItemText besitzt noch einen vierten Parameter, der die Grösse dieses Speichers angibt.