- Fix indentation.

- Fix bug #3920 (at line 736).

svn path=/trunk/; revision=38455
This commit is contained in:
Dmitry Gorbachev 2008-12-29 11:50:09 +00:00
parent ed14235592
commit 5341c63e40

View file

@ -25,12 +25,13 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell);
#define MAX_PROPERTY_SHEET_PAGE 32 #define MAX_PROPERTY_SHEET_PAGE 32
typedef struct _LANGANDCODEPAGE_ typedef struct _LANGANDCODEPAGE_
{ {
WORD lang; WORD lang;
WORD code; WORD code;
} LANGANDCODEPAGE, *LPLANGANDCODEPAGE; } LANGANDCODEPAGE, *LPLANGANDCODEPAGE;
HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY hKey, LPCWSTR pszSubKey, UINT max_iface, IDataObject *pDataObj); HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY hKey, LPCWSTR pszSubKey, UINT max_iface, IDataObject *pDataObj);
/************************************************************************* /*************************************************************************
* *
* SH_CreatePropertySheetPage [Internal] * SH_CreatePropertySheetPage [Internal]
@ -38,6 +39,7 @@ HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY hKey, LPCWSTR pszSubKey, UINT max_
* creates a property sheet page from an resource name * creates a property sheet page from an resource name
* *
*/ */
HPROPSHEETPAGE HPROPSHEETPAGE
SH_CreatePropertySheetPage(LPSTR resname, DLGPROC dlgproc, LPARAM lParam, LPWSTR szTitle) SH_CreatePropertySheetPage(LPSTR resname, DLGPROC dlgproc, LPARAM lParam, LPWSTR szTitle)
{ {
@ -55,7 +57,9 @@ SH_CreatePropertySheetPage(LPSTR resname, DLGPROC dlgproc, LPARAM lParam, LPWSTR
ERR("failed to find resource name\n"); ERR("failed to find resource name\n");
return (HPROPSHEETPAGE)0; return (HPROPSHEETPAGE)0;
} }
lpsztemplate = LoadResource(shell32_hInstance, hRes); lpsztemplate = LoadResource(shell32_hInstance, hRes);
if (lpsztemplate == NULL) if (lpsztemplate == NULL)
return (HPROPSHEETPAGE)0; return (HPROPSHEETPAGE)0;
@ -66,19 +70,15 @@ SH_CreatePropertySheetPage(LPSTR resname, DLGPROC dlgproc, LPARAM lParam, LPWSTR
ppage.pfnDlgProc = dlgproc; ppage.pfnDlgProc = dlgproc;
ppage.lParam = lParam; ppage.lParam = lParam;
ppage.pszTitle = szTitle; ppage.pszTitle = szTitle;
if (szTitle) if (szTitle)
{ {
ppage.dwFlags |= PSP_USETITLE; ppage.dwFlags |= PSP_USETITLE;
} }
return CreatePropertySheetPageW(&ppage); return CreatePropertySheetPageW(&ppage);
} }
/************************************************************************* /*************************************************************************
* *
* SH_FileGeneralFileType [Internal] * SH_FileGeneralFileType [Internal]
@ -90,67 +90,72 @@ SH_CreatePropertySheetPage(LPSTR resname, DLGPROC dlgproc, LPARAM lParam, LPWSTR
*/ */
BOOL BOOL
SH_FileGeneralSetFileType(HWND hwndDlg, WCHAR * filext) SH_FileGeneralSetFileType(HWND hwndDlg, WCHAR *filext)
{ {
WCHAR name[MAX_PATH]; WCHAR name[MAX_PATH];
WCHAR value[MAX_PATH]; WCHAR value[MAX_PATH];
DWORD lname = MAX_PATH; DWORD lname = MAX_PATH;
DWORD lvalue = MAX_PATH; DWORD lvalue = MAX_PATH;
HKEY hKey;
LONG result;
HWND hDlgCtrl;
HKEY hKey; TRACE("fileext %s\n", debugstr_w(filext));
LONG result;
HWND hDlgCtrl;
TRACE("fileext %s\n", debugstr_w(filext)); if (filext == NULL)
return FALSE;
if (filext == NULL) hDlgCtrl = GetDlgItem(hwndDlg, 14005);
return FALSE;
hDlgCtrl = GetDlgItem(hwndDlg, 14005); if (hDlgCtrl == NULL)
return FALSE;
if (hDlgCtrl == NULL) if (RegOpenKeyW(HKEY_CLASSES_ROOT, filext, &hKey) != ERROR_SUCCESS)
return FALSE; {
/* the file extension is unknown, so default to string "FileExtension File" */
SendMessageW(hDlgCtrl, WM_GETTEXT, (WPARAM)MAX_PATH, (LPARAM)value);
swprintf(name, value, &filext[1]);
SendMessageW(hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)name);
return TRUE;
}
if (RegOpenKeyW(HKEY_CLASSES_ROOT, filext, &hKey) != ERROR_SUCCESS) result = RegEnumValueW(hKey, 0, name, &lname, NULL, NULL, (LPBYTE)value, &lvalue);
{ RegCloseKey(hKey);
/* the fileextension is unknown, so default to string "FileExtension File" */
SendMessageW(hDlgCtrl, WM_GETTEXT, (WPARAM)MAX_PATH, (LPARAM)value);
swprintf(name, value, &filext[1]);
SendMessageW(hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)name);
return TRUE;
}
result = RegEnumValueW(hKey, 0, name, &lname, NULL, NULL, (LPBYTE)value, &lvalue);
RegCloseKey(hKey);
if (result != ERROR_SUCCESS) if (result != ERROR_SUCCESS)
return FALSE; return FALSE;
if (RegOpenKeyW(HKEY_CLASSES_ROOT, value, &hKey) == ERROR_SUCCESS) if (RegOpenKeyW(HKEY_CLASSES_ROOT, value, &hKey) == ERROR_SUCCESS)
{ {
if (RegLoadMUIStringW(hKey, L"FriendlyTypeName", value, MAX_PATH, NULL, 0, NULL) != ERROR_SUCCESS) if (RegLoadMUIStringW(hKey, L"FriendlyTypeName", value, MAX_PATH, NULL, 0, NULL) != ERROR_SUCCESS)
{ {
lvalue = lname = MAX_PATH; lvalue = lname = MAX_PATH;
result = RegEnumValueW(hKey,0, name, &lname, NULL, NULL, (LPBYTE)value, &lvalue); result = RegEnumValueW(hKey, 0, name, &lname, NULL, NULL, (LPBYTE)value, &lvalue);
} }
lname = MAX_PATH; lname = MAX_PATH;
if (RegGetValueW(hKey, L"DefaultIcon", NULL, RRF_RT_REG_SZ, NULL, name, &lname) == ERROR_SUCCESS) if (RegGetValueW(hKey, L"DefaultIcon", NULL, RRF_RT_REG_SZ, NULL, name, &lname) == ERROR_SUCCESS)
{ {
UINT IconIndex; UINT IconIndex;
WCHAR szBuffer[MAX_PATH]; WCHAR szBuffer[MAX_PATH];
WCHAR * Offset; WCHAR *Offset;
HICON hIcon = 0; HICON hIcon = 0;
HRSRC hResource; HRSRC hResource;
LPVOID pResource = NULL; LPVOID pResource = NULL;
HGLOBAL hGlobal; HGLOBAL hGlobal;
HANDLE hLibrary; HANDLE hLibrary;
Offset = wcsrchr(name, L','); Offset = wcsrchr(name, L',');
if (Offset) if (Offset)
{ {
IconIndex = _wtoi(Offset + 2); IconIndex = _wtoi(Offset + 2);
*Offset = L'\0'; *Offset = L'\0';
name[MAX_PATH-1] = L'\0'; name[MAX_PATH - 1] = L'\0';
if (ExpandEnvironmentStringsW(name, szBuffer, MAX_PATH)) if (ExpandEnvironmentStringsW(name, szBuffer, MAX_PATH))
{ {
szBuffer[MAX_PATH-1] = L'\0'; szBuffer[MAX_PATH - 1] = L'\0';
hLibrary = LoadLibraryExW(szBuffer, NULL, LOAD_LIBRARY_AS_DATAFILE); hLibrary = LoadLibraryExW(szBuffer, NULL, LOAD_LIBRARY_AS_DATAFILE);
if (hLibrary) if (hLibrary)
{ {
@ -164,7 +169,13 @@ SH_FileGeneralSetFileType(HWND hwndDlg, WCHAR * filext)
if (pResource != NULL) if (pResource != NULL)
{ {
hIcon = CreateIconFromResource(pResource, SizeofResource(shell32_hInstance, hResource), TRUE, 0x00030000); hIcon = CreateIconFromResource(pResource, SizeofResource(shell32_hInstance, hResource), TRUE, 0x00030000);
TRACE("hIcon %p,- szBuffer %s IconIndex %u error %u icon %p hResource %p pResource %p\n", hIcon, debugstr_w(szBuffer), IconIndex, MAKEINTRESOURCEW(IconIndex), hResource, pResource); TRACE("hIcon %p,- szBuffer %s IconIndex %u error %u icon %p hResource %p pResource %p\n",
hIcon,
debugstr_w(szBuffer),
IconIndex,
MAKEINTRESOURCEW(IconIndex),
hResource,
pResource);
SendDlgItemMessageW(hwndDlg, 14000, STM_SETICON, (WPARAM)hIcon, 0); SendDlgItemMessageW(hwndDlg, 14000, STM_SETICON, (WPARAM)hIcon, 0);
} }
} }
@ -178,10 +189,12 @@ SH_FileGeneralSetFileType(HWND hwndDlg, WCHAR * filext)
} }
/* file extension type */ /* file extension type */
value[MAX_PATH-1] = L'\0'; value[MAX_PATH - 1] = L'\0';
SendMessageW(hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)value); SendMessageW(hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)value);
return TRUE; return TRUE;
} }
/************************************************************************* /*************************************************************************
* *
* SHFileGeneralGetFileTimeString [Internal] * SHFileGeneralGetFileTimeString [Internal]
@ -190,12 +203,14 @@ SH_FileGeneralSetFileType(HWND hwndDlg, WCHAR * filext)
*/ */
BOOL BOOL
SHFileGeneralGetFileTimeString(LPFILETIME lpFileTime, WCHAR * lpResult) SHFileGeneralGetFileTimeString(LPFILETIME lpFileTime, WCHAR *lpResult)
{ {
FILETIME ft; FILETIME ft;
SYSTEMTIME dt; SYSTEMTIME dt;
WORD wYear; WORD wYear;
static const WCHAR wFormat[] = {'%','0','2','d','/','%','0','2','d','/','%','0','4','d',' ',' ','%','0','2','d',':','%','0','2','u',0}; static const WCHAR wFormat[] = {
'%', '0', '2', 'd', '/', '%', '0', '2', 'd', '/', '%', '0', '4', 'd',
' ', ' ', '%', '0', '2', 'd', ':', '%', '0', '2', 'u', 0 };
if (lpFileTime == NULL || lpResult == NULL) if (lpFileTime == NULL || lpResult == NULL)
return FALSE; return FALSE;
@ -206,10 +221,11 @@ SHFileGeneralGetFileTimeString(LPFILETIME lpFileTime, WCHAR * lpResult)
FileTimeToSystemTime(&ft, &dt); FileTimeToSystemTime(&ft, &dt);
wYear = dt.wYear; wYear = dt.wYear;
/* ddmmyy */
swprintf (lpResult, wFormat, dt.wDay, dt.wMonth, wYear, dt.wHour, dt.wMinute);
TRACE("result %s\n",debugstr_w(lpResult)); /* ddmmyy */
swprintf(lpResult, wFormat, dt.wDay, dt.wMonth, wYear, dt.wHour, dt.wMinute);
TRACE("result %s\n", debugstr_w(lpResult));
return TRUE; return TRUE;
} }
@ -222,18 +238,18 @@ SHFileGeneralGetFileTimeString(LPFILETIME lpFileTime, WCHAR * lpResult)
*/ */
BOOL BOOL
SH_FileGeneralSetText(HWND hwndDlg, WCHAR * lpstr) SH_FileGeneralSetText(HWND hwndDlg, WCHAR *lpstr)
{ {
int flength; int flength;
int plength; int plength;
WCHAR * lpdir; WCHAR *lpdir;
WCHAR buff[MAX_PATH]; WCHAR buff[MAX_PATH];
HWND hDlgCtrl; HWND hDlgCtrl;
if (lpstr == NULL) if (lpstr == NULL)
return FALSE; return FALSE;
lpdir = wcschr(lpstr, '\\'); /* find the last occurence of '\\' */ lpdir = wcschr(lpstr, '\\'); /* find the last occurence of '\\' */
plength = wcslen(lpstr); plength = wcslen(lpstr);
flength = wcslen(lpdir); flength = wcslen(lpdir);
@ -247,12 +263,12 @@ SH_FileGeneralSetText(HWND hwndDlg, WCHAR * lpstr)
SendMessageW(hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)buff); SendMessageW(hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)buff);
} }
if(flength > 1) if (flength > 1)
{ {
/* text filename field */ /* text filename field */
wcsncpy(buff, &lpdir[1], flength); wcsncpy(buff, &lpdir[1], flength);
hDlgCtrl = GetDlgItem(hwndDlg, 14001); hDlgCtrl = GetDlgItem(hwndDlg, 14001);
SendMessageW(hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)buff); SendMessageW(hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)buff);
} }
return TRUE; return TRUE;
@ -267,7 +283,7 @@ SH_FileGeneralSetText(HWND hwndDlg, WCHAR * lpstr)
*/ */
BOOL BOOL
SH_FileGeneralSetFileSizeTime(HWND hwndDlg, WCHAR * lpfilename, PULARGE_INTEGER lpfilesize) SH_FileGeneralSetFileSizeTime(HWND hwndDlg, WCHAR *lpfilename, PULARGE_INTEGER lpfilesize)
{ {
BOOL result; BOOL result;
HANDLE hFile; HANDLE hFile;
@ -283,7 +299,8 @@ SH_FileGeneralSetFileSizeTime(HWND hwndDlg, WCHAR * lpfilename, PULARGE_INTEGER
hFile = CreateFileW(lpfilename, hFile = CreateFileW(lpfilename,
GENERIC_READ, GENERIC_READ,
FILE_SHARE_READ,NULL, FILE_SHARE_READ,
NULL,
OPEN_EXISTING, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, FILE_ATTRIBUTE_NORMAL,
NULL); NULL);
@ -301,7 +318,8 @@ SH_FileGeneralSetFileSizeTime(HWND hwndDlg, WCHAR * lpfilename, PULARGE_INTEGER
WARN("GetFileTime failed\n"); WARN("GetFileTime failed\n");
return FALSE; return FALSE;
} }
if (SHFileGeneralGetFileTimeString(&create_time,resultstr))
if (SHFileGeneralGetFileTimeString(&create_time, resultstr))
{ {
hDlgCtrl = GetDlgItem(hwndDlg, 14015); hDlgCtrl = GetDlgItem(hwndDlg, 14015);
SendMessageW(hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)resultstr); SendMessageW(hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)resultstr);
@ -325,15 +343,21 @@ SH_FileGeneralSetFileSizeTime(HWND hwndDlg, WCHAR * lpfilename, PULARGE_INTEGER
CloseHandle(hFile); CloseHandle(hFile);
return FALSE; return FALSE;
} }
CloseHandle(hFile); CloseHandle(hFile);
if (!StrFormatByteSizeW(file_size.QuadPart, resultstr, sizeof(resultstr) / sizeof(WCHAR)))
return FALSE; if (!StrFormatByteSizeW(file_size.QuadPart,
resultstr,
sizeof(resultstr) / sizeof(WCHAR)))
return FALSE;
hDlgCtrl = GetDlgItem(hwndDlg, 14011); hDlgCtrl = GetDlgItem(hwndDlg, 14011);
TRACE("result size %u resultstr %s\n", file_size.QuadPart, debugstr_w(resultstr)); TRACE("result size %u resultstr %s\n", file_size.QuadPart, debugstr_w(resultstr));
SendMessageW(hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)resultstr); SendMessageW(hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)resultstr);
if (lpfilesize) if (lpfilesize)
lpfilesize->QuadPart = (ULONGLONG)file_size.QuadPart; lpfilesize->QuadPart = (ULONGLONG)file_size.QuadPart;
return TRUE; return TRUE;
} }
@ -346,23 +370,24 @@ SH_FileGeneralSetFileSizeTime(HWND hwndDlg, WCHAR * lpfilename, PULARGE_INTEGER
*/ */
BOOL BOOL
SH_FileVersionQuerySetText(HWND hwndDlg, DWORD dlgId, LPVOID pInfo, WCHAR * text, WCHAR ** resptr) SH_FileVersionQuerySetText(HWND hwndDlg, DWORD dlgId, LPVOID pInfo, WCHAR *text, WCHAR **resptr)
{ {
UINT reslen; UINT reslen;
HWND hDlgCtrl; HWND hDlgCtrl;
if(hwndDlg == NULL || resptr == NULL || text == NULL) if (hwndDlg == NULL || resptr == NULL || text == NULL)
return FALSE; return FALSE;
if(VerQueryValueW(pInfo, text, (LPVOID *)resptr, &reslen)) if (VerQueryValueW(pInfo, text, (LPVOID *)resptr, &reslen))
{ {
/* file description property */ /* file description property */
hDlgCtrl = GetDlgItem(hwndDlg, dlgId); hDlgCtrl = GetDlgItem(hwndDlg, dlgId);
TRACE("%s :: %s\n",debugstr_w(text), debugstr_w(*resptr)); TRACE("%s :: %s\n", debugstr_w(text), debugstr_w(*resptr));
SendMessageW(hDlgCtrl, WM_SETTEXT, (WPARAM)0, (LPARAM)*resptr); SendMessageW(hDlgCtrl, WM_SETTEXT, (WPARAM)0, (LPARAM)*resptr);
return TRUE; return TRUE;
} }
return FALSE;
return FALSE;
} }
/************************************************************************* /*************************************************************************
@ -373,33 +398,35 @@ SH_FileVersionQuerySetText(HWND hwndDlg, DWORD dlgId, LPVOID pInfo, WCHAR * text
* *
*/ */
BOOL BOOL
SH_FileVersionQuerySetListText(HWND hwndDlg, LPVOID pInfo, const WCHAR * text, WCHAR **resptr, WORD lang, WORD code) SH_FileVersionQuerySetListText(HWND hwndDlg, LPVOID pInfo, const WCHAR *text, WCHAR **resptr, WORD lang, WORD code)
{ {
UINT reslen; UINT reslen;
HWND hDlgCtrl; HWND hDlgCtrl;
UINT index; UINT index;
static const WCHAR wFormat[] = { '\\','S','t','r','i','n','g','F','i','l','e','I','n', static const WCHAR wFormat[] = {
'f','o','\\','%','0','4','x','%','0','4','x','\\','%','s',0 }; '\\', 'S', 't', 'r', 'i', 'n', 'g', 'F', 'i', 'l', 'e', 'I', 'n', 'f', 'o',
WCHAR buff[256]; '\\', '%', '0', '4', 'x', '%', '0', '4', 'x', '\\', '%', 's', 0 };
WCHAR buff[256];
TRACE("text %s, resptr %p hwndDlg %p\n",debugstr_w(text), resptr, hwndDlg); TRACE("text %s, resptr %p hwndDlg %p\n", debugstr_w(text), resptr, hwndDlg);
if(hwndDlg == NULL || resptr == NULL || text == NULL) if (hwndDlg == NULL || resptr == NULL || text == NULL)
return FALSE; return FALSE;
swprintf(buff, wFormat, lang, code, text); swprintf(buff, wFormat, lang, code, text);
if(VerQueryValueW(pInfo, buff, (LPVOID *)resptr, &reslen))
{ if (VerQueryValueW(pInfo, buff, (LPVOID *)resptr, &reslen))
/* listbox name property */ {
hDlgCtrl = GetDlgItem(hwndDlg, 14009); /* listbox name property */
TRACE("%s :: %s\n",debugstr_w(text), debugstr_w(*resptr)); hDlgCtrl = GetDlgItem(hwndDlg, 14009);
index = SendMessageW(hDlgCtrl, LB_ADDSTRING, (WPARAM)-1, (LPARAM)text); TRACE("%s :: %s\n", debugstr_w(text), debugstr_w(*resptr));
SendMessageW(hDlgCtrl, LB_SETITEMDATA, (WPARAM)index, (LPARAM)(WCHAR*)*resptr); index = SendMessageW(hDlgCtrl, LB_ADDSTRING, (WPARAM)-1, (LPARAM)text);
return TRUE; SendMessageW(hDlgCtrl, LB_SETITEMDATA, (WPARAM)index, (LPARAM)(WCHAR *)*resptr);
} return TRUE;
return FALSE; }
return FALSE;
} }
/************************************************************************* /*************************************************************************
@ -408,102 +435,117 @@ SH_FileVersionQuerySetListText(HWND hwndDlg, LPVOID pInfo, const WCHAR * text, W
* *
* sets all file version properties in dialog * sets all file version properties in dialog
*/ */
BOOL BOOL
SH_FileVersionInitialize(HWND hwndDlg, WCHAR * lpfilename) SH_FileVersionInitialize(HWND hwndDlg, WCHAR *lpfilename)
{ {
LPVOID pBuf; LPVOID pBuf;
DWORD versize; DWORD versize;
DWORD handle; DWORD handle;
LPVOID info = NULL; LPVOID info = NULL;
UINT infolen; UINT infolen;
WCHAR buff[256]; WCHAR buff[256];
HWND hDlgCtrl; HWND hDlgCtrl;
WORD lang = 0; WORD lang = 0;
WORD code = 0; WORD code = 0;
LPLANGANDCODEPAGE lplangcode; LPLANGANDCODEPAGE lplangcode;
WCHAR * str; WCHAR *str;
static const WCHAR wVersionFormat[] = { '%','d','.','%','d','.','%','d','.','%','d',0 }; static const WCHAR wVersionFormat[] = {
static const WCHAR wFileDescriptionFormat[] = { '\\','S','t','r','i','n','g','F','i','l','e','I','n','f','o', '%', 'd', '.', '%', 'd', '.', '%', 'd', '.', '%', 'd', 0 };
'\\','%','0','4','x','%','0','4','x','\\','F','i','l','e','D','e','s','c','r','i','p','t','i','o','n',0 }; static const WCHAR wFileDescriptionFormat[] = {
static const WCHAR wLegalCopyrightFormat[] = { '\\','S','t','r','i','n','g','F','i','l','e','I','n','f','o', '\\', 'S', 't', 'r', 'i', 'n', 'g', 'F', 'i', 'l', 'e', 'I', 'n', 'f', 'o',
'\\','%','0','4','x','%','0','4','x','\\','L','e','g','a','l','C','o','p','y','r','i','g','h','t',0 }; '\\', '%', '0', '4', 'x', '%', '0', '4', 'x',
static const WCHAR wTranslation[] = { 'V','a','r','F','i','l','e','I','n','f','o','\\','T','r','a','n','s','l','a','t','i','o','n',0 }; '\\', 'F', 'i', 'l', 'e', 'D', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', 0 };
static const WCHAR wCompanyName[] = { 'C','o','m','p','a','n','y','N','a','m','e',0 }; static const WCHAR wLegalCopyrightFormat[] = {
static const WCHAR wFileVersion[] = { 'F','i','l','e','V','e','r','s','i','o','n',0 }; '\\', 'S', 't', 'r', 'i', 'n', 'g', 'F', 'i', 'l', 'e', 'I', 'n', 'f', 'o',
static const WCHAR wInternalName[] = { 'I','n','t','e','r','n','a','l','N','a','m','e',0 }; '\\', '%', '0', '4', 'x', '%', '0', '4', 'x',
static const WCHAR wOriginalFilename[] = { 'O','r','i','g','i','n','a','l','F','i','l','e','n','a','m','e',0 }; '\\', 'L', 'e', 'g', 'a', 'l', 'C', 'o', 'p', 'y', 'r', 'i', 'g', 'h', 't', 0 };
static const WCHAR wProductName[] = { 'P','r','o','d','u','c','t','N','a','m','e',0 }; static const WCHAR wTranslation[] = {
static const WCHAR wProductVersion[] = { 'P','r','o','d','u','c','t','V','e','r','s','i','o','n',0 }; 'V', 'a', 'r', 'F', 'i', 'l', 'e', 'I', 'n', 'f', 'o',
static const WCHAR wSlash[] = { '\\',0 }; '\\', 'T', 'r', 'a', 'n', 's', 'l', 'a', 't', 'i', 'o', 'n', 0 };
static const WCHAR wCompanyName[] = {
'C', 'o', 'm', 'p', 'a', 'n', 'y', 'N', 'a', 'm', 'e', 0 };
static const WCHAR wFileVersion[] = {
'F', 'i', 'l', 'e', 'V', 'e', 'r', 's', 'i', 'o', 'n', 0 };
static const WCHAR wInternalName[] = {
'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'N', 'a', 'm', 'e', 0 };
static const WCHAR wOriginalFilename[] = {
'O', 'r', 'i', 'g', 'i', 'n', 'a', 'l', 'F', 'i', 'l', 'e', 'n', 'a', 'm', 'e', 0 };
static const WCHAR wProductName[] = {
'P', 'r', 'o', 'd', 'u', 'c', 't', 'N', 'a', 'm', 'e', 0 };
static const WCHAR wProductVersion[] = {
'P', 'r', 'o', 'd', 'u', 'c', 't', 'V', 'e', 'r', 's', 'i', 'o', 'n', 0 };
static const WCHAR wSlash[] = { '\\', 0 };
if (lpfilename == 0)
return FALSE;
if(lpfilename == 0) if (!(versize = GetFileVersionInfoSizeW(lpfilename, &handle)))
return FALSE; {
WARN("GetFileVersionInfoSize failed\n");
return FALSE;
}
if(!(versize = GetFileVersionInfoSizeW(lpfilename, &handle))) if (!(pBuf = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, versize)))
{ {
WARN("GetFileVersionInfoSize failed\n"); WARN("HeapAlloc failed bytes %x\n", versize);
return FALSE; return FALSE;
} }
if(!(pBuf = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, versize))) if (!GetFileVersionInfoW(lpfilename, handle, versize, pBuf))
{ {
WARN("HeapAlloc failed bytes %x\n",versize); HeapFree(GetProcessHeap(), 0, pBuf);
return FALSE; return FALSE;
} }
if(!GetFileVersionInfoW(lpfilename, handle, versize, pBuf)) if (VerQueryValueW(pBuf, wSlash, &info, &infolen))
{ {
HeapFree(GetProcessHeap(), 0, pBuf); VS_FIXEDFILEINFO *inf = (VS_FIXEDFILEINFO *)info;
return FALSE; swprintf(buff, wVersionFormat, HIWORD(inf->dwFileVersionMS),
} LOWORD(inf->dwFileVersionMS),
if(VerQueryValueW(pBuf, wSlash, &info, &infolen)) HIWORD(inf->dwFileVersionLS),
{ LOWORD(inf->dwFileVersionLS));
VS_FIXEDFILEINFO * inf = (VS_FIXEDFILEINFO *)info; hDlgCtrl = GetDlgItem(hwndDlg, 14001);
swprintf(buff, wVersionFormat, HIWORD(inf->dwFileVersionMS), TRACE("MS %x LS %x res %s \n", inf->dwFileVersionMS, inf->dwFileVersionLS, debugstr_w(buff));
LOWORD(inf->dwFileVersionMS), SendMessageW(hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)buff);
HIWORD(inf->dwFileVersionLS), }
LOWORD(inf->dwFileVersionLS));
hDlgCtrl = GetDlgItem(hwndDlg, 14001); if (VerQueryValueW(pBuf, wTranslation, (LPVOID *)&lplangcode, &infolen))
TRACE("MS %x LS %x res %s \n",inf->dwFileVersionMS, inf->dwFileVersionLS, debugstr_w(buff)); {
SendMessageW(hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)buff); /* FIXME find language from current locale / if not available,
} * default to english
if(VerQueryValueW(pBuf, wTranslation, (LPVOID *)&lplangcode, &infolen)) * for now default to first available language
{ */
/* FIXME find language from current locale / if not available, lang = lplangcode->lang;
* default to english code = lplangcode->code;
* for now default to first available language }
*/
lang = lplangcode->lang;
code = lplangcode->code;
}
swprintf(buff, wFileDescriptionFormat, lang, code); swprintf(buff, wFileDescriptionFormat, lang, code);
SH_FileVersionQuerySetText(hwndDlg, 14003, pBuf, buff, &str); SH_FileVersionQuerySetText(hwndDlg, 14003, pBuf, buff, &str);
swprintf(buff, wLegalCopyrightFormat, lang, code); swprintf(buff, wLegalCopyrightFormat, lang, code);
SH_FileVersionQuerySetText(hwndDlg, 14005, pBuf, buff, &str); SH_FileVersionQuerySetText(hwndDlg, 14005, pBuf, buff, &str);
/* listbox properties */ /* listbox properties */
SH_FileVersionQuerySetListText(hwndDlg, pBuf, wCompanyName, &str, lang, code); SH_FileVersionQuerySetListText(hwndDlg, pBuf, wCompanyName, &str, lang, code);
SH_FileVersionQuerySetListText(hwndDlg, pBuf, wFileVersion, &str, lang, code); SH_FileVersionQuerySetListText(hwndDlg, pBuf, wFileVersion, &str, lang, code);
SH_FileVersionQuerySetListText(hwndDlg, pBuf, wInternalName, &str, lang, code); SH_FileVersionQuerySetListText(hwndDlg, pBuf, wInternalName, &str, lang, code);
/* FIXME insert language identifier */ /* FIXME insert language identifier */
SH_FileVersionQuerySetListText(hwndDlg, pBuf, wOriginalFilename, &str, lang, code); SH_FileVersionQuerySetListText(hwndDlg, pBuf, wOriginalFilename, &str, lang, code);
SH_FileVersionQuerySetListText(hwndDlg, pBuf, wProductName, &str, lang, code); SH_FileVersionQuerySetListText(hwndDlg, pBuf, wProductName, &str, lang, code);
SH_FileVersionQuerySetListText(hwndDlg, pBuf, wProductVersion, &str, lang, code); SH_FileVersionQuerySetListText(hwndDlg, pBuf, wProductVersion, &str, lang, code);
SetWindowLong(hwndDlg, DWL_USER, (LONG)pBuf); SetWindowLong(hwndDlg, DWL_USER, (LONG)pBuf);
/* select first item */ /* select first item */
hDlgCtrl = GetDlgItem(hwndDlg, 14009); hDlgCtrl = GetDlgItem(hwndDlg, 14009);
SendMessageW(hDlgCtrl, LB_SETCURSEL, 0, 0); SendMessageW(hDlgCtrl, LB_SETCURSEL, 0, 0);
str = (WCHAR *)SendMessageW(hDlgCtrl, LB_GETITEMDATA, (WPARAM)0, (LPARAM)NULL); str = (WCHAR *) SendMessageW(hDlgCtrl, LB_GETITEMDATA, (WPARAM)0, (LPARAM)NULL);
hDlgCtrl = GetDlgItem(hwndDlg, 14010); hDlgCtrl = GetDlgItem(hwndDlg, 14010);
SendMessageW(hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)str); SendMessageW(hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)str);
return TRUE;
return TRUE;
} }
/************************************************************************* /*************************************************************************
@ -512,70 +554,71 @@ SH_FileVersionInitialize(HWND hwndDlg, WCHAR * lpfilename)
* *
* wnd proc of 'Version' property sheet page * wnd proc of 'Version' property sheet page
*/ */
INT_PTR INT_PTR
CALLBACK CALLBACK
SH_FileVersionDlgProc( SH_FileVersionDlgProc(HWND hwndDlg,
HWND hwndDlg, UINT uMsg,
UINT uMsg, WPARAM wParam,
WPARAM wParam, LPARAM lParam)
LPARAM lParam
)
{ {
LPPROPSHEETPAGE ppsp; LPPROPSHEETPAGE ppsp;
WCHAR * lpstr; WCHAR *lpstr;
LPVOID * buf; LPVOID *buf;
switch(uMsg)
{
case WM_INITDIALOG:
ppsp = (LPPROPSHEETPAGE)lParam;
if(ppsp == NULL)
break;
TRACE("WM_INITDIALOG hwnd %p lParam %p ppsplParam %x\n",hwndDlg, lParam, ppsp->lParam); switch (uMsg)
{
case WM_INITDIALOG:
ppsp = (LPPROPSHEETPAGE)lParam;
lpstr = (WCHAR *)ppsp->lParam; if (ppsp == NULL)
break;
if(lpstr == NULL) TRACE("WM_INITDIALOG hwnd %p lParam %p ppsplParam %x\n", hwndDlg, lParam, ppsp->lParam);
break;
return SH_FileVersionInitialize(hwndDlg, lpstr); lpstr = (WCHAR *)ppsp->lParam;
if (lpstr == NULL)
break;
case WM_COMMAND: return SH_FileVersionInitialize(hwndDlg, lpstr);
if(LOWORD(wParam) == 14009 && HIWORD(wParam) == LBN_DBLCLK)
{
HWND hDlgCtrl;
LRESULT lresult;
WCHAR * str;
hDlgCtrl = GetDlgItem(hwndDlg, 14009); case WM_COMMAND:
lresult = SendMessageW(hDlgCtrl, LB_GETCURSEL, (WPARAM)NULL, (LPARAM)NULL); if (LOWORD(wParam) == 14009 && HIWORD(wParam) == LBN_DBLCLK)
if(lresult == LB_ERR) {
{ HWND hDlgCtrl;
break; LRESULT lresult;
} WCHAR *str;
str = (WCHAR *)SendMessageW(hDlgCtrl, LB_GETITEMDATA, (WPARAM)lresult, (LPARAM)NULL);
if(str == NULL) hDlgCtrl = GetDlgItem(hwndDlg, 14009);
{ lresult = SendMessageW(hDlgCtrl, LB_GETCURSEL, (WPARAM)NULL, (LPARAM)NULL);
break;
}
hDlgCtrl = GetDlgItem(hwndDlg, 14010);
TRACE("hDlgCtrl %x string %s \n",hDlgCtrl, debugstr_w(str));
SendMessageW(hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)str);
return TRUE;
}
break;
case WM_DESTROY: if (lresult == LB_ERR)
buf = (LPVOID)GetWindowLong(hwndDlg, DWL_USER); break;
HeapFree(GetProcessHeap(), 0, buf);
break;
default: str = (WCHAR *) SendMessageW(hDlgCtrl, LB_GETITEMDATA, (WPARAM)lresult, (LPARAM)NULL);
break;
} if (str == NULL)
return FALSE; break;
hDlgCtrl = GetDlgItem(hwndDlg, 14010);
TRACE("hDlgCtrl %x string %s \n", hDlgCtrl, debugstr_w(str));
SendMessageW(hDlgCtrl, WM_SETTEXT, (WPARAM)NULL, (LPARAM)str);
return TRUE;
}
break;
case WM_DESTROY:
buf = (LPVOID) GetWindowLong(hwndDlg, DWL_USER);
HeapFree(GetProcessHeap(), 0, buf);
break;
default:
break;
}
return FALSE;
} }
/************************************************************************* /*************************************************************************
@ -588,44 +631,54 @@ SH_FileVersionDlgProc(
INT_PTR INT_PTR
CALLBACK CALLBACK
SH_FileGeneralDlgProc( SH_FileGeneralDlgProc(HWND hwndDlg,
HWND hwndDlg, UINT uMsg,
UINT uMsg, WPARAM wParam,
WPARAM wParam, LPARAM lParam)
LPARAM lParam
)
{ {
LPPROPSHEETPAGEW ppsp; LPPROPSHEETPAGEW ppsp;
WCHAR * lpstr; WCHAR *lpstr;
switch(uMsg)
switch (uMsg)
{ {
case WM_INITDIALOG: case WM_INITDIALOG:
ppsp = (LPPROPSHEETPAGEW)lParam; ppsp = (LPPROPSHEETPAGEW)lParam;
if (ppsp == NULL)
break;
TRACE("WM_INITDIALOG hwnd %p lParam %p ppsplParam %S\n",hwndDlg, lParam, ppsp->lParam);
lpstr = (WCHAR *)ppsp->lParam; if (ppsp == NULL)
break;
if ( lpstr == NULL) TRACE("WM_INITDIALOG hwnd %p lParam %p ppsplParam %S\n", hwndDlg, lParam, ppsp->lParam);
{
ERR("no filename\n"); lpstr = (WCHAR *)ppsp->lParam;
if (lpstr == NULL)
{
ERR("no filename\n");
break;
}
/* set general text properties filename filelocation and icon */
SH_FileGeneralSetText(hwndDlg, lpstr);
/* enumerate file extension from registry and application which opens it */
SH_FileGeneralSetFileType(hwndDlg, wcsrchr(lpstr, '.'));
/* set file time create/modfied/accessed */
SH_FileGeneralSetFileSizeTime(hwndDlg, lpstr, NULL);
return TRUE;
default:
break; break;
} }
/* set general text properties filename filelocation and icon */
SH_FileGeneralSetText(hwndDlg, lpstr); return FALSE;
/* enumerate file extension from registry and application which opens it*/
SH_FileGeneralSetFileType(hwndDlg, wcsrchr(lpstr, '.'));
/* set file time create/modfied/accessed */
SH_FileGeneralSetFileSizeTime(hwndDlg, lpstr, NULL);
return TRUE;
default:
break;
}
return FALSE;
} }
BOOL CALLBACK AddShellPropSheetExCallback(HPROPSHEETPAGE hPage, LPARAM lParam) BOOL
CALLBACK
AddShellPropSheetExCallback(HPROPSHEETPAGE hPage,
LPARAM lParam)
{ {
PROPSHEETHEADERW *pinfo = (PROPSHEETHEADERW *)lParam; PROPSHEETHEADERW *pinfo = (PROPSHEETHEADERW *)lParam;
@ -634,66 +687,73 @@ BOOL CALLBACK AddShellPropSheetExCallback(HPROPSHEETPAGE hPage, LPARAM lParam)
pinfo->u3.phpage[pinfo->nPages++] = hPage; pinfo->u3.phpage[pinfo->nPages++] = hPage;
return TRUE; return TRUE;
} }
return FALSE; return FALSE;
} }
int int
EnumPropSheetExt(LPWSTR wFileName, PROPSHEETHEADERW *pinfo, int NumPages, HPSXA * hpsxa, IDataObject *pDataObj) EnumPropSheetExt(LPWSTR wFileName, PROPSHEETHEADERW *pinfo, int NumPages, HPSXA *hpsxa, IDataObject *pDataObj)
{ {
WCHAR szName[MAX_PATH] = {0}; WCHAR szName[MAX_PATH] = { 0 };
WCHAR * pOffset; WCHAR *pOffset;
UINT Length; UINT Length;
DWORD dwName; DWORD dwName;
int Pages; int Pages;
CLSID clsid; CLSID clsid;
pOffset = wcsrchr(wFileName, L'.'); pOffset = wcsrchr(wFileName, L'.');
if (!pOffset) if (!pOffset)
{ {
Length = wcslen(szName); Length = wcslen(szName);
if (Length + 6 > sizeof(szName)/sizeof(szName[0]))
return 0; if (Length + 6 > sizeof(szName) / sizeof(szName[0]))
return 0;
if (CLSIDFromString(wFileName, &clsid) == NOERROR) if (CLSIDFromString(wFileName, &clsid) == NOERROR)
{ {
wcscpy(szName, L"CLSID\\"); wcscpy(szName, L"CLSID\\");
wcscpy(&szName[6], wFileName); wcscpy(&szName[6], wFileName);
} }
else else
{ {
wcscpy(szName, wFileName); wcscpy(szName, wFileName);
} }
} }
else else
{ {
Length = wcslen(pOffset); Length = wcslen(pOffset);
if (Length >= sizeof(szName)/sizeof(szName[0]))
if (Length >= sizeof(szName) / sizeof(szName[0]))
return 0; return 0;
wcscpy(szName, pOffset); wcscpy(szName, pOffset);
} }
TRACE("EnumPropSheetExt szName %s\n", debugstr_w(szName));
hpsxa[0] = SHCreatePropSheetExtArrayEx(HKEY_CLASSES_ROOT, szName, NumPages, pDataObj);
Pages = SHAddFromPropSheetExtArray(hpsxa[0], AddShellPropSheetExCallback, (LPARAM)pinfo);
TRACE("EnumPropSheetExt szName %s\n", debugstr_w(szName));
hpsxa[0] = SHCreatePropSheetExtArrayEx(HKEY_CLASSES_ROOT, szName, NumPages, pDataObj);
hpsxa[1] = NULL;
Pages = SHAddFromPropSheetExtArray(hpsxa[0], AddShellPropSheetExCallback, (LPARAM)pinfo);
if (pOffset) if (pOffset)
{ {
/* try to load property sheet handlers from prog id key */ /* try to load property sheet handlers from prog id key */
dwName = sizeof(szName); dwName = sizeof(szName);
if (RegGetValueW(HKEY_CLASSES_ROOT, pOffset, NULL, RRF_RT_REG_SZ, NULL, szName, &dwName) == ERROR_SUCCESS) if (RegGetValueW(HKEY_CLASSES_ROOT, pOffset, NULL, RRF_RT_REG_SZ, NULL, szName, &dwName) == ERROR_SUCCESS)
{ {
TRACE("EnumPropSheetExt szName %s, pOffset %s\n", debugstr_w(szName), debugstr_w(pOffset)); TRACE("EnumPropSheetExt szName %s, pOffset %s\n", debugstr_w(szName), debugstr_w(pOffset));
szName[(sizeof(szName)/sizeof(WCHAR))-1] = L'\0'; szName[(sizeof(szName) / sizeof(WCHAR)) - 1] = L'\0';
hpsxa[1] = SHCreatePropSheetExtArrayEx(HKEY_CLASSES_ROOT, szName, NumPages - Pages, pDataObj); hpsxa[1] = SHCreatePropSheetExtArrayEx(HKEY_CLASSES_ROOT, szName, NumPages - Pages, pDataObj);
Pages +=SHAddFromPropSheetExtArray(hpsxa[1], AddShellPropSheetExCallback, (LPARAM)pinfo); Pages += SHAddFromPropSheetExtArray(hpsxa[1], AddShellPropSheetExCallback, (LPARAM)pinfo);
} }
} }
return Pages; return Pages;
} }
/************************************************************************* /*************************************************************************
* *
* SH_ShowPropertiesDialog * SH_ShowPropertiesDialog
@ -703,38 +763,39 @@ EnumPropSheetExt(LPWSTR wFileName, PROPSHEETHEADERW *pinfo, int NumPages, HPSXA
* lpf contains (quoted) path of folder/file * lpf contains (quoted) path of folder/file
* *
* TODO: provide button change application type if file has registered type * TODO: provide button change application type if file has registered type
* make filename field editable and apply changes to filename on close * make filename field editable and apply changes to filename on close
*/ */
BOOL BOOL
SH_ShowPropertiesDialog(WCHAR * lpf, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST * apidl) SH_ShowPropertiesDialog(WCHAR *lpf, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST *apidl)
{ {
PROPSHEETHEADERW pinfo; PROPSHEETHEADERW pinfo;
HPROPSHEETPAGE hppages[MAX_PROPERTY_SHEET_PAGE]; HPROPSHEETPAGE hppages[MAX_PROPERTY_SHEET_PAGE];
WCHAR wFileName[MAX_PATH]; WCHAR wFileName[MAX_PATH];
DWORD dwHandle = 0; DWORD dwHandle = 0;
WCHAR * pFileName; WCHAR *pFileName;
HPSXA hpsxa[2]; HPSXA hpsxa[2];
INT_PTR res; INT_PTR res;
IDataObject* pDataObj = NULL; IDataObject *pDataObj = NULL;
HRESULT hResult; HRESULT hResult;
TRACE("SH_ShowPropertiesDialog entered filename %s\n", debugstr_w(lpf)); TRACE("SH_ShowPropertiesDialog entered filename %s\n", debugstr_w(lpf));
if (lpf== NULL) if (lpf == NULL)
return FALSE; return FALSE;
if ( !wcslen(lpf) ) if (!wcslen(lpf))
return FALSE; return FALSE;
memset(hppages, 0x0, sizeof(HPROPSHEETPAGE) * MAX_PROPERTY_SHEET_PAGE); memset(hppages, 0x0, sizeof(HPROPSHEETPAGE) * MAX_PROPERTY_SHEET_PAGE);
if (lpf[0] == '"') if (lpf[0] == '"')
{ {
/* remove quotes from lpf */ /* remove quotes from lpf */
LPCWSTR src = lpf + 1; LPCWSTR src = lpf + 1;
LPWSTR dst = wFileName; LPWSTR dst = wFileName;
while(*src && *src!='"') while (*src && *src != '"')
*dst++ = *src++; *dst++ = *src++;
*dst = '\0'; *dst = '\0';
@ -754,38 +815,46 @@ SH_ShowPropertiesDialog(WCHAR * lpf, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST * a
return SH_ShowDriveProperties(wFileName, pidlFolder, apidl); return SH_ShowDriveProperties(wFileName, pidlFolder, apidl);
} }
pFileName = wcsrchr(wFileName, '\\'); pFileName = wcsrchr(wFileName, '\\');
if (!pFileName) if (!pFileName)
pFileName = wFileName; pFileName = wFileName;
else else
pFileName++; pFileName++;
memset(&pinfo, 0x0, sizeof(PROPSHEETHEADERW)); memset(&pinfo, 0x0, sizeof(PROPSHEETHEADERW));
pinfo.dwSize = sizeof(PROPSHEETHEADERW); pinfo.dwSize = sizeof(PROPSHEETHEADERW);
pinfo.dwFlags = PSH_NOCONTEXTHELP | PSH_PROPTITLE; pinfo.dwFlags = PSH_NOCONTEXTHELP | PSH_PROPTITLE;
pinfo.u3.phpage = hppages; pinfo.u3.phpage = hppages;
pinfo.pszCaption = pFileName; pinfo.pszCaption = pFileName;
hppages[pinfo.nPages] = SH_CreatePropertySheetPage("SHELL_FILE_GENERAL_DLG", SH_FileGeneralDlgProc, (LPARAM)wFileName, NULL); hppages[pinfo.nPages] =
SH_CreatePropertySheetPage("SHELL_FILE_GENERAL_DLG",
SH_FileGeneralDlgProc,
(LPARAM)wFileName,
NULL);
if (hppages[pinfo.nPages]) if (hppages[pinfo.nPages])
pinfo.nPages++; pinfo.nPages++;
hResult = SHCreateDataObject(pidlFolder, 1, apidl, NULL, &IID_IDataObject, (LPVOID *)&pDataObj);
hResult = SHCreateDataObject(pidlFolder, 1, apidl, NULL, &IID_IDataObject, (LPVOID*)&pDataObj);
if (hResult == S_OK) if (hResult == S_OK)
{ {
if (!EnumPropSheetExt(wFileName, &pinfo, MAX_PROPERTY_SHEET_PAGE-1, hpsxa, pDataObj)) if (!EnumPropSheetExt(wFileName, &pinfo, MAX_PROPERTY_SHEET_PAGE - 1, hpsxa, pDataObj))
{ {
hpsxa[0] = NULL; hpsxa[0] = NULL;
hpsxa[1] = NULL; hpsxa[1] = NULL;
} }
} }
if ( GetFileVersionInfoSizeW(lpf, &dwHandle)) if (GetFileVersionInfoSizeW(lpf, &dwHandle))
{ {
hppages[pinfo.nPages] = SH_CreatePropertySheetPage("SHELL_FILE_VERSION_DLG",SH_FileVersionDlgProc, (LPARAM)wFileName, NULL); hppages[pinfo.nPages] =
SH_CreatePropertySheetPage("SHELL_FILE_VERSION_DLG",
SH_FileVersionDlgProc,
(LPARAM)wFileName,
NULL);
if (hppages[pinfo.nPages]) if (hppages[pinfo.nPages])
pinfo.nPages++; pinfo.nPages++;
} }
@ -794,11 +863,12 @@ SH_ShowPropertiesDialog(WCHAR * lpf, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST * a
if (hResult == S_OK) if (hResult == S_OK)
{ {
SHDestroyPropSheetExtArray(hpsxa[0]); SHDestroyPropSheetExtArray(hpsxa[0]);
SHDestroyPropSheetExtArray(hpsxa[1]); SHDestroyPropSheetExtArray(hpsxa[1]);
IDataObject_Release(pDataObj); IDataObject_Release(pDataObj);
} }
return (res != -1); return (res != -1);
} }
/*EOF */ /*EOF */