befehlszeilen parameter mit wx[widgets/windows]



  • Ich habe grade angefangen wxwidgets zu lernen und folge einem tutorial in dessen verlauf man einen editor erstellt (damit bin ich jetzt eigentlich durch). Ich möchte ihn jetzt um eine "öffnen mit..." funktion erweitern (also dass man dateien mit Öffnen mit... öffnet und das meinen editor auswählt). Soweit ich weiß übergibt windows dann den pfad der datei als commandozeilen parameter.
    Also habe ich mir angekuckt wie man mit wxwidgets diese dinger ausliest und bin auf wxapp::argc und wxapp::argv gestoßen.
    Fix hab ich in die MyApp::OnInit() Funktion ein wxLogMessage(BasicApplication::argv[0]); eingebaut, das auch ordnungsgemäß arbeitet. wenn ich jetzt aber die selbe zeile in die MyFrame::OnInit() Methode reinschreibe sagt er (mingw): type MyApp is not a base type for MyFrame.

    Ich nehme an, dass das ein sehr simpler Fehler ist der von meinem mangelnden Verständnis von Klassen herrührt (ich hatte nie wirklich was mit Klassen am Hut). Kann mich jemand aufklären?



  • Dein Compiler hat recht 🙂

    In deiner OnInit-Funktion deiner MyApp Klasse tut es, weil es ein normaler Aufruf einer Member-Funktion ist. Dein Frame ist natürlich nicht von wxApp abgeleitet, darum klappt das dort nicht.

    Du brauchst jetzt dem Frame aber keine Referenz/Zeiger deiner App-Klasse zu übergeben, es gibt eine globale Funktion wxGetApp(), die liefert dir eine Referenz auf deine App-Klasse (auf deine Abgeleitete wohlgemerkt, nicht nur auf wxApp):

    MyApp& app = wxGetApp();
    wxLogMessage(app.argv[0]);



  • soso, vielen dank!



  • ach und noch was: wie kann ich mit wxwindows nicht-strings ausgeben (zb myapp::argc ?) gib es eine special umwandlungsmethode in wxString oder so?




Log in to reply