Thread soll Mainframe Methoden aufrufen

Dann pack den m_pMeinMainFrame in deine CWinApp-Klasse rein.
Du kannst in MFC überall mit "theApp" auf deine WinApp-Klasse zugreifen. Mach das Member public oder mach dir einen Getter.

Um dann irgendwo drauf zuzugreifen, einfach:

theApp.m_pMeinMainFrame->TuWas();
 
Für den Thread ist theApp, laut Compiler ein nicht deklarierter Bezeichner


Code:
VOID Thread (PVOID pvoid) 

{ 
//CMFCStartUpApp theApp;

Sleep(5000); 

CMainFrame *pFrame = new CMainFrame;

pFrame = theApp.m_pMeinMainFrame; 

pFrame->OnCloseInst(); 

}

Mit dem ausgeklammerten Zusatz läuft der Compiler durch, gibt aber bei der Ausführung einen Bösen absturz.

Zur Info noch
Code:
class CMFCStartUpApp : public CWinApp

{

public:

CMFCStartUpApp();

CMainFrame *m_pMeinMainFrame;
 
...

und aus MFCStartUp

Code:
...
//CMainFrame *m_pMeinMainFrame = (CMainFrame*) m_pMainWnd; 

theApp.m_pMeinMainFrame = (CMainFrame*) m_pMainWnd;

m_pMainWnd->ShowWindow(SW_HIDE);
 
...
 
Es scheint also theApp zu kennen, jetzt ist die Frage, wo kommt der Absturz her?
Ist der Pointer m_pMeinMainFrame ungültig oder etwas anderes? Zeig mal die Fehlermeldung.
 
Debug Assertion Failed!
File: appcore.cpp
Line: 242


Bei Retry:
Die Ausnahme "unknown software exception" (0x80000003) ist in der Anwendung an der Stelle 0x7c2ac2bf aufgetreten


Bei Ignore:
Die Anweisung in "0x00416d6b" verweist auf Speicher in "0xcccccccec". Der Vorgang "read" konte nicht auf dem Speicher durchgeführt werden.


In beiden Fällen öffnet sich bei theApp. das Menü (in Java ist das ein Gutes zeichen) wenn "CMFCStartUpApp theApp;" im Thread auskomentiert ist
dann erhalte ich "error c2065: 'theApp': nichtdeklarierter Bezeichner" und "error c2228: Der linke Teil von '.mp_MeinMainFrame' muss eine Klasse/Strukur/Union sein


Kennen sie eine gute Seite mit einigen funktionsfähigen MFC-Beispielen? Ich kann mir nicht vorstellen, dass ich der erste bin der ein soleches Problem hat.

Gruß
 
Dann ist irgendwo was an dem Pointer faul.
Wäre es möglich das Projekt (mit .dsp/.vcproj) hier gezippt zu attachen? Dann kann ich mal kurz drüberguggen und rausfinden, wo's hapert. Manchmal liegt der Fehler ganz woanders, als man eigentlich vermutet.

Ansonsten, für MFC empfehle ich http://www.codeguru.com und http://www.codeproject.com. Diese sind teilweise sehr fortgeschritten, haben aber auch einfachere Beispiele.
 
Geht im Prinzip, kann ich aber erst nach der Arbeit machen um nicht aus dem Intranet zu versenden.(So gegen 5 Uhr). Bis dahin experimentiere ich mal weiter und suche einige Beispiele durch.

Grüße
 
Hier nun nochmals kurz das Ergebnis dieses Threads.

In der MCFStartUp werden 2 Variablen angelegt.

Code:
MFCStartUpApp theApp;
CMainFrame *m_pMeinMainFrame;

Bevor das Fenster angezeigt wird, wird eine Pointer auf den MainFrame gespeichert.

Code:
m_pMeinMainFrame = (CMainFrame*) m_pMainWnd; //pointer auf den Mainframe m_pMainWnd->ShowWindow(SW_HIDE);

Nun zum Thread an sich.

Code:
VOID Thread (PVOID pvoid) { 
CMainFrame *pFrame = theApp.m_pMeinMainFrame; 
pFrame->Mach Etwas;
}

In der ".cpp"-Datei müssen noch folgende globale Variblen defininert sein. Das andere nennt sich Prototyp, oder so, bin nicht ganz sicher.

Code:
VOID Thread (PVOID pvoid);
extern CMFCStartUpApp theApp;

Ich hoffe ich habe mich einigermaßen korrekt ausgedrückt.
 
Zurück