Ik wil een callback functie meegeven aan wc.lpfnWndProc, maar ik krijg steeds een foutmelding.
Dit komt waarschijnlijk omdat de callback functie gedeclareerd is in een class.
Nu is mijn vraag of het op deze manier(callback functie gedeclareerd in een class) mogelijk is om de callback functie toe te wijzen aan wc.lpfnWndProc.
De code
De foutmelding:
Callback functie
Dit komt waarschijnlijk omdat de callback functie gedeclareerd is in een class.
Nu is mijn vraag of het op deze manier(callback functie gedeclareerd in een class) mogelijk is om de callback functie toe te wijzen aan wc.lpfnWndProc.
De code
C++:
1
2
3
4
5
6
7
8
9
10
11
12
| WNDCLASS wc; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = this->WndProc; <<<<<<<<Hier krijg ik de foutmelding wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon( hInstance, lpszAppName ); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wc.lpszMenuName = lpszAppName; wc.lpszClassName = lpszAppName; |
De foutmelding:
C++:
1
2
3
| error C2440: '=' : cannot convert from 'long (__stdcall Window::*)(struct HWND__ *,unsigned int,unsigned int,long)' to 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)' |
Callback functie
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| LRESULT CALLBACK Window::WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) { static LPDLGDATA lpMem = NULL; switch( uMsg ) { case WM_CREATE : lpMem = (LPDLGDATA)HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof( DLGDATA ) ); lpMem->bChecked = FALSE; lpMem->bRadio1 = TRUE; break; case WM_DESTROY : if ( lpMem ) HeapFree( GetProcessHeap(), 0, lpMem ); PostQuitMessage(0); break; default : return( DefWindowProc( hWnd, uMsg, wParam, lParam ) ); } return( 0L ); } |