diff --git a/dlls/comctl32/propsheet.c b/dlls/comctl32/propsheet.c index a496febb9a0..720d3cf3293 100644 --- a/dlls/comctl32/propsheet.c +++ b/dlls/comctl32/propsheet.c @@ -138,6 +138,7 @@ static BOOL PROPSHEET_SetCurSel(HWND hwndDlg, int index, int skipdir, HPROPSHEETPAGE hpage); +static void PROPSHEET_SetCurSelId(HWND hwndDlg, int id); static LRESULT PROPSHEET_QuerySiblings(HWND hwndDlg, WPARAM wParam, LPARAM lParam); static BOOL PROPSHEET_AddPage(HWND hwndDlg, @@ -1807,6 +1808,25 @@ static BOOL PROPSHEET_SetCurSel(HWND hwndDlg, return TRUE; } +/****************************************************************************** + * PROPSHEET_SetCurSelId + * + * Selects the page, specified by resource id. + */ +static void PROPSHEET_SetCurSelId(HWND hwndDlg, int id) +{ + int idx; + PropSheetInfo* psInfo = + (PropSheetInfo*) GetPropW(hwndDlg, PropSheetInfoStr); + + idx = PROPSHEET_FindPageByResId(psInfo, id); + if (idx < psInfo->nPages ) + { + if (PROPSHEET_CanSetCurSel(hwndDlg) != FALSE) + PROPSHEET_SetCurSel(hwndDlg, idx, 1, 0); + } +} + /****************************************************************************** * PROPSHEET_SetTitleA */ @@ -2786,8 +2806,8 @@ PROPSHEET_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) return TRUE; case PSM_SETCURSELID: - FIXME("Unimplemented msg PSM_SETCURSELID\n"); - return FALSE; + PROPSHEET_SetCurSelId(hwnd, (int)lParam); + return TRUE; case PSM_SETFINISHTEXTW: PROPSHEET_SetFinishTextW(hwnd, (LPCWSTR) lParam);