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