CListCtrl und nicht modularer Dialog Fehler???
-
Hallo,
ich arbeite mit VS6 und SP6.Zur Zeit habe ich ein Problem welches ich nicht verstehe:
1. Dialogbasierte Anwendung erstellt = ok
2. Dialog hinzugefügt (mit Klassenassistent und neue Klasse erstellt) = ok
3. Buton hinzugefügt und mit Funktion belegt, die den neuen Dialog aufrufen soll. Als nicht modularen Dialog.
Einstellung des Dialogs (untergeordnet und dünn).Hier der Codeabschnitt zum einblenden des Dialogs in der Hauptanwendung:
CCCenterDlg* pDialog; pDialog = new CCCenterDlg(); pDialog->Create(IDD_XCLCD,this); pDialog->ShowWindow(SW_SHOW); pDialog->MoveWindow(110,42,500,234,TRUE);4. Alles kompiliert und siehe da es funzt wie es soll.
5. Nun habe ich im Hauptdialog ein ListCtrl hinzugefügt. Wieder kompiliert und alles ok.
6. Dann habe ich mit dem Klassenassistenten eine Variable dem ListCtrl hinzugefügt, Programm erstellt und kein Fehler.
7. Drücke ich nun meine Button um den zweiten Dialog einzublenden kommt folgende
Fehlermeldung :dlgdata.cpp
Line 43Da ich noch Anfänger bin weiß ich nicht wie ich den Fehler beheben kann. Ich verstehe nicht was ein ListControl mit dem zweiten Dialog zu tuen hat. Es bsteht noch keine Verknüpfung.
Ziel soll es sein, später durch anwählen im Listctrl verschiedene Dialoge aufzurufen.
Kann mir jemand das erklären, danke.
Mfg
Anlen
-
Die Fehlermeldung:
dlgdata.cpp
Line 43kommt immer dann, wenn man eine Variablen auf eine Resource im Dialog (Edit-Feld, LisCtrl, Button) hat und die Resource selbst gar nicht existiert. Debugge mal deine DoDataExchange-Methode.
-
Oder anders gesagt. Du willst ein Control miteiner bestimmten ID aber diese ID existiert in dem Dialog-Template nicht.
-
Hallo,
und erstmal danke für die Hinweise.Also meine DoDataExchange Methode sieht so aus.
void CCCenterDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CCCenterDlg) DDX_Control(pDX, IDC_LIST2, m_liste); //}}AFX_DATA_MAP }dies ist ein Auszug aus der resource.h
IDD_CCENTER_DIALOG DIALOGEX 0, 0, 412, 201 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_APPWINDOW CAPTION "CCenter" FONT 8, "MS Sans Serif" BEGIN PUSHBUTTON "Abbrechen",IDCANCEL,355,185,50,14 LTEXT "ZU ERLEDIGEN: Dialogfeld-Steuerelemente hier plazieren.", IDC_STATIC,15,10,200,8 PUSHBUTTON "Button1",IDC_BUTTON1,230,5,50,14 PUSHBUTTON "Button2",IDC_BUTTON2,290,5,50,14 PUSHBUTTON "Button3",IDC_BUTTON3,350,5,50,14 CONTROL "List2",IDC_LIST2,"SysListView32",WS_BORDER | WS_TABSTOP, 15,25,60,150 ENDalso das Listenelement hat die ID "IDC_LIST2" sowie es in den resourcen angegeben ist.
Was mich verwundert ist, das ich den nicht modularen Dialog überhaupt nicht mit den Hauptdialog verknüpft habe. Also noch keine Variabeln zugewiesen. Da beide Dialoge auch noch keine Funktionen haben. Erfolgt auch dort keine Zusammenarbeit.
Wie gesagt lösche die membervariable(control) welche ich dem Listenelement zugewiesen habe, Funzt alles wieder
Weiß jemand noch einen Rat?
Mfg
Anlen
-
Sieh mal in der resource.h nach, welchen int-Wert dein IDC_LIST2 hat. Hat vielleicht noch ein anderes Control denselben Wert?
Wenn ja, gib dem Control mal andere Werte. Du musst dann evt. aber auch den Wert für _APS_NEXT_CONTROL_VALUE entsprechend erhöhen (höchster Control-Wert + 1).
Dann aber unbedingt Rebuild all ausführen.Oder du entfernst die Variable, dann das ListCtrl aus der Resource und machst das Ganze neu.