static void ShowSettingsDialog() { PROPSHEETPAGE psp[3]; int page_number = 0; /* Proxy tab */ if (o.allow_proxy[0] == '1' && o.service_only[0] == '0') { psp[page_number].dwSize = sizeof(PROPSHEETPAGE); psp[page_number].dwFlags = PSP_DLGINDIRECT; psp[page_number].hInstance = o.hInstance; psp[page_number].pResource = LocalizedDialogResource(ID_DLG_PROXY); psp[page_number].pfnDlgProc = ProxySettingsDialogFunc; psp[page_number].lParam = 0; psp[page_number].pfnCallback = NULL; ++page_number; } /* General tab */ psp[page_number].dwSize = sizeof(PROPSHEETPAGE); psp[page_number].dwFlags = PSP_DLGINDIRECT; psp[page_number].hInstance = o.hInstance; psp[page_number].pResource = LocalizedDialogResource(ID_DLG_GENERAL); psp[page_number].pfnDlgProc = LanguageSettingsDlgProc; psp[page_number].lParam = 0; psp[page_number].pfnCallback = NULL; ++page_number; /* About tab */ psp[page_number].dwSize = sizeof(PROPSHEETPAGE); psp[page_number].dwFlags = PSP_DLGINDIRECT; psp[page_number].hInstance = o.hInstance; psp[page_number].pResource = LocalizedDialogResource(ID_DLG_ABOUT); psp[page_number].pfnDlgProc = AboutDialogFunc; psp[page_number].lParam = 0; psp[page_number].pfnCallback = NULL; ++page_number; PROPSHEETHEADER psh; psh.dwSize = sizeof(PROPSHEETHEADER); psh.dwFlags = PSH_USEHICON | PSH_PROPSHEETPAGE | PSH_NOAPPLYNOW | PSH_NOCONTEXTHELP; psh.hwndParent = o.hWnd; psh.hInstance = o.hInstance; psh.hIcon = LoadLocalizedIcon(ID_ICO_APP); psh.pszCaption = LoadLocalizedString(IDS_SETTINGS_CAPTION); psh.nPages = page_number; psh.nStartPage = 0; psh.ppsp = (LPCPROPSHEETPAGE) &psp; psh.pfnCallback = NULL; PropertySheet(&psh); }
INT_PTR LocalizedDialogBoxParam(const UINT dialogId, DLGPROC dialogFunc, const LPARAM param) { LPCDLGTEMPLATE resInfo = LocalizedDialogResource(dialogId); if (resInfo == NULL) return -1; return DialogBoxIndirectParam(o.hInstance, resInfo, NULL, dialogFunc, param); }