Abbruch bei OnInitDialog...
-
Guten Morgen an Alle,
meine Frage an Euch ist folgende:
Ich hab ein Pgm, welches ein Dialog aufruft und dieses mir auf dem Bildschirm anzeigt. Nachdem ich jetzt eine Kopie des Pgm gemacht habe und mit der Kopie weitergearbeitet habe, ist es irgendwann zu einem Abbruch des Pgm beim Aufruf des Dialogs gekommen. Nachdem ich mich mit dem Debugger durch den Quellcode durchgewusselt habe, bin ich auf die Problemstelle gestossen, wo ich eine Access Violation erhalte...und zwar geschieht der Abbruch, nachdem ein Objekt meiner Dialogklasse erstellt wird, und die Methode doModal() aufgerufen wird. Innerhalb der DoModal Methode, wird wiederrum die Methode CreateDlgInDirect(...) aufgerufen, die dann dafür sorgt, dass die OnInitDialog()-Methode der Dialog-Klasse aufgerufen wird. Und da kommt es anscheinend zum Abbruch, was für mich unlogisch erscheint, Unlogisch darum, weil nachdem ich exakt den gleichen Quellcode der Methode OnInitDialog() aus meinem Original herauskopiert habe, ging das Pgm wieder.Warum ist das so? Der Quellcode ist Zeichen für Zeichen der Gleiche geblieben, es hat sich nichts verändert und trotzdem kommt es zu einer Access Violation, hat jemand schon die gleichen Erfahrungen gemacht und weiss, warum sowas passiert?
Gruss,
chullain
-
...genaugenommen bricht er ab, sobald er die Basisklasse, also die OnInitDialog-Methode von CDialog innnerhalb der OnInitDialog-Methode meiner Klasse aufruft...
-
...als Ursache könnte ich mir vorstellen, daß du Steuerelemente gelöscht hast, die aber noch eingtragen sind in der MESSAGE_MAP. Oder du hast die ResourcenID verändert und beim kopieren des Projektes irgendwie noch die alte Datei,.... Möglicherweise hilft schon ein genaueres Betrachten des #include "resource.h"
-
DaDings schrieb:
...als Ursache könnte ich mir vorstellen, daß du Steuerelemente gelöscht hast, die aber noch eingtragen sind in der MESSAGE_MAP. Oder du hast die ResourcenID verändert und beim kopieren des Projektes irgendwie noch die alte Datei,.... Möglicherweise hilft schon ein genaueres Betrachten des #include "resource.h"
jo, das wirds sein.
bei solchen problemen waere es uebrigens sehr hilfreich, wenn du den qullecode mit fehlermeldung und deren zeilennumer posten wuerdest um dir schnell und effektiv zu helfen.
Esco
-
Hallo,
danke schon mal...das waren schon mal gute Tips von Euch, da guck ich grad mal nach...aber eine Sache ist mir noch unklar...
...kannst Du mir bitte sagen, wie ich in der Ressource.h-Datei nachschauen kann, ob alles stimmt...ich mein, ich sehe zwar da verschiedene Steuerelement-IDs, aber so richtig kann ich nichts damit anfangen...ich benutze sie zwar, aber welchem Dialog diese zugeordnet sind, weiss ich ja in dem Moment nicht...was bedeuten denn die Zahlen daneben rechts...und dann wollte ich wissen, dürfen auch mehrere gleiche Steuerelement-IDs in einem Projekt sich befinden...denn das ist bei mir der Fall, wie ich festgestellt habe...
gruss,
chullain
-
Ich würde nicht nachsehen in der resource.h sondern in der Message_Map und in deinem Resourcen_Editor. Also irgendwo in deinem Programm und zwar in der cpp steht irgendwo:
BEGIN_MESSAGE_MAP(CChangeBookDlg, CDialog) ON_LBN_SELCHANGE(IDC_LISTUPPER, OnLbnSelchangeList) ON_LBN_SELCHANGE(IDC_LISTLOWER, OnLbnSelchangeList1) ON_WM_SHOWWINDOW() END_MESSAGE_MAP()
oder sowas in der Art
Jetzt solltest du die Steurelemente im Resourceneditor überprüfen ob die den noch gleich sind.
Das selbe machst du in der Funktion
DoDataExchange(CDataExchange* pDX)Falls da ein Wert steht den du im Resourceneditor nicht mehr vorhanden ist oder jetzt anders heißs, hast du vermutlich den Fehler gefunden.
Zu deiner Frage: Auf einem Dialog MÜßEN die IDs eindeutig sein. Gleiche Nummern auf unterschiedlichen Dialogen ist mehr oder weniger egal.
-
Danke...DoDataExchange wars...