[WinAPI / EditBox] Keine Eingabe! Etwas vergessen?

HCWD

Erfahrenes Mitglied
Servus.

Vor Kurzem mein erstes Problem aus der Welt geschafft und jetzt komme ich schon wieder, um euch um Hilfe zu bitten.

Per SuFu hab ich nix gefunden, was mir helfen könnte.

Mein Code:
Code:
hLogin_User = CreateWindowEx(WS_EX_CLIENTEDGE,
			"EDIT",
			"",
			WS_CHILD | 
			WS_VISIBLE |
			WS_BORDER,
			20,30,200,20,
			login,		// <-- Ansichtlich gewählter HWND
			(HMENU) 1,
			(HINSTANCE) GetWindowLong(hWnd, GWL_HINSTANCE),
			NULL);

Ich bekomme hier ein schones Editfeld angezeigt... So wie es sein sollte. Jetzt kommt meine Frage: Muss ich noch etwas ergänzen in meiner ccp Datei damit ich auch Text eintippen kann oder ist dies mit einbezogen diese Funktion?

Ich hab mir mehrer Tutorials angeschaut, aber da wird nichts angesprochen wegen dem Tastaturlistener oder ähnliches.

Könnt ihr mir weiter helfen?
 
Das muß direkt funktionieren. Dadurch, dass du "EDIT" als Klasse angibst, erbt das Fenster dessen WindowProc, diese kümmert sich um Eingabe.

Du mußt allerdings alle Nachrichten für den Thread, in dem das Fenster erstellt wurde, durchpumpen (Peek/GetMessage,TranslateMessage,DispatchMessage).
Bei diesen Funktionen darfst du KEIN HWND angeben; stattdessen NULL.
 
Das heißt Klartext was: Wenn ich die Editbox erstellt habe und das Programm ausführe (vorrausgesetzt ich habe alle Programmteile, wie die Msg-Verarbeitungsschleife etc.), sollte es von vorne rein laufen und ich kann eintippen was ich will?

Mir fiel grad ein: Muss ich nicht vielleicht ein GDI anlegen oder ähnliches? Um Texte die ich durch die Tastatur eingebe, auch in der Editbox anzeigen zu lassen?
 
Zuletzt bearbeitet:
Äh, nein. Wenn du die EditBox erstellt hast, muß das laufen.

Das einzige, das Probleme machen kann, ist wie gesagt, die Nachrichtenschleife. Bekommt die Edit keine Nachrichten, kann sie auch nicht funktionieren.

Du kannst die Edit testweise nicht als Child hinstellen, sondern einfach als direktes Fenster (ja, sowas geht).
 
So ich nehme alles zurück ^^ Hab es hinbekommen. Ein Fehler -.-

Code:
while (GetMessage(&Msg, NULL, 0, 0))
	{
		TranslateMessage (&Msg);   // <----- Diese Zeile hat gefehl!
		DispatchMessage(&Msg);
	}
	return (Msg.wParam);

Ich weiß nicht wieso, aber ich habe die einfach vergessen einzutippen ^^

Jetzt läuft alles wie geschmiert ^^

Danke an alle für die Hilfe!
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück