Hallo,
Ich möchte in meiner Klasse einem bzw. mehreren Window-Handles eine Callback-Funktion zuweißen.
Dazu folgender Klassenentwurf:
Nun gibt es allerdings das Problem, dass sich der Compiler beim zuweisen der Callbackfunktion (Dialog:
ialog - SetWindowLong (...)) beschwert:
Jetzt habe ich herausgefunden, dass es die Möglichkeit gäbe, die Callbackfunktion als Statisch zu deklarieren.
Die funktioniert auch, nur habe ich nun keine Berechtigung mehr, auf die Eigenschaften der Klasse zuzugreifen.
Gibt es dennoch eine Möglichkeit, die Callbackfunktion so in die Klasse zu integrieren, dass darüber noch auf alle Eigenschaften und Methoden zugreifen kann?
Mit freundlichen Grüßen,
Jacal
Ich möchte in meiner Klasse einem bzw. mehreren Window-Handles eine Callback-Funktion zuweißen.
Dazu folgender Klassenentwurf:
Code:
class Dialog
{
private:
HWND &hwndMain ;
HWND hwndFunc ;
LRESULT CALLBACK FuncProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
WNDPROC *wndprocFunc ;
public:
Dialog (HWND&) ;
};
// ********* Konstruktor ********** //
Dialog::Dialog (HWND &hwnd) : hwndMain(hwnd)
{
hwndFunc = CreateWindow ("button", "Func", WS_CHILD, 10, 30, 70, 25, hwndMain,
NULL, (HINSTANCE)GetWindowLong(hwndMain, GWL_HINSTANCE), NULL);
wndprocFunc = (WNDPROC) SetWindowLong (hwndFunc, GWL_WNDPROC, (LONG) FuncProc);
}
// ******* Callback Funktionen ******* //
LRESULT CALLBACK Dialog::FuncProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
if ((lParam == (LPARAM)hwndFunc) && (HIWORD(wParam) == BN_CLICKED))
MessageBox (NULL, "Sie haben soeben den Button 'Func' gedrückt!", "Dialog::FuncProc", MB_ICONINFORMATION | MB_OK);
}
return (CallWindowProc (wndprocFunc, hwnd, message, wParam, lParam));
}
Nun gibt es allerdings das Problem, dass sich der Compiler beim zuweisen der Callbackfunktion (Dialog:

error: aggregate value used where an integer was expected|
Jetzt habe ich herausgefunden, dass es die Möglichkeit gäbe, die Callbackfunktion als Statisch zu deklarieren.
Code:
class Dialog
{
private:
[...]
static LRESULT CALLBACK FuncProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
[...]
};
Die funktioniert auch, nur habe ich nun keine Berechtigung mehr, auf die Eigenschaften der Klasse zuzugreifen.
Gibt es dennoch eine Möglichkeit, die Callbackfunktion so in die Klasse zu integrieren, dass darüber noch auf alle Eigenschaften und Methoden zugreifen kann?
Mit freundlichen Grüßen,
Jacal