000
28.12.2005, 14:52 Uhr
A-l-e-x
|
Ich will den Button ableiten und nebenbei noch Extra Daten speichern. Irgendwie kriege ich es nicht hin...
C++: |
HINSTANCE hInstance; WNDPROC OldWndProc;
// struct BTN { int x; int y; int z; };
// ... void CreateImageButtonClass(HINSTANCE hInst) { WNDCLASSEXL wc; hInstance = hInst; wc.cbSize = sizeof(WNDCLASSEX); GetClassInfoEx(NULL,"BUTTON", &wc); OldWndProc = wc.lpfnWndProc; wc.lpfnWndProc = (WNDPROC)BtnProc; wc.hInstance = hInst; wc.lpszClassName = "NEU_BUTTON"; wc.cbWndExtra = 4; // Platz für einen Zeiger... RegisterClassEx(&wc); }
LONG WINAPI BtnProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { LPVOID sav;
switch(uMsg) { case WM_CREATE: sav = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(BTN)); SetWindowLong(hWnd,0,sav); break; case WM_DESTROY: sav = GetWindowLong(hWnd,0); HeapFree(GetProcessHeap,NULL,sav); default: return CallWindowProc(OldWndProc, hWnd, uMsg, wParam, lParam); } return CallWindowProc(OldWndProc, hWnd, uMsg, wParam, lParam); }
|
Warum kann ich nicht SetWindowLong(...) verwenden? Oder wie speichere ich richtig meine zusätzlichen Daten?
mfg A-l-e-x |