Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: Andere GUIs - Qt, GTK+, wxWidgets ::  wxWidgets wxFileDialog exception in ShowModal()     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
Schlangenmensch
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.11.2008
Beiträge: 423
Beitrag Schlangenmensch Mitglied 16:49:33 27.07.2017   Titel:   wxWidgets wxFileDialog exception in ShowModal()            Zitieren

Hallo zusammen,

ich habe grade ein Problem mit wxFileDialog von wxWidgets.

Ich bekomme folgende Exception:
Code:
Ausnahme ausgelöst bei 0x74F2845D (KernelBase.dll) in main.exe: 0x000006BA: The RPC server is unavailable.

Es geht um folgenden Zeilen:
C++:
wxFileDialog dialog(this, "", "", "", "*.txt", wxFD_SAVE | wxFD_OVERWRITE_PROMPT);
if (chooseExportFile.ShowModal() == wxID_OK){
...
}

Die Ausnahme wird in "ShowModal" ausgelöst.
Der Dialog wird innehalb eines Eventhandlers aufgerufen, der Teil eines Panels ist.
Ich befürchte, dass ich hier von irgendwelchen Nebeneffekten betroffen bin, denn als ich versucht habe, den Fehler in einem minimalen Beispiel nachzustellen bin ich kläglich gescheitert. In dem kleinen Beispiel funktioniert alles wie es soll.

Mit dem Debugger habe ich mich durchgeschlagen, bis in die Funktion:

C++:
static bool DoShowCommFileDialog(OPENFILENAME *of, long style, DWORD *err)

die sich in der wxWidgets Source Code Strucut am Pfad: "src/msw/filedlg.cpp" befindet.
In der Zeile:
C++:
 if ( style & wxFD_SAVE ? GetSaveFileName(of) : GetOpenFileName(of) )

wird die Exception geworfen. Leider erlaubt mir der Debugger nicht, da noch "rein zu steppen". Wenn ich da einen Einzelschritt rein machen möchte, kommt die Exception, aber dass ist dann auch schon Windows API fürchte ich.

Die Anwendung ist im Moment komplett single threaded. Und andere Dialoge funktionieren an der Stelle (auch modal).

Hat jemand eine Idee, an was das liegen könnte?

Achso, wenn ich die Exception ignoriere, wird der Dialog aufgebaut und die Software läuft weiter.


Zuletzt bearbeitet von Schlangenmensch am 16:50:24 27.07.2017, insgesamt 1-mal bearbeitet
Schlangenmensch
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.11.2008
Beiträge: 423
Beitrag Schlangenmensch Mitglied 13:13:15 28.07.2017   Titel:              Zitieren

Hm, ok.

Ich habe letztens bei mir die Debugger Einstellungen angepasst. Und zwar so, dass bei jeder win32 Exception angehalten wird. Wenn ich die Einstellungen auf Standard zurück setze, reagiert der Debugger nicht auf die Exception.

Anders herum, wenn die Debugger Einstellungen so sind, dass bei jeder win32 Exception unterbrochen wird, wird immer wenn:

C++:
wxFileDialog dialog(this, "", "", "", "*.txt", wxFD_SAVE | wxFD_OVERWRITE_PROMPT);
if (chooseExportFile.ShowModal() == wxID_OK){
}


aufgerufen wird, die Exception vom Debugger gefangen und unterbrochen.

Das hieße, dass ich so zwar weiterarbeiten kann, aber irgendwie scheint mir das nicht die sauberste Lösung zu sein.
phlox81
Moderator

Benutzerprofil
Anmeldungsdatum: 21.04.2001
Beiträge: 7480
Beitrag phlox81 Moderator 18:56:41 29.07.2017   Titel:              Zitieren

Ist es der FileDialog der die Exception auslöst?
Triggern andere Dialoge die Exception auch? ( wxTextEntryDialog zb.)

Was für ein Typ ist chooseExportFile und wie wird der erstellt?

_________________
Intelligenz ist eine Illusion des Menschen

phlox81.de | The Black Board | Code Node | Xing | Blog | C++ Kurs | Meeting C++ | Twitter


Zuletzt bearbeitet von phlox81 am 18:58:22 29.07.2017, insgesamt 1-mal bearbeitet
Schlangenmensch
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.11.2008
Beiträge: 423
Beitrag Schlangenmensch Mitglied 08:47:45 31.07.2017   Titel:              Zitieren

Sry, chooseExportFile ist ein Copy & Paste Fehler. Das muss heißen:

C++:
wxFileDialog dialog(this, "", "", "", "*.txt", wxFD_SAVE | wxFD_OVERWRITE_PROMPT);
if (dialog.ShowModal() == wxID_OK){
}


Die anderen Dialoge die ich probiert habe (wxMessageDialog und wxTextEntryDialog), triggern die Exception nicht.
C++ Forum :: Andere GUIs - Qt, GTK+, wxWidgets ::  wxWidgets wxFileDialog exception in ShowModal()   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.