InputBox mit MFC/API



  • Hallo,

    ich will vom Benutzer die Eingabe eine Zeichenkette abfragen. Das ganze soll genauso wie mit der InputBox-Funktion von VB funktionieren. Also kleiner Dialog, der ein Edit-Feld enthält. Ich vermute mal, dass das Teil schon implementiert ist, wie die MessageBox. Nur bisher hab ich die Funktion nicht gefunden.
    Weiß jemand weiter?



  • Nunja,
    es gibt zirka 20 Möglichkeiten, wie eine Messagebox aussehen kann. Daher ist sie schon implementiert.
    ABER: Ich übertreibe sicherlich nicht, wenn ich sage, es gibt >200 Möglichkeiten, wie eine InputBox aussehen könnte. Ausserdem ist sie so schnell erstellt, dass es dem Programmierer überlassen wird, diese zu 'designen' !



  • Nun ja,

    unter VB ist eine InputBox was ganz simples: Ein modaler Dialog mit Titel, ein Hinweistext, ein EditFeld, ein OK- und ein Abbrechen-Button. Mehr nicht.

    Gibt's sowas wirklich nicht? Hab keine Lust dafür extra eine neue Klasse zu schreiben.

    Wenn nicht, ist auch egal, wird eh nur ein kleines Zusatztool zum Erstellen einer Datendatei, dann wird halt irgendwo ein Editfeld hingeklatscht, aus dem ich dann die Daten bekomme.



  • unter VB ist eine InputBox was ganz simples

    Wodurch man als Anwender auch sofort sieht, mit welcher Sprache das Programm geschrieben ist.

    Und dann kommen solche Fragen in VB-Foren wie:
    Ich möchte ein Bitmap vor dem Editfeld in der InputBox, wie mach ich das?



  • @Shaggy: Geh mal zur WinAPI-FAQ. Da gibts sowas! 🙂



  • Ja, da gibt es was, aber das ist nicht so gut gelungen.



  • @<Tom>: Doch, das ist sogar SEHR gut gelungen!



  • VC 7 meldet etliche Warnungen bei deiner Box



  • Berichte mal (Funktion, Zeile). Interessiert mich, denn im BCB gibt's keine Warnungen.



  • Mein lieber Herr Gesangsverein, soviel getippe für sowas billiges und MicroDoof baut soetwas nicht mal als Standard ein. Tja, ich glaub' ich werde mir sowas mal mit der MFC in eine *.lib programmieren.



  • Wozu MFC??? Du hast doch jetzt alles, was du brauchst. Du musst das doch nur noch per Copy&Paste in dein Projekt mit einfügen, und das war's!



  • ich bin einfach zu deprimiert 😞 ich will einfach nicht mehr. tut mir leid dass ich hier einfach so das dazu schreib, ich will nur, dass mich jemand wahrnimmt
    😞



  • Wo ist das Problem ?
    So ein Dialog ist in einer Minute erstellt,
    und der Klassenassi generiert dir sogar noch die Klasse dazu...

    Devil



  • Eben,
    ausserdem habe ich z.B. in meinen >20 Projekten kein einziges Mal eine 'simple'Inputbox gebraucht.



  • In meinen Projekten hab ich soetwas simples auch bisher nicht gebraucht. Für mein jetziges Projekt hab ich mir einen billigen Editor gestrickt, damit ich die Datendatei erzeugen kann. Und da wäre mir ein Aufruf wie z.B.:

    CString strNew;
    strNew = ::InputBox(_T("Neuer Name"), _T("Neuen Namen eingeben"));
    

    sehr gelegen gekommen. Da den Editor eh niemand anderes aus mir zu sehen bekommt, hab ich einfach neben dem "Neu"-Button ein Editfeld platziert, das ich halt vorher ausfüllen muss. So spar ich mir die Arbeit.



  • Original erstellt von Shaggy:
    **Und da wäre mir ein Aufruf wie z.B.:

    CString strNew;
    strNew = ::InputBox(_T("Neuer Name"), _T("Neuen Namen eingeben"));
    

    sehr gelegen gekommen.**

    Hallo???? Du hast dir die FAQ ja sehr gut durchgelesen! Genauso benutzt du auch meine InputBox. Nur eben nicht mit CString oder string, sondern mit LPTSTR, also char* bzw. WCHAR*.



  • Original erstellt von Shaggy:
    So spar ich mir die Arbeit.

    Die Arbeit die du sparst hast du jetzt schon dreimal in diesen Thread investiert 😃 . Warum zum Geier braucht man ne InputBox. Wir coden hier C++ und nicht BASIC (<- nomen est omen).



  • So langsam macht mir diese Diskussion richtig Spaß! 😉

    @WebFritzi: Natürlich habe ich mir das angeschaut und weiß, dass ich Dein Box so aufrufen kann. Aber den Code zu kopieren und einzubauen war mir zu umständlich, zumal (wie Du hoffentlich gelesen hast) es ja nur ein Zusatztool für mich selbst war und da war die Lösung mit dem CEdit 3 Zeilen lang.

    @MaSTaH: Wohl war, aber das stört mich nicht. Würde hier BASIC diskutiert müsste ich ja nicht fragen, da gibt's soetwas ja. 😃 Und wofür man eine InputBox braucht? Schon mal vom Anwender die Eingabe einer einzigen Zeichenkette verlangt? Programmierst Du dafür immer extra einen neuen Dialog? Ich muss zugeben, bei den ganzen Projekten, die ich entwickelt habe, hab ich es nie gebraucht. Das erste Mal halt bei diesem Zusatztool. Und in so ein Zusatztool stecke ich so wenig wie möglich Arbeit, keine Sicherheit, gar nix. Hauptsache es funktioniert einigermaßen und macht das was es soll. Daher -> Neben dem Neu-Button ein CEdit, über den Klassenassi eine neue CString-Variable und in der OnNew() rufe ich einmal UpdateData() auf und schon hab ich meine Zeichenkette. Besser geht's doch nicht!



  • Original erstellt von Shaggy:
    Schon mal vom Anwender die Eingabe einer einzigen Zeichenkette verlangt?

    Ne, wie geht das??? :p



  • Original erstellt von Shaggy:
    Da den Editor eh niemand anderes aus mir zu sehen bekommt, hab ich einfach neben dem "Neu"-Button ein Editfeld platziert, das ich halt vorher ausfüllen muss. So spar ich mir die Arbeit.

    Ach so... Ist das jetzt so, dass für die Eingabe keine neue Box (Dialog) geöffnet wird, sondern die Eingabe direkt auf deinem Fenster erfolgt???


Anmelden zum Antworten