Probleme mit Buttons
-
ich habe nach einem tutorial einen button erstellt.
das "abfangen" der message wenn darauf geklickt wurde, klappt auch problemlos.
Aber wenn ich jetzt 2 oder mehr Buttons erzeuge, wird nur beim letzen eine Message gesendet. WIe kann man die verschiedenen Buttons unterscheiden ?
-
SIehe BN_CLICKED:
http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/buttons/buttonreference/buttonmessages/bn_clicked.aspDu musst ja eine eindeutige ID Deinem Button zugeordnet haben. Diese ID wird dann immer mitgeschickt (LOWORD(wParam)).
-
ich habe jetzt mal folgendermaßen ein edit feld erstellt:
hButton = CreateWindow( "edit",
"Beenden",
WS_CHILD | WS_VISIBLE,
30, 30, 80, 20,
hwnd,
NULL,
((LPCREATESTRUCT) lParam) -> hInstance,
NULL);ein paar fragen dazu:
1.)wie kann ich jetzt das eingabefeld auslesen ?
2.)wie gebe ich dem eingabefeld einen rahmen wie bei den meisten windows programmen ?3.) ich indifiziere meine childwindows im moment an der variable(in diesem fall hbutton) - in einem tut habe ich aber gelesen das man das über eine id macht, du man createwindow() übergibt.
welche version sollte man benutzen ?
-
1.) Mit GetWindowText bekommt man den Inhalt einer EditBox. Allerdings muss man sicherstellen, dass die Daten auch schon tatsächlich an des Fenster übermittelt wurden, also der EIngabeprozess abgeschlossen wurde.
2.) Das macht man mit den Styles, die beim Create angeben werden, z.B. WS_BORDER. Mit CreateWindowEx kann man noch mehr Styles angeben. Ich denke, deshalb musst Du wohl auch diese Funktion verwenden, um den richtige Rahmen zu bekommen.
3.) Ich muss erstaunt zugeben, dass ich darauf keine Antwort habe. Mit der MFC ist das einfach, aber nur mit der WinAPI, keine Ahnung. Vielleicht unterstützt die API keine Fenster-IDs, was mich aber wundern würde. Als Hinweis: durch CWnd::GetDlgCtrlID und SetDlgCtrlID kann man mit Hilfe der MFC die ID lesen und schreiben.
Gruß André