WNDCLASSEX - Eigenschaften verursachen error C2440



  • Guten Tag,

    meine Wenigkeit hat sich zur Aufgabe gemacht eine eigene Klasse zu schreiben, die das erstellen eines Fenster einfacher und Übersichtlicher machen soll.
    Nun kommt es aber gerade bei der Klasse WNDCLASSEX und der Zuweisung der Attribute zu Fehlern, anscheinend ist eine Konvertierung nicht möglich.

    Mein kleines Prog sieht bisher so aus:

    #include "D3DClass.h"
    
    INT WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd) {
    
    	MyWndClass *MyWnd = new MyWndClass(hInstance);
    
    	MyWnd->CreateMainWindow();
    
    	return 0;
    }
    
    #ifndef D3DCLASS_H
    #define D3DCLASS_H
    
    #include <d3d9.h>
    #include <d3dx9.h>
    
    class MyWndClass {
    public:
    	MyWndClass(HINSTANCE hInstance);
    	~MyWndClass();
    
    	HWND		CreateMainWindow();
    	LRESULT		CALLBACK MessageHandler(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
    
    	HWND		GethWnd();
    	HINSTANCE	GethInstance();
    
    private:
    	HWND		m_hWnd;
    	HINSTANCE	m_hInstance;
    };
    ...
    
    #endif
    
    #include "D3DClass.h"
    
    // DEKLARATIONEN FÜR MYWNDCLASS
    
    MyWndClass::MyWndClass(HINSTANCE hInstance) {
    	m_hInstance = hInstance;
    	m_hWnd		= NULL;
    }
    
    MyWndClass::~MyWndClass() {
    }
    
    HWND MyWndClass::CreateMainWindow() {
    
    	WNDCLASSEX wndClass = {
    			sizeof(WNDCLASSEX),
    			CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW | CS_OWNDC,
    19:			MessageHandler,
    20:			0,
    21:			0,
    22:			GethInstance(),
    23:			LoadIcon(NULL,IDI_WINLOGO),
    24:			LoadCursor(NULL,IDC_ARROW),
    25:			(HBRUSH)GetStockObject(WHITE_BRUSH),
    26:			NULL,
    27:			"MyWndClass",
    28:			LoadIcon(NULL,IDI_WINLOGO)
    29:	};
    
    	RegisterClassEx(&wndClass);
    
    	m_hWnd = CreateWindowEx( 
    							NULL,
    							"MyWndClass",
    							"MyD3D-Window",
    							WS_OVERLAPPEDWINDOW | WS_VISIBLE,
    							0, 0,
    							1024, 768,
    							NULL,
    							NULL,
    							GethInstance(),
    							NULL);
    }
    
    LRESULT CALLBACK MyWndClass::MessageHandler(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) {
    	//Nachricht auswerten
    	switch(msg) {
    	case WM_DESTROY: { // Fenster schließen
    		PostQuitMessage(0);
    		return 0;
    					 }
    	}
    		return (DefWindowProc(hwnd,msg,wParam,lParam));
    }
    
    HINSTANCE MyWndClass::GethInstance() {
    	return m_hInstance;
    }
    
    HWND MyWndClass::GethWnd() {
    	return m_hWnd;
    }
    ...
    

    Die Fehler sind folgende:

    D3DClass.cpp(19) : error C2440: 'initializing' : '' kann nicht in 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)' konvertiert werden
    Keine Funktion mit diesem Namen im Gueltigkeitsbereich stimmt mit dem Zieltyp ueberein
    D3DClass.cpp(22) : error C2440: 'initializing' : 'struct HINSTANCE__ *' kann nicht in 'int' konvertiert werden
    Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    D3DClass.cpp(23) : error C2440: 'initializing' : 'struct HICON__ *' kann nicht in 'int' konvertiert werden
    Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    D3DClass.cpp(24) : error C2440: 'initializing' : 'struct HICON__ *' kann nicht in 'int' konvertiert werden
    Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    D3DClass.cpp(25) : error C2440: 'initializing' : 'struct HBRUSH__ *' kann nicht in 'int' konvertiert werden
    Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    D3DClass.cpp(27) : error C2440: 'initializing' : 'char [11]' kann nicht in 'struct HINSTANCE__ *' konvertiert werden
    Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    D3DClass.cpp(29) : error C2440: 'initializing' : 'struct HICON__ *' kann nicht in 'struct HINSTANCE__ *' konvertiert werden
    Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    Fehler beim Ausführen von cl.exe.

    D3DClass.obj - 7 Fehler, 0 Warnung(en)

    Hoffe ihr könnt mir helfen.

    Mit freundlichen grüßen
    PhiL



  • Zeile 19: Eine normale Methode kann nicht als Funktionszeiger übergeben werden (da fehlt der Bezug zum this-Zeiger), das geht nur mit statischen Methoden oder globalen Funktionen.

    Die übrigen Fehler könnten Folgefehler sein (das sieht so aus, als ob die einzelnen Initialisierungen sich "verschoben" hätten und der Compiler die beiden 0 überlesen hat).



  • Danke.

    Hab die Funktion static gesetzt. Jetzt funktionierts. : )


Anmelden zum Antworten