000
25.04.2006, 20:07 Uhr
JPSelter
|
Ich habe mit VC++6 ein MFC Programm geschrieben und habe nun ein Problem, das ich nicht gelöst bekomme. Ich habe:
1) Hauptprogramm-Klasse Toolbox.cpp 2) Haupt-GUI-Klasse ToolboxDlg.cpp 3) zusätzlicher Dialog myDialog1.cpp
Ich muss nun aus myDialog1 Zugriff auf eine Variable aus ToolboxDlg haben, ich habe bereits dafür eine set-Methode angelegt. Ich habe bisher den Fehler gemacht, dass ich ausversehen eine Instanz angelegt habe, und weiss nun, dass ich einen Pointer auf die Hauptklasse haben muss. Aber wie mache ich das?
Etwas Code:
Aus Toolbox.cpp
Code: |
BOOL CToolboxApp::InitInstance() { AfxEnableControlContainer();
#ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif
CToolboxDlg dlg; m_pMainWnd = &dlg; // <------ hier muss sicher ein Pointer hin, aber welchen Typs und wo deklariert? int nResponse = dlg.DoModal(); if (nResponse == IDOK) // exit program via the close button { // do nothing }
return FALSE; }
|
Aus ToolboxDlg.h
Code: |
public: void CPMDToolboxDlg::setEnabledBitmaps(int pos, int v); ... protected: void CPMDToolboxDlg::ProcessBitmaps();
|
Aus myDialog1.h
Code: |
public: CPMDToolboxDlg *m_pDialog1;
|
Aus myDialog1.cpp
Code: |
void myDialog1::OnCheck1() { if (m_buttonCheck1.GetCheck() == 1) m_pDialog1->setEnabledBitmaps(0,1); else m_pDialog1->setEnabledBitmaps(0,0); }
|
Wie Ihr seht habe ich diesen Pointer einfach mal als Member von myDialog1 deklariert, aber er wird im Hauptprogramm nicht gefunden. Includen kann ich myDialog1.h dort nicht, weil es bereits in Toolbox.cpp included ist (gibt sonst einen LNK2005 Fehler).
Ich werde langsam müde und habe so viel ausprobiert, aber ich finde ich Lösung nicht. Hoffentlich könnt Ihr mir helfen Danke schonmal! |