INT_PTR CALLBACK Dialog::DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { Dialog * dlg = NULL; switch (uMsg) { case WM_INITDIALOG: dlg = (Dialog*)lParam; if (!dlg) return FALSE; dlg->m_hwnd = hwnd; ::SetWindowLongPtr(hwnd, GWLP_USERDATA, reinterpret_cast<LONG_PTR>(dlg)); return dlg->OnInitDialog(); default : dlg = (Dialog*)::GetWindowLongPtr(hwnd, GWLP_USERDATA); if (!dlg) return FALSE; return dlg->DlgMsgProc(uMsg, wParam, lParam); } return FALSE; }