LRESULT BaseWindow::s_WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { BaseWindow* phost = (BaseWindow*)GetProp(hwnd, (LPTSTR)s_atomThisProperty); bool fHandled = false; LRESULT lres = 0; if (uMsg == WM_CREATE) { CREATESTRUCT* pcs = (CREATESTRUCT*)lParam; phost = (BaseWindow*)pcs->lpCreateParams; SetProp(hwnd, (LPTSTR)s_atomThisProperty, (HANDLE)phost); } if (phost) { fHandled = phost->WndProc(uMsg, wParam, lParam, &lres); } if (fHandled == false) lres = DefWindowProc(hwnd, uMsg, wParam, lParam); return lres; }