static VOID ShowFolderOptionsDialog(HWND hWnd, HINSTANCE hInst) { PROPSHEETHEADERW pinfo; HPROPSHEETPAGE hppages[3]; HPROPSHEETPAGE hpage; UINT num_pages = 0; WCHAR szOptions[100]; hpage = SH_CreatePropertySheetPage(IDD_FOLDER_OPTIONS_GENERAL, FolderOptionsGeneralDlg, 0, NULL); if (hpage) hppages[num_pages++] = hpage; hpage = SH_CreatePropertySheetPage(IDD_FOLDER_OPTIONS_VIEW, FolderOptionsViewDlg, 0, NULL); if (hpage) hppages[num_pages++] = hpage; hpage = SH_CreatePropertySheetPage(IDD_FOLDER_OPTIONS_FILETYPES, FolderOptionsFileTypesDlg, 0, NULL); if (hpage) hppages[num_pages++] = hpage; szOptions[0] = L'\0'; LoadStringW(shell32_hInstance, IDS_FOLDER_OPTIONS, szOptions, sizeof(szOptions) / sizeof(WCHAR)); szOptions[(sizeof(szOptions)/sizeof(WCHAR))-1] = L'\0'; memset(&pinfo, 0x0, sizeof(PROPSHEETHEADERW)); pinfo.dwSize = sizeof(PROPSHEETHEADERW); pinfo.dwFlags = PSH_NOCONTEXTHELP; pinfo.nPages = num_pages; pinfo.phpage = hppages; pinfo.pszCaption = szOptions; PropertySheetW(&pinfo); }
HRESULT WINAPI CFileDefExt::AddPages(LPFNADDPROPSHEETPAGE pfnAddPage, LPARAM lParam) { HPROPSHEETPAGE hPage; WORD wResId = m_bDir ? IDD_FOLDER_PROPERTIES : IDD_FILE_PROPERTIES; hPage = SH_CreatePropertySheetPage(wResId, GeneralPageProc, (LPARAM)this, NULL); if (hPage) pfnAddPage(hPage, lParam); if (!m_bDir && GetFileVersionInfoSizeW(m_wszPath, NULL)) { hPage = SH_CreatePropertySheetPage(IDD_FILE_VERSION, VersionPageProc, (LPARAM)this, NULL); if (hPage) pfnAddPage(hPage, lParam); } return S_OK; }
HRESULT WINAPI CDrvDefExt::AddPages(LPFNADDPROPSHEETPAGE pfnAddPage, LPARAM lParam) { HPROPSHEETPAGE hPage; hPage = SH_CreatePropertySheetPage(IDD_DRIVE_PROPERTIES, GeneralPageProc, (LPARAM)this, NULL); if (hPage) pfnAddPage(hPage, lParam); if (GetDriveTypeW(m_wszDrive) == DRIVE_FIXED) { hPage = SH_CreatePropertySheetPage(IDD_DRIVE_TOOLS, ExtraPageProc, (LPARAM)this, NULL); if (hPage) pfnAddPage(hPage, lParam); } hPage = SH_CreatePropertySheetPage(IDD_DRIVE_HARDWARE, HardwarePageProc, (LPARAM)this, NULL); if (hPage) pfnAddPage(hPage, lParam); return S_OK; }
BOOL SH_ShowDriveProperties(WCHAR * drive, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST * apidl) { HPSXA hpsx = NULL; HPROPSHEETPAGE hpsp[MAX_PROPERTY_SHEET_PAGE]; PROPSHEETHEADERW psh; BOOL ret; UINT i; WCHAR szName[MAX_PATH+6]; DWORD dwMaxComponent, dwFileSysFlags; IDataObject * pDataObj = NULL; UINT DriveType; ZeroMemory(&psh, sizeof(PROPSHEETHEADERW)); psh.dwSize = sizeof(PROPSHEETHEADERW); //psh.dwFlags = PSH_USECALLBACK | PSH_PROPTITLE; psh.hwndParent = NULL; psh.u2.nStartPage = 0; psh.u3.phpage = hpsp; if (GetVolumeInformationW(drive, szName, sizeof(szName)/sizeof(WCHAR), NULL, &dwMaxComponent, &dwFileSysFlags, NULL, 0)) { psh.pszCaption = szName; psh.dwFlags |= PSH_PROPTITLE; if (!wcslen(szName)) { /* FIXME * check if disk is a really a local hdd */ i = LoadStringW(shell32_hInstance, IDS_DRIVE_FIXED, szName, sizeof(szName)/sizeof(WCHAR)-6); if (i > 0 && i < (sizeof(szName)/sizeof(WCHAR)) - 6) { szName[i] = L' '; szName[i+1] = L'('; wcscpy(&szName[i+2], drive); szName[i+4] = L')'; szName[i+5] = L'\0'; } } } DriveType = GetDriveTypeW(drive); for (i = 0; i < DRIVE_PROPERTY_PAGES; i++) { if (PropPages[i].DriveType == (UINT)-1 || (PropPages[i].DriveType != (UINT)-1 && PropPages[i].DriveType == DriveType)) { HPROPSHEETPAGE hprop = SH_CreatePropertySheetPage(PropPages[i].resname, PropPages[i].dlgproc, (LPARAM)drive, NULL); if (hprop) { hpsp[psh.nPages] = hprop; psh.nPages++; } } } if (SHCreateDataObject(pidlFolder, 1, apidl, NULL, &IID_IDataObject, (void**)&pDataObj) == S_OK) { hpsx = SHCreatePropSheetExtArrayEx(HKEY_CLASSES_ROOT, L"Drive", MAX_PROPERTY_SHEET_PAGE-DRIVE_PROPERTY_PAGES, pDataObj); if (hpsx) { SHAddFromPropSheetExtArray(hpsx, (LPFNADDPROPSHEETPAGE)AddPropSheetPageProc, (LPARAM)&psh); } } ret = PropertySheetW(&psh); if (pDataObj) IDataObject_Release(pDataObj); if (hpsx) SHDestroyPropSheetExtArray(hpsx); if (ret < 0) return FALSE; else return TRUE; }