Nachrichtenfunktion in Klasse



  • Beim Compilieren erhalte ich einen Fehler, aber warum verstehe ich nicht ganz. Hier mal der Source.

    Die 2 Funktionen in der Klasse

    void Engine::InitD3D(HINSTANCE &hInstance)
    {
    	if(NULL == (pD3D = Direct3DCreate9(D3D_SDK_VERSION)))
    	{
    		throw Exception("CREATE DX9 INTERFACE FAILED");
    	}
    	DialogBox(hInstance,MAKEINTRESOURCE(IDD_SELECT),NULL,DlgProc);
    }
    
    BOOL CALLBACK Engine::DlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
    	switch(msg)
    	{
    		case WM_INITDIALOG:
    		{
    
    		}
    		return TRUE;
    	}
    	return FALSE;
    }
    

    Der Aufruf

    INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrecInstance, PSTR szCmdLine, int iCmdShow)
    {
    	Engine eng;
    	eng.InitD3D(hInstance);
    
    [...]
    

    Die Fehlermeldung

    g:\Entwicklung\VisualC++\DX9_1\engine.cpp(20): error C2664: 'DialogBoxParamA' : cannot convert parameter 4 from 'BOOL (HWND,UINT,WPARAM,LPARAM)' to 'DLGPROC'

    Was ist daran Falsch? Kann man sowas überhaupt in Klassen schreiben? Was gibt da evtl zu beachten?

    PS: Ist es richtig das DialogBox in einer Art schleife läuft oder müßte ich denoch eine Nachrichten schleife mit bei InitD3D reinschreiben?



  • Ist die DialogProc static?

    Außerdem hat die DialogProc den Rückgabetyp INT_PTR.



  • Schau mal in die FAQ 🙂



  • Also mit dem Rückgabe wert INT_PTR hab ich es schon versucht, da kommt die selbe Fehlermeldung wie oben, nur statt BOOL ebend INT_PTR.

    Wie ist das mit dem static zu verstehen? Die Dialogbox wird aus einer Resource erzeugt.
    @flenders
    Unter was könnte ich da genau suchen? Also das stichwort mein ich.



  • Informier dich über das Schlüsselwort static. Und dannach benutzt du dieses bei der Memberfunktion Engine::DlgProc. 😉



  • Ach das kann man auch bei Funktionen verwenden? Das hab ich bisher noch gar nicht gewußt 🙂 Ich dachte das geht nur bei Variablen...

    Hey, super, es klappt einwandfrei 😃 Und wieder was dazugelernt.

    THX@ALL


Anmelden zum Antworten