INT_PTR Dialog::StaticDialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { Dialog *dlg; if (uMsg == WM_INITDIALOG) { dlg = (Dialog *) lParam; dlg->_dlgHwnd = hwndDlg; SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR) dlg); } else { dlg = (Dialog *) GetWindowLongPtr(hwndDlg, DWLP_USER); if (!dlg) { return FALSE; } } return dlg->DialogProc(hwndDlg, uMsg, wParam, lParam); }
INT_PTR CALLBACK Dialog::DialogProcStatic(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { Dialog* window = reinterpret_cast<Dialog*>(WindowMap.GetWindow(hwnd)); if (!window && uMsg == WM_INITDIALOG) { window = reinterpret_cast<Dialog*>(lParam); if (window) { window->SetWindowHandle(hwnd); WindowMap.Add(hwnd, window); } } if (window) { return window->DialogProc(hwnd, uMsg, wParam, lParam); } else { return FALSE; } }