Problem mit Dialog welcher von CFileDialog erbt
-
Hallo erstmal,
ich habe ein kleines Problem mit einem Dialog, welcher von CFileDialog erbt. Auf meinem Rechner und auf zig anderen Windows-Rechnern funktioniert mein Dialog einwandfrei; nur auf einem Kundenrechner (einem Citrix-Server) macht dieser Dialog Probleme.
Probleme:
- Beim Zugriff auf Steuerelement des CFileDialogs viaCWnd* textWnd = GetParent()->GetDescendantWindow(cmb13);
ist auf dem besagten Citrix-Server der textWnd-Zeiger leider ein NULL-Pointer, obwohl die Methode auf allen anderen Rechnern einen gültigen Pointer auf das Combobox Steuerelement zurückliefert. Nachdem ich diesen Zeiger vor Benutzung auf !nullptr überprüfe, stürzt das Programm auch schon mal nicht mehr ab, aber jetzt erscheint jedesmal eine MessageBox dem Text "Invalid Argument".
Ich vermute, dass diese beiden Probleme den gleichen Ursprung haben werden. Und nun zu meiner Frage ...Wie kann es sein, dass die Methode (s. oben) auf diesem einen Rechner einen NULL-Pointer zurückliefert aber auf allen anderen Rechnern nicht? Das hiesse ja, dass die Resource cmb13 nicht existieren würde. Da gab es auch vor geraumer Zeit (vor ein paar Jahren VC6->VC7) einmal eine Umstellung bei den Steuerelementen von edt1 -> cmb13. Kann es nun sein, dass auf dem Citrix-Rechner eine ältere VC-Runtime + ältere MFC-DLLs installiert sind (ich kann leider nicht ohne weiteres selber auf dem Rechner nachschauen)? Aber dann dürfte doch mein Programm erst gar nicht funktionieren, oder?
IDE:
- VS2010 SP1Projekt-Einstellungen:
- Use of MFC: Use MFC in a Shared DLL
-
Wie kann es sein, dass die Methode (s. oben) auf diesem einen Rechner einen NULL-Pointer zurückliefert aber auf allen anderen Rechnern nicht? Das hiesse ja, dass die Resource cmb13 nicht existieren würde.
Genau. Die Controls im CFileDialog sind abhängig von der Windowsversion (cmb13 war unter NT noch edt1 -also nicht Studioabhängig). Welches BS läuft auf dem Citrix? Du musst evt. die Windowsversion abfragen und unterschiedliche Controls verwenden.