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


Anmelden zum Antworten