In einer DlgProc die in einer Klasse als static deklariert ist, auf die Klasse zugreifen !!
-
Hi,
Hm, jo wie funktioniert das. Wenn es geht, währe eine kleine Erklährung nett!!_H_
class CConsole { COLORREF m_Color; ... public: static LRESULT CALLBACK DlgProc( HWND hwndDlg, UINT uMsg, LPARAM wParam, LPARAM lParam ); // msgproc .. };
_CPP_
LRESULT CALLBACK CConsole::DlgProc( HWND hDlg, UINT uMsg, LPARAM wParam, LPARAM lParam ) // msgproc { switch( uMsg ) { case WM_INITDIALOG: { // m_Color nicht vorhanden :( m_color = RGB( 255, 255, 255 ); return TRUE; }break; } return FALSE; }
-
in die header datei:
static CConsole* m_pInstance;
in den konstructor:
m_pInstance = this;
und an das ende der cpp-datei:
CConsole* CConsole::m_pInstance = NULL
zugriff auf klasse:
m_pInstance->xxxx();
ist ne schnelle methode, für das leidige "static-problem", die allerdings bei mehrfacher instanzierung zu problemen führt.
alternativ kannst du auch den dialog mit der DialogBoxParam() starten und dort den pointer rübergeben.
-
Hi,
Danke, erstmal für deine Antwort.Ich glaube die Lösung über DialogBoxParam ziehe ich vor. wo kann ich dann den Parameter in der DlgProc abfragen ?
Cu
-
ist ganz einfach, bei WM_INITDIALOG:
static CConsole* m_pConsole = (CConsole*) lParam;
-
Ok Danke.
Darf ich noch fragen was "virual" vor einer Funktion zu sagen hat ?
-
NobbiXXL schrieb:
Ok Danke.
Darf ich noch fragen was "virual" vor einer Funktion zu sagen hat ?
darf man - du meinst "virtual", hmm ... das bedeutet, das diese funktion in einer abgeleiteten klasse überschrieben werden kann.
-
Ok Danke