WndProc verwirrt
-
Folgende is ein ausschnitt von mein win32 wrapper
LRESULT CALLBACK WindowBase::WndProc(HWND hWnd, ZUINT uMsg, WPARAM wParam, LPARAM lParam) { WindowBase* pWnd = NULL; if (uMsg == WM_NCCREATE) { pWnd = reinterpret_cast<WindowBase*>( ( (LPCREATESTRUCT) lParam )->lpCreateParams ); LONG_PTR nUserData = reinterpret_cast<LONG_PTR>(pWnd); ::SetWindowLongPtr(hWnd, GWLP_USERDATA, nUserData); } LONG_PTR test = ::GetWindowLongPtr(hWnd, GWL_USERDATA); //pWnd = (WindowBase*) test; beide variante funktionieren erstmal pWnd = (WindowBase*) &test; if (pWnd) return pWnd->EventHandler(hWnd, uMsg, wParam, lParam); else return ::DefWindowProc(hWnd, uMsg, wParam, lParam); }also es funktionieren beide variante, deshalb bin ich ein bisschen verwirrt, kann mir das jemand erklaeren.
bei debuggen sehe ich genau folgendes
&test 0x0021F150 long*
test 0x0021F154 longich hatte gedacht &test wuerde hier crashen, aber es funktioniert, nicht erwartet. kann mir jemand das erklaeren?