U
Tachyon schrieb:
private:
BOOL CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM );
ist kein Funktionszeiger, sondern eine Funktionsdeklaration.
Da hast du wohl recht.
Danke für den kleinen Denkanstoß ...
habe mir jetzt mal die WNDCLASS Struktur genauer angesehen, schließlich wird dort hinein die WndProc referenziert.
Undzwar nach WNDPROC lpfnWndProc.
Habe jetzt folgendes probiert:
#include <windows.h>
class Klasse
{
private:
WNDPROC WndProc;
public:
Klasse();
~Klasse();
void setWndProc( WNDPROC );
};
void Klasse::setWndProc( WNDPROC newWndProc )
{
WndProc = newWndProc;
};
BOOL CALLBACK WindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
return false;
};
int main( void )
{
Klasse MeineKlasse;
MeineKlasse.setWndProc( WindowProc );
return 0;
};
Läuft leider auch nicht.
EDIT:
OK, habs hinbekommen.
WNDPROC bezieht sich auf LRESULT CALLBACK für normale Windows.
Für BOOL CALLBACK, also Dialogs benötigt man DLGPROC.
Also ...
#include <windows.h>
class Klasse
{
private:
DLGPROC DlgProc;
public:
void setWndProc( DLGPROC );
};
void Klasse::setWndProc( DLGPROC newDlgProc )
{
DlgProc = newDlgProc;
};
BOOL CALLBACK DialogProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
return false;
};
int main( void )
{
Klasse MeineKlasse;
MeineKlasse.setWndProc( DialogProc );
return 0;
};
Danke für die Unterstützung.
Ach und by the way...
Klasse();
~Klasse();
ohne Definition verursachen Linkerfehler.
Nur, damit sich hier keiner beschwert.
Gruß, paSe