LRESULT CALLBACK OpenGLWindow::StaticWindowProc( HWND p_WindowHandle, UINT p_Message, WPARAM p_WordParam, LPARAM p_LongParam ) { LONG_PTR UserData = GetWindowLongPtr( p_WindowHandle, GWLP_USERDATA ); OpenGLWindow *pThis = reinterpret_cast< OpenGLWindow * >( UserData ); assert( pThis ); assert( p_WindowHandle == pThis->m_WindowHandle ); return pThis->WindowProc( p_Message, p_WordParam, p_LongParam ); }
LRESULT CALLBACK OpenGLWindow::InitialWindowProc( HWND p_WindowHandle, UINT p_Message, WPARAM p_WordParam, LPARAM p_LongParam ) { if( p_Message == WM_NCCREATE ) { LPCREATESTRUCT CreateStruct = reinterpret_cast< LPCREATESTRUCT >( p_LongParam ); void *pCreateParam = CreateStruct->lpCreateParams; OpenGLWindow *pThis = reinterpret_cast< OpenGLWindow * >( pCreateParam ); pThis->m_WindowHandle = p_WindowHandle; SetWindowLongPtr( pThis->m_WindowHandle, GWLP_USERDATA, reinterpret_cast< LONG_PTR >( pThis ) ); SetWindowLongPtr( pThis->m_WindowHandle, GWLP_WNDPROC, reinterpret_cast< LONG_PTR >( &OpenGLWindow::StaticWindowProc ) ); return pThis->WindowProc( p_Message, p_WordParam, p_LongParam ); } return DefWindowProc( p_WindowHandle, p_Message, p_WordParam, p_LongParam ); }