Maks150988
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Спасибо. Еще есть вопрос. Как в диалоге Мастера можно переходить на нужную страницу? PSM_SETCURSEL и PSM_SETCURSELID непонятные какие-то... Первой вообще фиг знает что надо подсовывать в качестве идентификатора/номера или одно и тоже, вообще чушь, вторая вообще фиг знает... Код такой: Код: { Ôóíêöèÿ îáðàáîòêè èíèöèàëèçàöèè äèàëîãîâ ìàñòåðà } function InitPropertySheetPage(hWnd : HWND) : Boolean; var PropPage : TPropSheetPage; APropPage : Array [0..2] of HPROPSHEETPAGE; PropHeader : TPropSheetHeader; begin // Ñîçäàåì ñòðàíèöû äëÿ áëîêíîòà APropPage[0] := CreatePropertySheetPage(PropPage); PropPage.dwSize := SizeOf(PropPage); PropPage.dwFlags := PSP_USETITLE or PSP_HIDEHEADER; PropPage.pszTitle := PChar(Format(LoadStr(STR_MASTER_CAPT), [PChar(Format(LoadStr(STR_NAME_APPLIC), [GetVersionInfo(ParamStr(0), sfiFileVersion)]))])); PropPage.hInstance := hInstance; PropPage.pfnDlgProc := @IntrDlgProc; PropPage.pszTemplate := MAKEINTRESOURCE(RES_DIALOGIN); // Èíèöèàëèçàöèÿ ïåðâîé ñòðàíèöû APropPage[1] := CreatePropertySheetPage(PropPage); PropPage.dwFlags := PSP_USETITLE or PSP_USEHEADERTITLE or PSP_USEHEADERSUBTITLE; PropPage.pszTitle := PChar(Format(LoadStr(STR_MASTER_CAPT), [PChar(Format(LoadStr(STR_NAME_APPLIC), [GetVersionInfo(ParamStr(0), sfiFileVersion)]))])); PropPage.pszHeaderTitle := MAKEINTRESOURCE('Ïåðâàÿ ñòðàíèöà'); PropPage.pszHeaderSubTitle := MAKEINTRESOURCE('Ïåðâàÿ ñòðàíèöà'); PropPage.pszTemplate := MAKEINTRESOURCE(RES_DIALOGSR); PropPage.pfnDlgProc := @SvrtDlgProc; // Èíèöèàëèçàöèÿ âòîðîé ñòðàíèöû APropPage[2] := CreatePropertySheetPage(PropPage); PropPage.dwFlags := PSP_USETITLE or PSP_USEHEADERTITLE or PSP_USEHEADERSUBTITLE; PropPage.pszTitle := PChar(Format(LoadStr(STR_MASTER_CAPT), [PChar(Format(LoadStr(STR_NAME_APPLIC), [GetVersionInfo(ParamStr(0), sfiFileVersion)]))])); PropPage.pszHeaderTitle := MAKEINTRESOURCE('2 ñòðàíèöà'); PropPage.pszHeaderSubTitle := MAKEINTRESOURCE('2 ñòðàíèöà'); PropPage.pszTemplate := MAKEINTRESOURCE(RES_DIALOGLR); PropPage.pfnDlgProc := @LdrtDlgProc; // Ñîçäàåì çàãîòîâêó äëÿ ñòèëÿ ïîìîùíèêà hHeadFont := CreateFont(18, 0, 0, 0, 800, 0, 0, 0, RUSSIAN_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH, 'Tahoma'); ZeroMemory(@PropHeader, SizeOf(PropHeader)); PropHeader.dwSize := SizeOf(PropHeader); PropHeader.hInstance := hInstance; PropHeader.hwndParent := hWnd; PropHeader.phpage := @APropPage[0]; PropHeader.nStartPage := 0; PropHeader.nPages := Length(APropPage); PropHeader.pszbmWatermark := MAKEINTRESOURCE(IDB_WTMKHEAD); PropHeader.pszbmHeader := MAKEINTRESOURCE(IDB_BTMPHEAD); PropHeader.dwFlags := PSH_WIZARD97 or PSH_WATERMARK or PSH_HEADER or PSH_USEICONID; PropHeader.pszIcon := MAKEINTRESOURCE(RES_ICONTOOL); PropHeader.pfnCallback := nil; // Îòîáðàæàåì ñòðàíèöó ïîìîùíèêà PropertySheet(PropHeader); // Óäàëÿåì âñå ñîçäàííûå îáúåêòû if hHeadFont <> 0 then DeleteObject(hHeadFont); Result := TRUE; end; | Сообщение PSN_KILLACTIVE обрабатываю так: Код: if SendMessage(GetDlgItem(hWnd, IDC_CHX_MSSR), BM_GETCHECK, 0, 0) = BST_CHECKED then SendMessage(GetParent(hWnd), PSM_SETCURSELID, 0, Integer(1)); if SendMessage(GetDlgItem(hWnd, IDC_CHX_MSLR), BM_GETCHECK, 0, 0) = BST_CHECKED then SendMessage(GetParent(hWnd), PSM_SETCURSELID, 0, Integer(2)); | Но переход всегда выполняется на первую вместо второй если я выбираю второй чекбокс. Что не так? |