CComboBox ...



  • Also wenn ich im Editfeld editiere, und Eingabetaste drücke verschwindet
    der Dialog, keine Ahnung ...



  • Kann man nicht im Dialog einen KeyDown-Handler dazwischen schalten ?
    Ich habe es versucht, er wurde aber nicht aufgerufen.



  • Die Eingabetaste, löst im einem Dialog die OnOK-Funktion aus, man könnte diese
    überschreiben, was aber nicht sinnvoll ist, da auch der OK-Button diese
    Funktion auslöst.

    Fange die Eingabetaste mit PreTranslateMessage ab.

    Trumfalke64


  • Mod

    GeorgC++ schrieb:

    Also wenn ich im Editfeld editiere, und Eingabetaste drücke verschwindet
    der Dialog, keine Ahnung ...

    Klar, wenn die Dropdown Liste nicht offen ist. Das ist das normale Verhalten.
    Was erwartest Du. Es gibt ja auch nichts zu übernehmen. Wenn Du Tab drückst verlässt die das Feld und der Wert steht sowieso in diesem Moment auch schon zur Verfügung.
    Was erwartest Du denn für ein Verhalten?



  • Wenn ich einen Eintrag von der Combobox auswähle, und dieser im Eingabefeld erscheint, dann soll dieser nach Return weiterverarbeitet werden. Mit PreTranslateMessage ging dies sehr gut.

    Jetzt aber noch eine andere Frage:

    Der Handler-Funktion OnLButtonDown(UINT nFlags, CPoint point)
    wird "point" und "nFlags" übergeben. Wenn ich mit PreTranslateMessage(MSG* pMsg)
    WM_LBUTTONDOWN abfange, wie kann ich dann "point" abrufen.
    Die MSG Struktur enthalt als Felder u.a. lParam und wparam, aber wie
    kann ich aus diesen übergebenen Paramtern "point" ausrechnen ?
    Auch PostMessage von CWnd können Parameter übergeben werden.
    Allgemein weiss ich nicht, wie ich von den Parametern zu den
    Werten der Prozedurschnittstelle ( der Handler-Funktion ) komme.


  • Mod

    Deine UI-Logik verstehe ich nicht. Und was soll passieren, wenn er Tab drückt. Hat Enter in jedem Feld eine andere Bedeutung?

    Was die Nachrichten und deren Inhalte betrifft rate ich Dir einfach mal nach WM_LBUTTONDOWN in der MSDN zu suchen. Du findest sofort :http://msdn.microsoft.com/en-us/library/ms645607(VS.85).aspx
    Und dort steht für lParam:

    lParam
    The low-order word specifies the x-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.
    The high-order word specifies the y-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area.



  • Soviel ich weiss ist Tab die Eingabetaste und nicht die Tabulatortaste.
    Du kannst in meinen Beiträgen einfach Enter durch Eingabetaste ( Tab )
    ersetzen.


  • Mod

    Tab-Taste == Tabulator == VK_TAB
    Enter-Taste == Eingabetaste == VK_RETURN

    Ich würde Dir eher raten dann auf CBN_SELCHANGE oder CBN_KILLFOCUS zu reagieren. Das ist mit Sicherheit die bessere Strategie.



  • Martin, an der Stelle möchte ich mich entschuldigen, und sagen dass
    ich im Haupstudium Informatik wegen gesundheitlichen Gründen gescheitert
    bin. Heute nehme ich starke Medikamente die mich am Denken schwer behindern.
    Vielleicht berücksichtigt Ihr das , wenn ich zusehr nerve !


  • Mod

    GeorgC++ schrieb:

    Vielleicht berücksichtigt Ihr das , wenn ich zusehr nerve !

    Ich habe nicht angedeutet, dass Du nervst. Ich habe versucht Dinge richtig zu stellen und einen weiteren Ansatz zur Lösungzu bieten.


Anmelden zum Antworten