ComboBox Membervariable hinzugefügt, Anwendung startet nicht mehr
-
Hallo!
Ich benutze VC++ 6.
Ich habe in meiner gut laufenden Anwendung (Dialogfeldbasierend) ein Combo Box Steuerelement mit dem Ressourceneditor hinzugefügt. Dann habe ich mit dem Klassenassistent eine Membervariable für das Steuerelemet vom Typ CComboBox hinzugefügt.
Wenn ich jetzt das Projekt erstelle erhalte ich 0 Fehler und Warnungen. Beim Start des Programs tut sich allerdings gar nichts mehr. Der Dialog wird nicht angezeigt. Er taucht auch nicht im Task Manager auf.
Wenn ich jetzt die beiden vom Assistenten erzeugten Codezeilen wieder lösche, dann startet auch die Anwendung wieder ganz normal.
Wie kann es sein, dass eine Variabelndeklaration das ganze Programm nicht mehr starten lässt?
Es ist auch nicht die erste ComboBox, die ich in dem Programm benutze.
Ich habe auch schon versucht die Variable von Hand zu definieren. Dann startet das Programm auch nicht. . .
Was ist hier los?????
Maik
-
Poste doch mal bitte die vom Wizard generierten Codezeilen.
-
in der ...Dlg.h hat er folgendes generiert:
// Dialogfelddaten //{{AFX_DATA(CCANMonitorDlg) enum { IDD = IDD_CANMONITOR_DIALOG }; CComboBox m_Combo_TXB; // <----- Das hat er eingefügt //}}AFX_DATA
in der ...Dlg.cpp das hier:
void CCANMonitorDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CCANMonitorDlg) DDX_Control(pDX, IDC_COMBO_UEBERTXB, m_Combo_TXB); //<------ Das hier DDX_Text(pDX, IDC_EDIT_SENDBYTE, m_BytesToSend); //}}AFX_DATA_MAP }
Wenn ich jetzt beides wieder auskommentiere, oder lösche, dann funktioniert wieder alles.
Hoffentlich weißt du, was hier faul ist. . .
-
haste es schonmal mit dem debugger probiert?
Esco
-
Das kommt mir irgendwie so bekannt vor... Ich hatte zum Glück immer eine Sicherung und mit dieser lief alles wieder. Läuft denn das Programm noch, wenn du nur die ComboBox einfügst und kompilierst? Also ohne eine Variable dafür zu erstellen. Wenn das klappt, dann kannst du evtl einen Trick anwenden. Füge noch eine ComboBox ein und erstelle dafür dann eine Variable. Es kann sein das deine Anwendung dann normal läuft. Wenn ja, dann setze die erste ComboBox einfach unsichtbar. Keine Ahnung warum das so ist, aber bei mir ging das so mal.
Ansonsten bleibt nur der Versuch im Debug bzw. Release alle Dateien zu löschen und die Anwendung neu zu kompilieren. Wenn das auch nicht klappt kannst du auch noch in deinem Projekt Ordner die Dateien mit der Endung .ncb und .opt löschen und neu kompilieren. Vielleicht hilft irgendwas
-
Danke an euch!
Bin echt froh, das ihr auch schon mal mit so etwas zu kämpfen hattet.
Also, wenn ich nur die Variablen lösche, nicht aber das Steuerelement, dann läuft die Anwendung, und ich kann auch die Werte im Steuerelement anklicken, usw.
Wenn ich die Variablen wieder aktiviere, und dann das ganze mit dem Debugger starte, dann kommt die Medlung:"Unbehandelte Ausnahme in CAN Monitor.exe(NTDLL.DLL); 0xC0000005: Access Violation"
Hmmm, es ist doch nur eine Variable. . . .
-
Dein Tip mit dem Dateien löschen war Gold wert. Ich habe jetzt mal alles gelöscht, was du gesagt hast, und dann eine neue ComboBox reingebaut (nachdem ich die alte einfach gelöscht habe), mit dem Assistenten wieder die Variable erstellt, und jetzt funktioniert es
.
Das hat mich wieder ganz schön viele Nerven gekostet . . .
Gruß
Maik
-
Kiamur schrieb:
Dein Tip mit dem Dateien löschen war Gold wert. Ich habe jetzt mal alles gelöscht, was du gesagt hast, und dann eine neue ComboBox reingebaut (nachdem ich die alte einfach gelöscht habe), mit dem Assistenten wieder die Variable erstellt, und jetzt funktioniert es
.
Das hat mich wieder ganz schön viele Nerven gekostet . . .
Gruß
Maikdiese methode empfiehlt sich bei jeglicher art von fehlern in verbindung mit den VC++ compiler
Esco