reactos/base/applications/mscutils/servman/propsheet.c

70 lines
2.2 KiB
C
Raw Normal View History

/*
* PROJECT: ReactOS Services
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base/applications/mscutils/servman/propsheet.c
* PURPOSE: Property dialog box message handler
* COPYRIGHT: Copyright 2006-2007 Ged Murphy <gedmurphy@reactos.org>
*
*/
#include "precomp.h"
static VOID
InitPropSheetPage(PROPSHEETPAGE *psp,
PSERVICEPROPSHEET dlgInfo,
WORD idDlg,
DLGPROC DlgProc)
{
ZeroMemory(psp, sizeof(PROPSHEETPAGE));
psp->dwSize = sizeof(PROPSHEETPAGE);
psp->dwFlags = PSP_DEFAULT;
psp->hInstance = hInstance;
psp->pszTemplate = MAKEINTRESOURCE(idDlg);
psp->pfnDlgProc = DlgProc;
psp->lParam = (LPARAM)dlgInfo;
}
LONG APIENTRY
OpenPropSheet(PMAIN_WND_INFO Info)
{
PROPSHEETHEADER psh;
PROPSHEETPAGE psp[4];
PSERVICEPROPSHEET pServicePropSheet;
LONG Ret = 0;
ZeroMemory(&psh, sizeof(PROPSHEETHEADER));
psh.dwSize = sizeof(PROPSHEETHEADER);
psh.dwFlags = PSH_PROPSHEETPAGE | PSH_PROPTITLE | PSH_USECALLBACK;// | PSH_MODELESS;
psh.hwndParent = Info->hMainWnd;
psh.hInstance = hInstance;
psh.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_SM_ICON));
psh.pszCaption = Info->pCurrentService->lpDisplayName;
psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);
psh.nStartPage = 0;
psh.ppsp = psp;
pServicePropSheet = HeapAlloc(ProcessHeap,
0,
sizeof(*pServicePropSheet));
if (pServicePropSheet)
{
/* Save current service, as it could change while the dialog is open */
pServicePropSheet->pService = Info->pCurrentService;
pServicePropSheet->Info = Info;
InitPropSheetPage(&psp[0], pServicePropSheet, IDD_DLG_GENERAL, GeneralPageProc);
InitPropSheetPage(&psp[1], pServicePropSheet, IDD_LOGON, LogonPageProc);
InitPropSheetPage(&psp[2], pServicePropSheet, IDD_RECOVERY, RecoveryPageProc);
InitPropSheetPage(&psp[3], pServicePropSheet, IDD_DLG_DEPEND, DependenciesPageProc);
Ret = (LONG)(PropertySheet(&psh) != -1);
HeapFree(ProcessHeap,
0,
pServicePropSheet);
}
return Ret;
}