Auswertung einer Editbox



  • Hallo, ich hab mal ne Frage auch wenn es chon viel behandelt wurde, sowas richtig brauchbares hab ich nicht gefunden.

    Ich hab eine Eingabemaske mit mehreren Editboxen und Buttons.
    2 Editboxen würde ich gerne mit ihren dazugehörigen Buttons verbinden, damit bei betätigen der entertaste wenn der fokus in der editbox ist der button betätigt wird. und ich dann mit onbuttonclick dass ereignis weiterverarbeiten kann.

    So richtig weiß nich nicht wo ich anfangen soll, vielkleicht kann mir ja mal jemand nen hinweis geben, damit auch ich das verstehe,
    danke im vorraus
    Seppel



  • in PreTranslateMessage gucken, ob ne Taste gedrückt wurde
    - wenn ja gucken obs Enter war
    - wenn ja überprüfen, ob eines Deiner Edit-Felder den Fokus hat
    - wenn ja entsprechende Methode aufrufen


  • Mod

    Das user Interface in dieser Form zu verändern finde ich nicht unbedingt gut und späterauch nicht intuitiv für den Anwender.

    Du müsstest in einem Dialog in jedem Fall einen PreTranslateMessage Handler einbauen. Dort kanst Du die Eingabetaste abfangen prüfen wer aktuell den Fokus hat und selber denn einen entsprechenden WM_COMMAND code an das Fenster Posten oder den entsprechenden Handler direkt aufrufen.



  • Dankr für eure Hilfe soweit, ich werde mal probieren das so zu machen, obwohl ich es schon besser fände wenn man am Dialog sofort erkennen kann das die Schaltfläche zur Editbox gehört, wird ja von windows markiert, praktiziert wird das zum Beispiel bei MSHerts in dem Anfangsdialog wo nach dem Name gefragt wird.
    Na gut aber da ich es nicht hinbekomme, danke trotzdem



  • das geht noch viel simpler 😉

    unter dem Arbeitsbereich Resourcen im geöffneten Resourendialog
    legst du die eigenschaften der Editfelder im Registerblatt "Formate" auf (hacken setzen)
    Mehrzeilig,
    Auto Hor. Bildlauf &
    Return möglich fest.

    Setze dann im KlassenAssi für das jeweilige Editfeld eine EN_CHANGE Nachricht
    in der OnChange... Funktion von dem jeweiligen Editfeld fängst du die eingabe
    der Tastartur mit GetAsyncKeyState ab.

    für andere tasten bzw. kombinationen kuck dir die seite mal an
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/VirtualKeyCodes.asp

    if (GetAsyncKeyState( 0x0D )&1 ==1)//0x0D ist die Returntaste 
    	{
    		CString sEditText;
    		GetDlgItemText(IDC_DEINEDITFELD,sEditText);
    		MessageBox(sEditText);
    	}
    

    mfg
    LowFly



  • alle Obwohl es zwar auch nicht der verknüpfung zwischen Schaltfläche und editbox entspricht ist es aber eine sehr gute Lösung mit der ich mich auch sehr gut anfreunden kann, also funktioniert alles Dankeschön.



  • Hab nun doch ein Problem mit der GetAsyncKeyState da ich teilweise auch nach eingabe in der editbox eine msgbox ausgebe, die der benutzer mit enter bestätigt denkt er bei jeder weiteren änderung im editfeld das enter gedrückt wurde kann man GetAsyncKeyState irgendwie überschreiben, set geht nicht,
    bzw den puffer wo es drinsteht leeren?


  • Mod

    GetAsyncKeyState ist auch die falsche Funktion. Nimm GetKeyState!



  • Mit GetKeyState passiert scheint er auch das enter noch im hinterkopf zu haben



  • also genauer gesagt geht es darum, ich hab eine editbox, da gibt man eine zahl ein und mit enter zeigt er in einer readonly box ein ergebnis, welches von der zahl abhängt.

    sobald man auf enter drückt soll er das ergebnis anzeigen, es sei denn es ist keine gültige zahl eingegeben, dann sol eine msgbox kommen, mit der GetAsyncKeyState Function war es immer so, das er das enter noch im hinterkopf hatte und mir bei jeder weiteren änderung der editbox wieder die msgbox mit ungültige zahl angezeigt hat, sofern diese mit enter bestätigt wurde.

    Bei der GetKeyState funktion ist nun das problem, das sich das ergebnis mit jeder änderung danach aktualisiert und nicht mehr nur bei enter, also beim ersten mal nur bei enter aber sobald einmal enter gedrückt wurde aktualisiert es scih ständig

    vielleicht hat ja noch jemand nen rat
    danke



  • Meine Frage ist ob es ne möglichkeit gibt das zu löschen was er bei den beiden funktionen auslesen würde, also den tastaturpuffer oder wie auch immer man das nennt


Anmelden zum Antworten