Etwas Grundlage (sorry)
-
Hallo allerseits.
Ich sitz gerade Tag für Tag an der WinApi in c und lerne und lerne!
Also, da stell sich jemand mal vor, ich habe n Fenster.
Und 3 childs in diesem.
Und zwei davon sind edits, einer ein Button.
Ich habe nur eine WndProc, die auf den Buttonknopf dahingehend Reagiert, dass ich ihn abfrage, da er eine (HMENU) Id bekam, die in der WM_LBUTTONDOWN im WPARAM selektiert wird.
Auf einen Klick soll er ein Edit-Feld auslesen.
Meine Frage ist nun: Brauche ich dafür eigene EditWndProc oder kann ich das ebenfalls in der Parent WndProc unterbringen?
---- alles, was ich über die WinApi lese sagt: die NAchrichtenfunktionen zu reffen ist ein harter Keks, aber wenn es dann mal sitzt, sitzt es.
Daher:Verzeiht mir!
-
Kannste alles in der Haupt-WindowProc machen. GetWindowText() ist hier die geeignete Funktion.
-
Danke dennoch. Nur die EM_GETLINE und diw WM_GETTEXT schreibt nichts in den Buffer:
case WM_COMMAND: { case WM_LBUTTONDOWN: { switch(LOWORD(wm_WflagsP)) { case 3: { static char szBuff[10]; SendMessage(c_han_eIN,EM_GETLINE,0,(LPARAM)(LPCSTR)szBuff); MessageBox( NULL,szBuff,"The Edit Line",MB_OK); break; } return (0); } break; } break; }
-
MSDN Library lesen hilft:
Before sending the message, set the first word of this buffer to the size, in TCHARs, of the buffer.
-
WM_GETTEXT. laut Win32.hlp!
-
lesen hilft, das erste HIGHWORD von LPARAM. NE?
Shiat. Das mit den Übergabeparams krich ich noch hin!!!!!
-
so ganz. Also nicht von der Sprache her, sondern vom anwendungsspezifischen her.
Wieso soll ich mein statisches Array in high word und low word unterteilen und in eines der beiden die Anzahl der Zeichen, die zu kopieren sind, angeben, wenn dieser Wert doch eh wieder überschrieben wird?
kann das mal jemand erläutern? Danke sehr schonmal
-
me-S-on schrieb:
Wieso soll ich mein statisches Array in high word und low word unterteilen und in eines der beiden die Anzahl der Zeichen, die zu kopieren sind, angeben, wenn dieser Wert doch eh wieder überschrieben wird?
Nicht high und low. Du sollst ins erste Wort deines Arrays dessen Länge schreiben. Und nicht die Anzahl der kopierenden Zeichen, sondern die maximale Anzahl. Irgendwoher muss das Eingabefeld ja wissen, wie groß der Puffer ist, damit es nicht zuviel hineinschreibt. Nachdem es diesen Wert kennt (also irgendwo bei der Bearbeitung von EM_GETLINE lokal gespeichert hat), braucht es ihn nicht mehr, und du brauchst ihn auch nicht (du kennst ihn ja sowieso), also kann er überschrieben werden.