Editbox! Fehler?



  • Nein habe ich noch nicht.
    Ich habe mit Spy nachgeguckt und ES_READONLY ist nicht gesetzt.
    Ich kann es aber trotzdem ausprobieren, aber wie(Welche Funktion)?



  • Master Joe schrieb:

    Ich kann es aber trotzdem ausprobieren, aber wie(Welche Funktion)?

    SendMessage, die Parameter musst du in der MSDN angucken, unter SendMessage und EM_SETREADONLY.

    Kannst du irgendwo Text kopieren und im Edit-Feld Rechtsklick->Einfügen?


  • Mod

    Master Joe schrieb:

    Ja, es hat den Fokus.
    Meine Frage von oben wär mir wichtig:
    Ist die Funktionalität zum reinschreiben mittels Tastatur schon da oder muss man
    das selbst machen?
    Und: Werden die Nachrichten an das Child- oder das Parentfenster gesendet?? 😕

    Das ganze geht automatisch, wenn das Control den Fokus hat und Du auch eine Nachrichtenschleife hast, die die Nachrichten abholt!



  • Martin Richter schrieb:

    Das ganze geht automatisch, wenn [...] Du auch eine Nachrichtenschleife hast, die die Nachrichten abholt!

    Daran könnte es liegen! Hast du zufällig sowas:

    GetMessage( &Msg, hWnd, 0, 0 );
    

    in deiner Nachrichtenschleife? Dann holt er ja nur die Nachrichten für das hWnd-Fenster. Statt hWnd mach NULL und er holt für alle Fenster. Hatte ich auch mal^^



  • Hey die Idee von Badestrand ist exotisch, aber genau deswegen genial 💡 .

    Nochmal zum 'Read-Only':
    Das mit dem ES_SETREADONLY ist quatsch, da er ja derartige Flags gar nicht gesetzt hat, es
    muss also am Code liegen.



  • Das mit GetMessage() habe ich schon so.
    Ich habe in meine WindowProc mal einen Test eingebaut:

    if (hWnd == hEdit)
    {
    	MessageBox(NULL, "test", "hEdit", MB_OK);
    }
    

    Man kann die Handles doch vergleich, oder?



  • Prinzipiell kannst du Handles schon vergleichen, wobei du eben dafür sorgen musst, dass hEdit gültig ist (ggf. musst du es eben static machen). Ich persönlich nehme da dann aber lieben GetDlgCtrlID und vergleicht dann die ID (wo du dann z.B. auch ein switch verwenden kannst, falls du mehrere hast.

    if(GetDlgCtrlID(hWnd) == ID_DEINES_EDIT_CONTROLS) ...
    


  • Master Joe schrieb:

    Das mit GetMessage() habe ich schon so.

    Wie, "so"? Mit GetMessage( &Msg, hWnd, ...? Du musst GetMessage( &Msg, NULL, ... schreiben!



  • Wird in der Nachrichtenschleife auch TranslateMessage aufgerufen? Denn das ist dafür verantwortlich, dass die tastendrücke an die WndProc weitergeleitet werden.



  • Luckie schrieb:

    Wird in der Nachrichtenschleife auch TranslateMessage aufgerufen? Denn das ist dafür verantwortlich, dass die tastendrücke an die WndProc weitergeleitet werden.

    Oh nein^^ Das könntes gut sein 🙄

    Editfelder reagieren ja nur auf WM_CHARs 😡



  • Mit "so" habe ich gemeint das ich es so habe:
    GetMessage(&msg, NULL, 0, 0)

    😃
    Oh nein, das war es. ➡ Luckies Bemerkung
    😃



  • Wow! Nach 3 Seiten Posts haben wirs hinbekommen, dass man in eine Editbox Text eingeben kann 😃



  • Badestrand schrieb:

    Wow! Nach 3 Seiten Posts haben wirs hinbekommen, dass man in eine Editbox Text eingeben kann 😃

    That's real WinAPI 😃 .


Anmelden zum Antworten