[SHELL32]

- Formatting. No code changes
- Remove not used shfldr_unixfs.cpp

svn path=/trunk/; revision=54674
This commit is contained in:
Rafal Harabien 2011-12-17 22:53:44 +00:00
parent 7a0ad93bff
commit 60239d4e4c
19 changed files with 1994 additions and 1991 deletions

View file

@ -34,11 +34,11 @@ WINE_DEFAULT_DEBUG_CHANNEL (fprop);
typedef struct
{
DWORD cFiles;
DWORD cFolder;
ULARGE_INTEGER bSize;
HWND hwndDlg;
WCHAR szFolderPath[MAX_PATH];
DWORD cFiles;
DWORD cFolder;
ULARGE_INTEGER bSize;
HWND hwndDlg;
WCHAR szFolderPath[MAX_PATH];
} FOLDER_PROPERTIES_CONTEXT, *PFOLDER_PROPERTIES_CONTEXT;
typedef struct
@ -57,8 +57,8 @@ typedef struct
static FOLDER_VIEW_ENTRY s_Options[] =
{
{ L"AlwaysShowMenus", IDS_ALWAYSSHOWMENUS },
{ L"AutoCheckSelect", -1 },
{ L"ClassicViewState", -1 },
{ L"AutoCheckSelect", -1 },
{ L"ClassicViewState", -1 },
{ L"DontPrettyPath", -1 },
{ L"Filter", -1 },
{ L"FolderContentsInfoTip", IDS_FOLDERCONTENTSTIP },
@ -105,7 +105,7 @@ FolderOptionsGeneralDlg(
return FALSE;
}
static
static
VOID
InitializeFolderOptionsListCtrl(HWND hwndDlg)
{
@ -191,16 +191,16 @@ InitializeFileTypesListCtrlColumns(HWND hDlgCtrl)
wcscpy(szName, L"FileTypes");
}
col.iSubItem = 1;
col.cx = clientRect.right - clientRect.left - columnSize;
col.cchTextMax = wcslen(szName);
col.pszText = szName;
(void)SendMessageW(hDlgCtrl, LVM_INSERTCOLUMNW, 1, (LPARAM)&col);
col.iSubItem = 1;
col.cx = clientRect.right - clientRect.left - columnSize;
col.cchTextMax = wcslen(szName);
col.pszText = szName;
(void)SendMessageW(hDlgCtrl, LVM_INSERTCOLUMNW, 1, (LPARAM)&col);
/* set full select style */
dwStyle = (DWORD) SendMessage(hDlgCtrl, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
dwStyle = dwStyle | LVS_EX_FULLROWSELECT;
SendMessage(hDlgCtrl, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle);
/* set full select style */
dwStyle = (DWORD) SendMessage(hDlgCtrl, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
dwStyle = dwStyle | LVS_EX_FULLROWSELECT;
SendMessage(hDlgCtrl, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle);
}
INT
@ -228,7 +228,7 @@ InsertFileType(HWND hDlgCtrl, WCHAR * szName, PINT iItem, WCHAR * szFile)
/* FIXME handle URL protocol handlers */
return;
}
/* allocate file type entry */
Entry = (PFOLDER_FILE_TYPE_ENTRY)HeapAlloc(GetProcessHeap(), 0, sizeof(FOLDER_FILE_TYPE_ENTRY));
@ -248,8 +248,8 @@ InsertFileType(HWND hDlgCtrl, WCHAR * szName, PINT iItem, WCHAR * szFile)
dwSize = sizeof(Entry->ClassKey);
if (RegQueryValueExW(hKey, NULL, NULL, NULL, (LPBYTE)Entry->ClassKey, &dwSize) != ERROR_SUCCESS)
{
/* no link available */
Entry->ClassKey[0] = 0;
/* no link available */
Entry->ClassKey[0] = 0;
}
if (Entry->ClassKey[0])
@ -358,8 +358,8 @@ InitializeFileTypesListCtrl(HWND hwndDlg)
/* select first item */
ZeroMemory(&lvItem, sizeof(LVITEMW));
lvItem.mask = LVIF_STATE;
lvItem.stateMask = (UINT)-1;
lvItem.state = LVIS_FOCUSED|LVIS_SELECTED;
lvItem.stateMask = (UINT) - 1;
lvItem.state = LVIS_FOCUSED | LVIS_SELECTED;
lvItem.iItem = 0;
(void)SendMessageW(hDlgCtrl, LVM_SETITEMW, 0, (LPARAM)&lvItem);
@ -381,12 +381,12 @@ FindSelectedItem(
ZeroMemory(&lvItem, sizeof(LVITEM));
lvItem.mask = LVIF_PARAM | LVIF_STATE;
lvItem.iItem = Index;
lvItem.stateMask = (UINT)-1;
lvItem.stateMask = (UINT) - 1;
if (ListView_GetItem(hDlgCtrl, &lvItem))
{
if (lvItem.state & LVIS_SELECTED)
return (PFOLDER_FILE_TYPE_ENTRY)lvItem.lParam;
return (PFOLDER_FILE_TYPE_ENTRY)lvItem.lParam;
}
}
@ -429,47 +429,47 @@ FolderOptionsFileTypesDlg(
}
break;
case WM_NOTIFY:
case WM_NOTIFY:
lppl = (LPNMLISTVIEW) lParam;
if (lppl->hdr.code == LVN_ITEMCHANGING)
{
ZeroMemory(&lvItem, sizeof(LVITEM));
lvItem.mask = LVIF_PARAM;
lvItem.iItem = lppl->iItem;
if (!SendMessageW(lppl->hdr.hwndFrom, LVM_GETITEMW, 0, (LPARAM)&lvItem))
return TRUE;
ZeroMemory(&lvItem, sizeof(LVITEM));
lvItem.mask = LVIF_PARAM;
lvItem.iItem = lppl->iItem;
if (!SendMessageW(lppl->hdr.hwndFrom, LVM_GETITEMW, 0, (LPARAM)&lvItem))
return TRUE;
pItem = (PFOLDER_FILE_TYPE_ENTRY)lvItem.lParam;
if (!pItem)
return TRUE;
pItem = (PFOLDER_FILE_TYPE_ENTRY)lvItem.lParam;
if (!pItem)
return TRUE;
if (!(lppl->uOldState & LVIS_FOCUSED) && (lppl->uNewState & LVIS_FOCUSED))
if (!(lppl->uOldState & LVIS_FOCUSED) && (lppl->uNewState & LVIS_FOCUSED))
{
/* new focused item */
if (!LoadStringW(shell32_hInstance, IDS_FILE_DETAILS, FormatBuffer, sizeof(FormatBuffer) / sizeof(WCHAR)))
{
/* new focused item */
if (!LoadStringW(shell32_hInstance, IDS_FILE_DETAILS, FormatBuffer, sizeof(FormatBuffer) / sizeof(WCHAR)))
{
/* use default english format string */
wcscpy(FormatBuffer, L"Details for '%s' extension");
}
/* format buffer */
swprintf(Buffer, FormatBuffer, &pItem->FileExtension[1]);
/* update dialog */
SetDlgItemTextW(hwndDlg, 14003, Buffer);
if (!LoadStringW(shell32_hInstance, IDS_FILE_DETAILSADV, FormatBuffer, sizeof(FormatBuffer) / sizeof(WCHAR)))
{
/* use default english format string */
wcscpy(FormatBuffer, L"Files with extension '%s' are of type '%s'. To change settings that affect all '%s' files, click Advanced.");
}
/* format buffer */
swprintf(Buffer, FormatBuffer, &pItem->FileExtension[1], &pItem->FileDescription[0], &pItem->FileDescription[0]);
/* update dialog */
SetDlgItemTextW(hwndDlg, 14007, Buffer);
/* use default english format string */
wcscpy(FormatBuffer, L"Details for '%s' extension");
}
}
break;
/* format buffer */
swprintf(Buffer, FormatBuffer, &pItem->FileExtension[1]);
/* update dialog */
SetDlgItemTextW(hwndDlg, 14003, Buffer);
if (!LoadStringW(shell32_hInstance, IDS_FILE_DETAILSADV, FormatBuffer, sizeof(FormatBuffer) / sizeof(WCHAR)))
{
/* use default english format string */
wcscpy(FormatBuffer, L"Files with extension '%s' are of type '%s'. To change settings that affect all '%s' files, click Advanced.");
}
/* format buffer */
swprintf(Buffer, FormatBuffer, &pItem->FileExtension[1], &pItem->FileDescription[0], &pItem->FileDescription[0]);
/* update dialog */
SetDlgItemTextW(hwndDlg, 14007, Buffer);
}
}
break;
}
return FALSE;
@ -517,16 +517,16 @@ Options_RunDLLCommon(HWND hWnd, HINSTANCE hInst, int fOptions, DWORD nCmdShow)
{
switch(fOptions)
{
case 0:
ShowFolderOptionsDialog(hWnd, hInst);
break;
case 1:
// show taskbar options dialog
FIXME("notify explorer to show taskbar options dialog");
//PostMessage(GetShellWindow(), WM_USER+22, fOptions, 0);
break;
default:
FIXME("unrecognized options id %d\n", fOptions);
case 0:
ShowFolderOptionsDialog(hWnd, hInst);
break;
case 1:
// show taskbar options dialog
FIXME("notify explorer to show taskbar options dialog");
//PostMessage(GetShellWindow(), WM_USER+22, fOptions, 0);
break;
default:
FIXME("unrecognized options id %d\n", fOptions);
}
}
@ -568,14 +568,14 @@ CountFolderAndFiles(LPVOID lParam)
pOffset = PathAddBackslashW(pContext->szFolderPath);
if (!pOffset)
return 0;
return 0;
Length = pOffset - pContext->szFolderPath;
wcscpy(pOffset, L"*.*");
hFile = FindFirstFileW(pContext->szFolderPath, &FindData);
if (hFile == INVALID_HANDLE_VALUE)
return 0;
return 0;
do
{
@ -585,7 +585,7 @@ CountFolderAndFiles(LPVOID lParam)
if (FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if (FindData.cFileName[0] == L'.' && FindData.cFileName[1] == L'.' &&
FindData.cFileName[2] == L'\0')
FindData.cFileName[2] == L'\0')
continue;
pContext->cFolder++;
@ -600,13 +600,13 @@ CountFolderAndFiles(LPVOID lParam)
pContext->cFiles++;
pContext->bSize.QuadPart += FileSize.QuadPart;
}
}
}
else if (GetLastError() == ERROR_NO_MORE_FILES)
{
break;
}
}while(1);
} while(1);
FindClose(hFile);
return 1;
@ -623,7 +623,7 @@ InitializeFolderGeneralDlg(PFOLDER_PROPERTIES_CONTEXT pContext)
WCHAR szBuffer[MAX_PATH+5];
WCHAR szFormat[30] = {0};
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};
pFolderName = wcsrchr(pContext->szFolderPath, L'\\');
if (!pFolderName)
@ -636,7 +636,7 @@ InitializeFolderGeneralDlg(PFOLDER_PROPERTIES_CONTEXT pContext)
if (wcslen(pContext->szFolderPath) == 2)
{
/* folder is located at root */
WCHAR szDrive[4] = {L'C',L':',L'\\',L'\0'};
WCHAR szDrive[4] = {L'C', L':', L'\\', L'\0'};
szDrive[0] = pContext->szFolderPath[0];
SetDlgItemTextW(pContext->hwndDlg, 14007, szDrive);
}
@ -660,24 +660,24 @@ InitializeFolderGeneralDlg(PFOLDER_PROPERTIES_CONTEXT pContext)
SendDlgItemMessage(pContext->hwndDlg, 14022, BM_SETCHECK, BST_CHECKED, 0);
}
if (FileTimeToLocalFileTime(&FolderAttribute.ftCreationTime, &ft))
{
FileTimeToSystemTime(&ft, &dt);
swprintf (szBuffer, wFormat, dt.wDay, dt.wMonth, dt.wYear, dt.wHour, dt.wMinute);
SetDlgItemTextW(pContext->hwndDlg, 14015, szBuffer);
}
if (FileTimeToLocalFileTime(&FolderAttribute.ftCreationTime, &ft))
{
FileTimeToSystemTime(&ft, &dt);
swprintf (szBuffer, wFormat, dt.wDay, dt.wMonth, dt.wYear, dt.wHour, dt.wMinute);
SetDlgItemTextW(pContext->hwndDlg, 14015, szBuffer);
}
}
/* now enumerate enumerate contents */
wcscpy(szBuffer, pContext->szFolderPath);
CountFolderAndFiles((LPVOID)pContext);
wcscpy(pContext->szFolderPath, szBuffer);
/* set folder details */
LoadStringW(shell32_hInstance, IDS_FILE_FOLDER, szFormat, sizeof(szFormat)/sizeof(WCHAR));
LoadStringW(shell32_hInstance, IDS_FILE_FOLDER, szFormat, sizeof(szFormat) / sizeof(WCHAR));
szFormat[(sizeof(szFormat)/sizeof(WCHAR))-1] = L'\0';
swprintf(szBuffer, szFormat, pContext->cFiles, pContext->cFolder);
SetDlgItemTextW(pContext->hwndDlg, 14011, szBuffer);
if (SH_FormatFileSizeWithBytes(&pContext->bSize, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
if (SH_FormatFileSizeWithBytes(&pContext->bSize, szBuffer, sizeof(szBuffer) / sizeof(WCHAR)))
{
/* store folder size */
SetDlgItemTextW(pContext->hwndDlg, 14009, szBuffer);
@ -710,7 +710,7 @@ FolderPropertiesGeneralDlg(
break;
hIcon = LoadIconW(shell32_hInstance, MAKEINTRESOURCEW(IDI_SHELL_FOLDER_OPEN));
if (hIcon)
SendDlgItemMessageW(hwndDlg, 14000, STM_SETICON, (WPARAM)hIcon, 0);
SendDlgItemMessageW(hwndDlg, 14000, STM_SETICON, (WPARAM)hIcon, 0);
pContext = (FOLDER_PROPERTIES_CONTEXT *)SHAlloc(sizeof(FOLDER_PROPERTIES_CONTEXT));
if (pContext)
@ -725,7 +725,7 @@ FolderPropertiesGeneralDlg(
case WM_COMMAND:
if (HIWORD(wParam) == BN_CLICKED)
{
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
break;
case WM_DESTROY:
@ -751,8 +751,8 @@ FolderPropertiesGeneralDlg(
else
FolderAttribute.dwFileAttributes &= (~FILE_ATTRIBUTE_HIDDEN);
Attribute = FolderAttribute.dwFileAttributes &
(FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY);
Attribute = FolderAttribute.dwFileAttributes &
(FILE_ATTRIBUTE_ARCHIVE | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_NORMAL | FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_TEMPORARY);
SetFileAttributesW(pContext->szFolderPath, Attribute);
}
@ -815,19 +815,19 @@ SH_ShowFolderProperties(LPWSTR pwszFolder, LPCITEMIDLIST pidlFolder, LPCITEMIDL
if (SHCreateDataObject(pidlFolder, 1, apidl, NULL, IID_IDataObject, (void**)&pDataObj) == S_OK)
{
hpsx = SHCreatePropSheetExtArrayEx(HKEY_CLASSES_ROOT, L"Directory", MAX_PROPERTY_SHEET_PAGE-1, pDataObj);
hpsx = SHCreatePropSheetExtArrayEx(HKEY_CLASSES_ROOT, L"Directory", MAX_PROPERTY_SHEET_PAGE - 1, pDataObj);
if (hpsx)
{
SHAddFromPropSheetExtArray(hpsx,
(LPFNADDPROPSHEETPAGE)FolderAddPropSheetPageProc,
(LPARAM)&psh);
(LPFNADDPROPSHEETPAGE)FolderAddPropSheetPageProc,
(LPARAM)&psh);
}
}
ret = PropertySheetW(&psh);
if (hpsx)
SHDestroyPropSheetExtArray(hpsx);
if (hpsx)
SHDestroyPropSheetExtArray(hpsx);
if (ret < 0)
return FALSE;

View file

@ -27,40 +27,40 @@ DWORD NumIconOverlayHandlers = 0;
IShellIconOverlayIdentifier ** Handlers = NULL;
static HRESULT getIconLocationForFolder(LPCITEMIDLIST pidl, UINT uFlags,
LPWSTR szIconFile, UINT cchMax, int *piIndex, UINT *pwFlags)
LPWSTR szIconFile, UINT cchMax, int *piIndex, UINT *pwFlags)
{
int icon_idx;
WCHAR wszPath[MAX_PATH];
WCHAR wszCLSIDValue[CHARS_IN_GUID];
static const WCHAR shellClassInfo[] = { '.','S','h','e','l','l','C','l','a','s','s','I','n','f','o',0 };
static const WCHAR iconFile[] = { 'I','c','o','n','F','i','l','e',0 };
static const WCHAR clsid[] = { 'C','L','S','I','D',0 };
static const WCHAR clsid2[] = { 'C','L','S','I','D','2',0 };
static const WCHAR iconIndex[] = { 'I','c','o','n','I','n','d','e','x',0 };
static const WCHAR shellClassInfo[] = { '.', 'S', 'h', 'e', 'l', 'l', 'C', 'l', 'a', 's', 's', 'I', 'n', 'f', 'o', 0 };
static const WCHAR iconFile[] = { 'I', 'c', 'o', 'n', 'F', 'i', 'l', 'e', 0 };
static const WCHAR clsid[] = { 'C', 'L', 'S', 'I', 'D', 0 };
static const WCHAR clsid2[] = { 'C', 'L', 'S', 'I', 'D', '2', 0 };
static const WCHAR iconIndex[] = { 'I', 'c', 'o', 'n', 'I', 'n', 'd', 'e', 'x', 0 };
if (SHELL32_GetCustomFolderAttribute(pidl, shellClassInfo, iconFile,
wszPath, MAX_PATH))
wszPath, MAX_PATH))
{
WCHAR wszIconIndex[10];
SHELL32_GetCustomFolderAttribute(pidl, shellClassInfo, iconIndex,
wszIconIndex, 10);
wszIconIndex, 10);
*piIndex = _wtoi(wszIconIndex);
}
else if (SHELL32_GetCustomFolderAttribute(pidl, shellClassInfo, clsid,
wszCLSIDValue, CHARS_IN_GUID) &&
HCR_GetDefaultIconW(wszCLSIDValue, szIconFile, cchMax, &icon_idx))
wszCLSIDValue, CHARS_IN_GUID) &&
HCR_GetDefaultIconW(wszCLSIDValue, szIconFile, cchMax, &icon_idx))
{
*piIndex = icon_idx;
*piIndex = icon_idx;
}
else if (SHELL32_GetCustomFolderAttribute(pidl, shellClassInfo, clsid2,
wszCLSIDValue, CHARS_IN_GUID) &&
HCR_GetDefaultIconW(wszCLSIDValue, szIconFile, cchMax, &icon_idx))
wszCLSIDValue, CHARS_IN_GUID) &&
HCR_GetDefaultIconW(wszCLSIDValue, szIconFile, cchMax, &icon_idx))
{
*piIndex = icon_idx;
*piIndex = icon_idx;
}
else
{
static const WCHAR folder[] = { 'F','o','l','d','e','r',0 };
static const WCHAR folder[] = { 'F', 'o', 'l', 'd', 'e', 'r', 0 };
if (!HCR_GetDefaultIconW(folder, szIconFile, cchMax, &icon_idx))
{
@ -69,7 +69,7 @@ static HRESULT getIconLocationForFolder(LPCITEMIDLIST pidl, UINT uFlags,
}
if (uFlags & GIL_OPENICON)
*piIndex = icon_idx<0? icon_idx-1: icon_idx+1;
*piIndex = icon_idx < 0 ? icon_idx - 1 : icon_idx + 1;
else
*piIndex = icon_idx;
}
@ -86,7 +86,7 @@ void InitIconOverlays(void)
CLSID clsid;
IShellIconOverlayIdentifier * Overlay;
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ShellIconOverlayIdentifiers",0, KEY_READ, &hKey) != ERROR_SUCCESS)
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ShellIconOverlayIdentifiers", 0, KEY_READ, &hKey) != ERROR_SUCCESS)
return;
if (RegQueryInfoKeyW(hKey, NULL, NULL, NULL, &dwResult, NULL, NULL, NULL, NULL, NULL, NULL, NULL) != ERROR_SUCCESS)
@ -132,7 +132,7 @@ void InitIconOverlays(void)
dwIndex++;
}while(1);
} while(1);
RegCloseKey(hKey);
}
@ -212,48 +212,59 @@ IExtractIconW* IExtractIconW_Constructor(LPCITEMIDLIST pidl)
else if ((riid = _ILGetGUIDPointer(pSimplePidl)))
{
/* my computer and other shell extensions */
static const WCHAR fmt[] = { 'C','L','S','I','D','\\',
'{','%','0','8','l','x','-','%','0','4','x','-','%','0','4','x','-',
'%','0','2','x','%','0','2','x','-','%','0','2','x', '%','0','2','x',
'%','0','2','x','%','0','2','x','%','0','2','x','%','0','2','x','}',0 };
WCHAR xriid[50];
static const WCHAR fmt[] = { 'C', 'L', 'S', 'I', 'D', '\\',
'{', '%', '0', '8', 'l', 'x', '-', '%', '0', '4', 'x', '-', '%', '0', '4', 'x', '-',
'%', '0', '2', 'x', '%', '0', '2', 'x', '-', '%', '0', '2', 'x', '%', '0', '2', 'x',
'%', '0', '2', 'x', '%', '0', '2', 'x', '%', '0', '2', 'x', '%', '0', '2', 'x', '}', 0
};
WCHAR xriid[50];
swprintf(xriid, fmt,
riid->Data1, riid->Data2, riid->Data3,
riid->Data4[0], riid->Data4[1], riid->Data4[2], riid->Data4[3],
riid->Data4[4], riid->Data4[5], riid->Data4[6], riid->Data4[7]);
swprintf(xriid, fmt,
riid->Data1, riid->Data2, riid->Data3,
riid->Data4[0], riid->Data4[1], riid->Data4[2], riid->Data4[3],
riid->Data4[4], riid->Data4[5], riid->Data4[6], riid->Data4[7]);
if (HCR_GetDefaultIconW(xriid, wTemp, MAX_PATH, &icon_idx))
{
initIcon->SetNormalIcon(wTemp, icon_idx);
}
if (HCR_GetDefaultIconW(xriid, wTemp, MAX_PATH, &icon_idx))
{
initIcon->SetNormalIcon(wTemp, icon_idx);
}
else
{
if (IsEqualGUID(*riid, CLSID_MyComputer))
initIcon->SetNormalIcon(swShell32Name, -IDI_SHELL_MY_COMPUTER);
else if (IsEqualGUID(*riid, CLSID_MyDocuments))
initIcon->SetNormalIcon(swShell32Name, -IDI_SHELL_MY_DOCUMENTS);
else if (IsEqualGUID(*riid, CLSID_NetworkPlaces))
initIcon->SetNormalIcon(swShell32Name, -IDI_SHELL_MY_NETWORK_PLACES);
else
{
if (IsEqualGUID(*riid, CLSID_MyComputer))
initIcon->SetNormalIcon(swShell32Name, -IDI_SHELL_MY_COMPUTER);
else if (IsEqualGUID(*riid, CLSID_MyDocuments))
initIcon->SetNormalIcon(swShell32Name, -IDI_SHELL_MY_DOCUMENTS);
else if (IsEqualGUID(*riid, CLSID_NetworkPlaces))
initIcon->SetNormalIcon(swShell32Name, -IDI_SHELL_MY_NETWORK_PLACES);
else
initIcon->SetNormalIcon(swShell32Name, -IDI_SHELL_FOLDER);
}
initIcon->SetNormalIcon(swShell32Name, -IDI_SHELL_FOLDER);
}
}
else if (_ILIsDrive (pSimplePidl))
{
static const WCHAR drive[] = { 'D','r','i','v','e',0 };
static const WCHAR drive[] = { 'D', 'r', 'i', 'v', 'e', 0 };
int icon_idx = -1;
if (_ILGetDrive(pSimplePidl, sTemp, MAX_PATH))
{
switch(GetDriveTypeA(sTemp))
{
case DRIVE_REMOVABLE: icon_idx = IDI_SHELL_FLOPPY; break;
case DRIVE_CDROM: icon_idx = IDI_SHELL_CDROM; break;
case DRIVE_REMOTE: icon_idx = IDI_SHELL_NETDRIVE; break;
case DRIVE_RAMDISK: icon_idx = IDI_SHELL_RAMDISK; break;
case DRIVE_NO_ROOT_DIR: icon_idx = IDI_SHELL_CDROM; break;
case DRIVE_REMOVABLE:
icon_idx = IDI_SHELL_FLOPPY;
break;
case DRIVE_CDROM:
icon_idx = IDI_SHELL_CDROM;
break;
case DRIVE_REMOTE:
icon_idx = IDI_SHELL_NETDRIVE;
break;
case DRIVE_RAMDISK:
icon_idx = IDI_SHELL_RAMDISK;
break;
case DRIVE_NO_ROOT_DIR:
icon_idx = IDI_SHELL_CDROM;
break;
}
}
@ -273,30 +284,30 @@ IExtractIconW* IExtractIconW_Constructor(LPCITEMIDLIST pidl)
else if (_ILIsFolder (pSimplePidl))
{
if (SUCCEEDED(getIconLocationForFolder(
pidl, 0, wTemp, MAX_PATH,
&icon_idx,
&flags)))
pidl, 0, wTemp, MAX_PATH,
&icon_idx,
&flags)))
{
initIcon->SetNormalIcon(wTemp, icon_idx);
}
if (SUCCEEDED(getIconLocationForFolder(
pidl, GIL_DEFAULTICON, wTemp, MAX_PATH,
&icon_idx,
&flags)))
pidl, GIL_DEFAULTICON, wTemp, MAX_PATH,
&icon_idx,
&flags)))
{
initIcon->SetDefaultIcon(wTemp, icon_idx);
}
if (SUCCEEDED(getIconLocationForFolder(
pidl, GIL_FORSHORTCUT, wTemp, MAX_PATH,
&icon_idx,
&flags)))
pidl, GIL_FORSHORTCUT, wTemp, MAX_PATH,
&icon_idx,
&flags)))
{
initIcon->SetShortcutIcon(wTemp, icon_idx);
}
if (SUCCEEDED(getIconLocationForFolder(
pidl, GIL_OPENICON, wTemp, MAX_PATH,
&icon_idx,
&flags)))
pidl, GIL_OPENICON, wTemp, MAX_PATH,
&icon_idx,
&flags)))
{
initIcon->SetOpenIcon(wTemp, icon_idx);
}
@ -313,7 +324,7 @@ IExtractIconW* IExtractIconW_Constructor(LPCITEMIDLIST pidl)
else if (_ILGetExtension(pSimplePidl, sTemp, MAX_PATH))
{
if (HCR_MapTypeToValueA(sTemp, sTemp, MAX_PATH, TRUE)
&& HCR_GetDefaultIconA(sTemp, sTemp, MAX_PATH, &icon_idx))
&& HCR_GetDefaultIconA(sTemp, sTemp, MAX_PATH, &icon_idx))
{
if (!lstrcmpA("%1", sTemp)) /* icon is in the file */
{

View file

@ -93,19 +93,19 @@ BOOL WINAPI ILGetDisplayNameExW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPWSTR pa
{
switch (type)
{
case ILGDN_FORPARSING:
flag = SHGDN_FORPARSING | SHGDN_FORADDRESSBAR;
break;
case ILGDN_NORMAL:
flag = SHGDN_NORMAL;
break;
case ILGDN_INFOLDER:
flag = SHGDN_INFOLDER;
break;
default:
FIXME("Unknown type parameter = %x\n", type);
flag = SHGDN_FORPARSING | SHGDN_FORADDRESSBAR;
break;
case ILGDN_FORPARSING:
flag = SHGDN_FORPARSING | SHGDN_FORADDRESSBAR;
break;
case ILGDN_NORMAL:
flag = SHGDN_NORMAL;
break;
case ILGDN_INFOLDER:
flag = SHGDN_INFOLDER;
break;
default:
FIXME("Unknown type parameter = %x\n", type);
flag = SHGDN_FORPARSING | SHGDN_FORADDRESSBAR;
break;
}
if (!*(const WORD*)pidl || type == ILGDN_FORPARSING)
{
@ -172,7 +172,7 @@ LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST pidl)
{
LPCITEMIDLIST pidlLast = pidl;
TRACE("(pidl=%p)\n",pidl);
TRACE("(pidl=%p)\n", pidl);
if (!pidl)
return NULL;
@ -193,7 +193,7 @@ LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST pidl)
*/
BOOL WINAPI ILRemoveLastID(LPITEMIDLIST pidl)
{
TRACE_(shell)("pidl=%p\n",pidl);
TRACE_(shell)("pidl=%p\n", pidl);
if (!pidl || !pidl->mkid.cb)
return 0;
@ -218,9 +218,9 @@ LPITEMIDLIST WINAPI ILClone (LPCITEMIDLIST pidl)
len = ILGetSize(pidl);
newpidl = (LPITEMIDLIST)SHAlloc(len);
if (newpidl)
memcpy(newpidl,pidl,len);
memcpy(newpidl, pidl, len);
TRACE("pidl=%p newpidl=%p\n",pidl, newpidl);
TRACE("pidl=%p newpidl=%p\n", pidl, newpidl);
pdump(pidl);
return newpidl;
@ -243,16 +243,16 @@ LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl)
if (pidl)
{
len = pidl->mkid.cb;
pidlNew = (LPITEMIDLIST)SHAlloc(len+2);
pidlNew = (LPITEMIDLIST)SHAlloc(len + 2);
if (pidlNew)
{
memcpy(pidlNew,pidl,len+2); /* 2 -> mind a desktop pidl */
memcpy(pidlNew, pidl, len + 2); /* 2 -> mind a desktop pidl */
if (len)
ILGetNext(pidlNew)->mkid.cb = 0x00;
}
}
TRACE("-- newpidl=%p\n",pidlNew);
TRACE("-- newpidl=%p\n", pidlNew);
return pidlNew;
}
@ -447,9 +447,9 @@ LPITEMIDLIST WINAPI ILGlobalClone(LPCITEMIDLIST pidl)
len = ILGetSize(pidl);
newpidl = (LPITEMIDLIST)Alloc(len);
if (newpidl)
memcpy(newpidl,pidl,len);
memcpy(newpidl, pidl, len);
TRACE("pidl=%p newpidl=%p\n",pidl, newpidl);
TRACE("pidl=%p newpidl=%p\n", pidl, newpidl);
pdump(pidl);
return newpidl;
@ -467,7 +467,7 @@ BOOL WINAPI ILIsEqual(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
LPCITEMIDLIST pidltemp1 = pidl1;
LPCITEMIDLIST pidltemp2 = pidl2;
TRACE("pidl1=%p pidl2=%p\n",pidl1, pidl2);
TRACE("pidl1=%p pidl2=%p\n", pidl1, pidl2);
/*
* Explorer reads from registry directly (StreamMRU),
@ -581,9 +581,9 @@ LPITEMIDLIST WINAPI ILFindChild(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
LPCITEMIDLIST pidltemp1 = pidl1;
LPCITEMIDLIST pidltemp2 = pidl2;
LPCITEMIDLIST ret=NULL;
LPCITEMIDLIST ret = NULL;
TRACE("pidl1=%p pidl2=%p\n",pidl1, pidl2);
TRACE("pidl1=%p pidl2=%p\n", pidl1, pidl2);
/* explorer reads from registry directly (StreamMRU),
so we can only check here */
@ -604,7 +604,7 @@ LPITEMIDLIST WINAPI ILFindChild(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
_ILSimpleGetText(pidltemp1, szData1, MAX_PATH);
_ILSimpleGetText(pidltemp2, szData2, MAX_PATH);
if (strcmp(szData1,szData2))
if (strcmp(szData1, szData2))
break;
pidltemp1 = ILGetNext(pidltemp1);
@ -640,10 +640,10 @@ LPITEMIDLIST WINAPI ILFindChild(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
*/
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
{
DWORD len1,len2;
DWORD len1, len2;
LPITEMIDLIST pidlNew;
TRACE("pidl=%p pidl=%p\n",pidl1,pidl2);
TRACE("pidl=%p pidl=%p\n", pidl1, pidl2);
if (!pidl1 && !pidl2) return NULL;
@ -662,14 +662,14 @@ LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
return pidlNew;
}
len1 = ILGetSize(pidl1)-2;
len1 = ILGetSize(pidl1) - 2;
len2 = ILGetSize(pidl2);
pidlNew = (LPITEMIDLIST)SHAlloc(len1+len2);
pidlNew = (LPITEMIDLIST)SHAlloc(len1 + len2);
if (pidlNew)
{
memcpy(pidlNew,pidl1,len1);
memcpy(((BYTE *)pidlNew)+len1,pidl2,len2);
memcpy(pidlNew, pidl1, len1);
memcpy(((BYTE *)pidlNew) + len1, pidl2, len2);
}
/* TRACE(pidl,"--new pidl=%p\n",pidlNew);*/
@ -706,8 +706,8 @@ HRESULT WINAPI SHGetRealIDL(LPSHELLFOLDER lpsf, LPCITEMIDLIST pidlSimple, LPITEM
/*assert(pida->cidl==1);*/
LPIDA pida = (LPIDA)GlobalLock(medium.hGlobal);
LPCITEMIDLIST pidl_folder = (LPCITEMIDLIST) ((LPBYTE)pida+pida->aoffset[0]);
LPCITEMIDLIST pidl_child = (LPCITEMIDLIST) ((LPBYTE)pida+pida->aoffset[1]);
LPCITEMIDLIST pidl_folder = (LPCITEMIDLIST) ((LPBYTE)pida + pida->aoffset[0]);
LPCITEMIDLIST pidl_child = (LPCITEMIDLIST) ((LPBYTE)pida + pida->aoffset[1]);
*pidlReal = ILCombine(pidl_folder, pidl_child);
@ -731,7 +731,7 @@ HRESULT WINAPI SHGetRealIDL(LPSHELLFOLDER lpsf, LPCITEMIDLIST pidlSimple, LPITEM
*/
EXTERN_C LPITEMIDLIST WINAPI SHLogILFromFSIL(LPITEMIDLIST pidl)
{
FIXME("(pidl=%p)\n",pidl);
FIXME("(pidl=%p)\n", pidl);
pdump(pidl);
@ -755,18 +755,18 @@ EXTERN_C LPITEMIDLIST WINAPI SHLogILFromFSIL(LPITEMIDLIST pidl)
UINT WINAPI ILGetSize(LPCITEMIDLIST pidl)
{
LPCSHITEMID si = &(pidl->mkid);
UINT len=0;
UINT len = 0;
if (pidl)
{
while (si->cb)
{
len += si->cb;
si = (LPCSHITEMID)(((const BYTE*)si)+si->cb);
si = (LPCSHITEMID)(((const BYTE*)si) + si->cb);
}
len += 2;
}
TRACE("pidl=%p size=%u\n",pidl, len);
TRACE("pidl=%p size=%u\n", pidl, len);
return len;
}
@ -797,7 +797,7 @@ LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST pidl)
len = pidl->mkid.cb;
if (len)
{
pidl = (LPCITEMIDLIST) (((const BYTE*)pidl)+len);
pidl = (LPCITEMIDLIST) (((const BYTE*)pidl) + len);
TRACE("-- %p\n", pidl);
return (LPITEMIDLIST)pidl;
}
@ -824,7 +824,7 @@ EXTERN_C LPITEMIDLIST WINAPI ILAppend(LPITEMIDLIST pidl, LPCITEMIDLIST item, BOO
{
LPITEMIDLIST idlRet;
WARN("(pidl=%p,pidl=%p,%08u)semi-stub\n",pidl,item,bEnd);
WARN("(pidl=%p,pidl=%p,%08u)semi-stub\n", pidl, item, bEnd);
pdump (pidl);
pdump (item);
@ -861,7 +861,7 @@ EXTERN_C LPITEMIDLIST WINAPI ILAppend(LPITEMIDLIST pidl, LPCITEMIDLIST item, BOO
*/
void WINAPI ILFree(LPITEMIDLIST pidl)
{
TRACE("(pidl=%p)\n",pidl);
TRACE("(pidl=%p)\n", pidl);
SHFree(pidl);
}
@ -972,8 +972,8 @@ static HRESULT _ILParsePathW(LPCWSTR path, LPWIN32_FIND_DATAW lpFindFile,
HRESULT ret;
TRACE("%s %p %d (%p)->%p (%p)->0x%x\n", debugstr_w(path), lpFindFile, bBindCtx,
ppidl, ppidl ? *ppidl : NULL,
prgfInOut, prgfInOut ? *prgfInOut : 0);
ppidl, ppidl ? *ppidl : NULL,
prgfInOut, prgfInOut ? *prgfInOut : 0);
ret = SHGetDesktopFolder(&pSF);
if (FAILED(ret))
@ -1068,7 +1068,7 @@ HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl,
LPSTR filename, shortname;
WIN32_FIND_DATAA * pfd;
TRACE_(shell)("sf=%p pidl=%p 0x%04x %p 0x%04x stub\n",psf,pidl,nFormat,dest,len);
TRACE_(shell)("sf=%p pidl=%p 0x%04x %p 0x%04x stub\n", psf, pidl, nFormat, dest, len);
pdump(pidl);
if (!psf || !dest)
@ -1076,41 +1076,41 @@ HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl,
switch (nFormat)
{
case SHGDFIL_FINDDATA:
pfd = (WIN32_FIND_DATAA *)dest;
case SHGDFIL_FINDDATA:
pfd = (WIN32_FIND_DATAA *)dest;
if (_ILIsDrive(pidl) || _ILIsSpecialFolder(pidl))
return E_INVALIDARG;
if (_ILIsDrive(pidl) || _ILIsSpecialFolder(pidl))
return E_INVALIDARG;
if (len < (int)sizeof(WIN32_FIND_DATAA))
return E_INVALIDARG;
if (len < (int)sizeof(WIN32_FIND_DATAA))
return E_INVALIDARG;
ZeroMemory(pfd, sizeof (WIN32_FIND_DATAA));
_ILGetFileDateTime( pidl, &(pfd->ftLastWriteTime));
pfd->dwFileAttributes = _ILGetFileAttributes(pidl, NULL, 0);
pfd->nFileSizeLow = _ILGetFileSize ( pidl, NULL, 0);
ZeroMemory(pfd, sizeof (WIN32_FIND_DATAA));
_ILGetFileDateTime( pidl, &(pfd->ftLastWriteTime));
pfd->dwFileAttributes = _ILGetFileAttributes(pidl, NULL, 0);
pfd->nFileSizeLow = _ILGetFileSize ( pidl, NULL, 0);
filename = _ILGetTextPointer(pidl);
shortname = _ILGetSTextPointer(pidl);
filename = _ILGetTextPointer(pidl);
shortname = _ILGetSTextPointer(pidl);
if (filename)
lstrcpynA(pfd->cFileName, filename, sizeof(pfd->cFileName));
else
pfd->cFileName[0] = '\0';
if (filename)
lstrcpynA(pfd->cFileName, filename, sizeof(pfd->cFileName));
else
pfd->cFileName[0] = '\0';
if (shortname)
lstrcpynA(pfd->cAlternateFileName, shortname, sizeof(pfd->cAlternateFileName));
else
pfd->cAlternateFileName[0] = '\0';
return NOERROR;
if (shortname)
lstrcpynA(pfd->cAlternateFileName, shortname, sizeof(pfd->cAlternateFileName));
else
pfd->cAlternateFileName[0] = '\0';
return NOERROR;
case SHGDFIL_NETRESOURCE:
case SHGDFIL_DESCRIPTIONID:
FIXME_(shell)("SHGDFIL %i stub\n", nFormat);
break;
case SHGDFIL_NETRESOURCE:
case SHGDFIL_DESCRIPTIONID:
FIXME_(shell)("SHGDFIL %i stub\n", nFormat);
break;
default:
ERR_(shell)("Unknown SHGDFIL %i, please report\n", nFormat);
default:
ERR_(shell)("Unknown SHGDFIL %i, please report\n", nFormat);
}
return E_INVALIDARG;
@ -1126,7 +1126,7 @@ HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl,
LPSTR filename, shortname;
WIN32_FIND_DATAW * pfd = (WIN32_FIND_DATAW *)dest;
TRACE_(shell)("sf=%p pidl=%p 0x%04x %p 0x%04x stub\n",psf,pidl,nFormat,dest,len);
TRACE_(shell)("sf=%p pidl=%p 0x%04x %p 0x%04x stub\n", psf, pidl, nFormat, dest, len);
pdump(pidl);
@ -1135,41 +1135,41 @@ HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl,
switch (nFormat)
{
case SHGDFIL_FINDDATA:
pfd = (WIN32_FIND_DATAW *)dest;
case SHGDFIL_FINDDATA:
pfd = (WIN32_FIND_DATAW *)dest;
if (_ILIsDrive(pidl))
return E_INVALIDARG;
if (_ILIsDrive(pidl))
return E_INVALIDARG;
if (len < (int)sizeof(WIN32_FIND_DATAW))
return E_INVALIDARG;
if (len < (int)sizeof(WIN32_FIND_DATAW))
return E_INVALIDARG;
ZeroMemory(pfd, sizeof (WIN32_FIND_DATAA));
_ILGetFileDateTime( pidl, &(pfd->ftLastWriteTime));
pfd->dwFileAttributes = _ILGetFileAttributes(pidl, NULL, 0);
pfd->nFileSizeLow = _ILGetFileSize ( pidl, NULL, 0);
ZeroMemory(pfd, sizeof (WIN32_FIND_DATAA));
_ILGetFileDateTime( pidl, &(pfd->ftLastWriteTime));
pfd->dwFileAttributes = _ILGetFileAttributes(pidl, NULL, 0);
pfd->nFileSizeLow = _ILGetFileSize ( pidl, NULL, 0);
filename = _ILGetTextPointer(pidl);
shortname = _ILGetSTextPointer(pidl);
filename = _ILGetTextPointer(pidl);
shortname = _ILGetSTextPointer(pidl);
if (!filename)
pfd->cFileName[0] = '\0';
else if (!MultiByteToWideChar(CP_ACP, 0, filename, -1, pfd->cFileName, MAX_PATH))
pfd->cFileName[MAX_PATH-1] = 0;
if (!filename)
pfd->cFileName[0] = '\0';
else if (!MultiByteToWideChar(CP_ACP, 0, filename, -1, pfd->cFileName, MAX_PATH))
pfd->cFileName[MAX_PATH-1] = 0;
if (!shortname)
pfd->cAlternateFileName[0] = '\0';
else if (!MultiByteToWideChar(CP_ACP, 0, shortname, -1, pfd->cAlternateFileName, 14))
pfd->cAlternateFileName[13] = 0;
return NOERROR;
if (!shortname)
pfd->cAlternateFileName[0] = '\0';
else if (!MultiByteToWideChar(CP_ACP, 0, shortname, -1, pfd->cAlternateFileName, 14))
pfd->cAlternateFileName[13] = 0;
return NOERROR;
case SHGDFIL_NETRESOURCE:
case SHGDFIL_DESCRIPTIONID:
FIXME_(shell)("SHGDFIL %i stub\n", nFormat);
break;
case SHGDFIL_NETRESOURCE:
case SHGDFIL_DESCRIPTIONID:
FIXME_(shell)("SHGDFIL %i stub\n", nFormat);
break;
default:
ERR_(shell)("Unknown SHGDFIL %i, please report\n", nFormat);
default:
ERR_(shell)("Unknown SHGDFIL %i, please report\n", nFormat);
}
return E_INVALIDARG;
@ -1241,7 +1241,7 @@ BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
hr = StrRetToBufW(&strret, pidlLast, pszPath, MAX_PATH);
TRACE_(shell)("-- %s, 0x%08x\n",debugstr_w(pszPath), hr);
TRACE_(shell)("-- %s, 0x%08x\n", debugstr_w(pszPath), hr);
return SUCCEEDED(hr);
}
@ -1251,7 +1251,7 @@ BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast)
{
CComPtr<IShellFolder> psfDesktop;
HRESULT hr=E_FAIL;
HRESULT hr = E_FAIL;
TRACE_(shell)("pidl=%p\n", pidl);
pdump(pidl);
@ -1283,7 +1283,7 @@ HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCI
if (SUCCEEDED(hr) && ppidlLast)
*ppidlLast = ILFindLastID(pidl);
TRACE_(shell)("-- psf=%p pidl=%p ret=0x%08x\n", *ppv, (ppidlLast)?*ppidlLast:NULL, hr);
TRACE_(shell)("-- psf=%p pidl=%p ret=0x%08x\n", *ppv, (ppidlLast) ? *ppidlLast : NULL, hr);
return hr;
}
@ -1471,11 +1471,11 @@ LPITEMIDLIST _ILCreateFromFindDataW( const WIN32_FIND_DATAW *wfd )
if (!wfd)
return NULL;
TRACE("(%s, %s)\n",debugstr_w(wfd->cAlternateFileName), debugstr_w(wfd->cFileName));
TRACE("(%s, %s)\n", debugstr_w(wfd->cAlternateFileName), debugstr_w(wfd->cFileName));
/* prepare buffer with both names */
len = WideCharToMultiByte(CP_ACP,0,wfd->cFileName,-1,buff,MAX_PATH,NULL,NULL);
len1 = WideCharToMultiByte(CP_ACP,0,wfd->cAlternateFileName,-1, buff+len, sizeof(buff)-len, NULL, NULL);
len = WideCharToMultiByte(CP_ACP, 0, wfd->cFileName, -1, buff, MAX_PATH, NULL, NULL);
len1 = WideCharToMultiByte(CP_ACP, 0, wfd->cAlternateFileName, -1, buff + len, sizeof(buff) - len, NULL, NULL);
alen = len + len1;
type = (wfd->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? PT_FOLDER : PT_VALUE;
@ -1503,7 +1503,7 @@ LPITEMIDLIST _ILCreateFromFindDataW( const WIN32_FIND_DATAW *wfd )
pOffsetW = (WORD*)((LPBYTE)pidl + pidl->mkid.cb - sizeof(WORD));
*pOffsetW = (LPBYTE)fsw - (LPBYTE)pidl;
TRACE("-- Set Value: %s\n",debugstr_w(fsw->wszName));
TRACE("-- Set Value: %s\n", debugstr_w(fsw->wszName));
}
return pidl;
@ -1532,7 +1532,7 @@ LPITEMIDLIST _ILCreateDrive(LPCWSTR lpszNew)
{
LPITEMIDLIST pidlOut;
TRACE("(%s)\n",debugstr_w(lpszNew));
TRACE("(%s)\n", debugstr_w(lpszNew));
pidlOut = _ILAlloc(PT_DRIVE, sizeof(DriveStruct));
if (pidlOut)
@ -1543,7 +1543,7 @@ LPITEMIDLIST _ILCreateDrive(LPCWSTR lpszNew)
if (pszDest)
{
strcpy(pszDest, "x:\\");
pszDest[0]=towupper(lpszNew[0]);
pszDest[0] = towupper(lpszNew[0]);
TRACE("-- create Drive: %s\n", debugstr_a(pszDest));
}
}
@ -1558,9 +1558,9 @@ LPITEMIDLIST _ILCreateDrive(LPCWSTR lpszNew)
* RETURNS
* strlen (lpszText)
*/
DWORD _ILGetDrive(LPCITEMIDLIST pidl,LPSTR pOut, UINT uSize)
DWORD _ILGetDrive(LPCITEMIDLIST pidl, LPSTR pOut, UINT uSize)
{
TRACE("(%p,%p,%u)\n",pidl,pOut,uSize);
TRACE("(%p,%p,%u)\n", pidl, pOut, uSize);
if(_ILIsMyComputer(pidl))
pidl = ILGetNext(pidl);
@ -1589,14 +1589,14 @@ BOOL _ILIsUnicode(LPCITEMIDLIST pidl)
{
LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
TRACE("(%p)\n",pidl);
TRACE("(%p)\n", pidl);
return (pidl && lpPData && PT_VALUEW == lpPData->type);
}
BOOL _ILIsDesktop(LPCITEMIDLIST pidl)
{
TRACE("(%p)\n",pidl);
TRACE("(%p)\n", pidl);
return pidl && pidl->mkid.cb ? 0 : 1;
}
@ -1605,7 +1605,7 @@ BOOL _ILIsMyDocuments(LPCITEMIDLIST pidl)
{
IID *iid = _ILGetGUIDPointer(pidl);
TRACE("(%p)\n",pidl);
TRACE("(%p)\n", pidl);
if (iid)
return IsEqualIID(*iid, CLSID_MyDocuments);
@ -1616,7 +1616,7 @@ BOOL _ILIsControlPanel(LPCITEMIDLIST pidl)
{
IID *iid = _ILGetGUIDPointer(pidl);
TRACE("(%p)\n",pidl);
TRACE("(%p)\n", pidl);
if (iid)
return IsEqualIID(*iid, CLSID_ControlPanel);
@ -1627,7 +1627,7 @@ BOOL _ILIsNetHood(LPCITEMIDLIST pidl)
{
IID *iid = _ILGetGUIDPointer(pidl);
TRACE("(%p)\n",pidl);
TRACE("(%p)\n", pidl);
if (iid)
return IsEqualIID(*iid, CLSID_NetworkPlaces);
@ -1649,7 +1649,7 @@ BOOL _ILIsMyComputer(LPCITEMIDLIST pidl)
{
IID *iid = _ILGetGUIDPointer(pidl);
TRACE("(%p)\n",pidl);
TRACE("(%p)\n", pidl);
if (iid)
return IsEqualIID(*iid, CLSID_MyComputer);
@ -1660,7 +1660,7 @@ BOOL _ILIsPrinter(LPCITEMIDLIST pidl)
{
IID *iid = _ILGetGUIDPointer(pidl);
TRACE("(%p)\n",pidl);
TRACE("(%p)\n", pidl);
if (iid)
return IsEqualIID(*iid, CLSID_Printers);
@ -1671,7 +1671,7 @@ BOOL _ILIsBitBucket(LPCITEMIDLIST pidl)
{
IID *iid = _ILGetGUIDPointer(pidl);
TRACE("(%p)\n",pidl);
TRACE("(%p)\n", pidl);
if (iid)
return IsEqualIID(*iid, CLSID_RecycleBin);
@ -1682,7 +1682,7 @@ BOOL _ILIsAdminTools(LPCITEMIDLIST pidl)
{
IID *iid = _ILGetGUIDPointer(pidl);
TRACE("(%p)\n",pidl);
TRACE("(%p)\n", pidl);
if (iid)
return IsEqualIID(*iid, CLSID_AdminFolderShortcut);
@ -1694,30 +1694,30 @@ BOOL _ILIsSpecialFolder (LPCITEMIDLIST pidl)
{
LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
TRACE("(%p)\n",pidl);
TRACE("(%p)\n", pidl);
return (pidl && ( (lpPData && (PT_GUID== lpPData->type || PT_SHELLEXT== lpPData->type || PT_YAGUID == lpPData->type)) ||
(pidl && pidl->mkid.cb == 0x00)
));
return (pidl && ( (lpPData && (PT_GUID == lpPData->type || PT_SHELLEXT == lpPData->type || PT_YAGUID == lpPData->type)) ||
(pidl && pidl->mkid.cb == 0x00)
));
}
BOOL _ILIsDrive(LPCITEMIDLIST pidl)
{
LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
TRACE("(%p)\n",pidl);
TRACE("(%p)\n", pidl);
return (pidl && lpPData && (PT_DRIVE == lpPData->type ||
PT_DRIVE1 == lpPData->type ||
PT_DRIVE2 == lpPData->type ||
PT_DRIVE3 == lpPData->type));
PT_DRIVE1 == lpPData->type ||
PT_DRIVE2 == lpPData->type ||
PT_DRIVE3 == lpPData->type));
}
BOOL _ILIsFolder(LPCITEMIDLIST pidl)
{
LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
TRACE("(%p)\n",pidl);
TRACE("(%p)\n", pidl);
return (pidl && lpPData && (PT_FOLDER == lpPData->type || PT_FOLDER1 == lpPData->type));
}
@ -1726,7 +1726,7 @@ BOOL _ILIsValue(LPCITEMIDLIST pidl)
{
LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
TRACE("(%p)\n",pidl);
TRACE("(%p)\n", pidl);
return (pidl && lpPData && PT_VALUE == lpPData->type);
}
@ -1735,7 +1735,7 @@ BOOL _ILIsCPanelStruct(LPCITEMIDLIST pidl)
{
LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
TRACE("(%p)\n",pidl);
TRACE("(%p)\n", pidl);
return (pidl && lpPData && (lpPData->type == 0));
}
@ -1765,22 +1765,22 @@ BOOL _ILIsPidlSimple(LPCITEMIDLIST pidl)
* ### 3. section getting values from pidls ###
*/
/**************************************************************************
* _ILSimpleGetText
*
* gets the text for the first item in the pidl (eg. simple pidl)
*
* returns the length of the string
*/
/**************************************************************************
* _ILSimpleGetText
*
* gets the text for the first item in the pidl (eg. simple pidl)
*
* returns the length of the string
*/
DWORD _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR szOut, UINT uOutSize)
{
DWORD dwReturn=0;
DWORD dwReturn = 0;
LPSTR szSrc;
LPWSTR szSrcW;
GUID const * riid;
char szTemp[MAX_PATH];
TRACE("(%p %p %x)\n",pidl,szOut,uOutSize);
TRACE("(%p %p %x)\n", pidl, szOut, uOutSize);
if (!pidl)
return 0;
@ -1810,7 +1810,7 @@ DWORD _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR szOut, UINT uOutSize)
else if (( szSrcW = _ILGetTextPointerW(pidl) ))
{
/* unicode filesystem */
WideCharToMultiByte(CP_ACP,0,szSrcW, -1, szTemp, MAX_PATH, NULL, NULL);
WideCharToMultiByte(CP_ACP, 0, szSrcW, -1, szTemp, MAX_PATH, NULL, NULL);
if (szOut)
lstrcpynA(szOut, szTemp, uOutSize);
@ -1833,23 +1833,23 @@ DWORD _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR szOut, UINT uOutSize)
ERR("-- no text\n");
}
TRACE("-- (%p=%s 0x%08x)\n",szOut,debugstr_a(szOut),dwReturn);
TRACE("-- (%p=%s 0x%08x)\n", szOut, debugstr_a(szOut), dwReturn);
return dwReturn;
}
/**************************************************************************
* _ILSimpleGetTextW
*
* gets the text for the first item in the pidl (eg. simple pidl)
*
* returns the length of the string
*/
/**************************************************************************
* _ILSimpleGetTextW
*
* gets the text for the first item in the pidl (eg. simple pidl)
*
* returns the length of the string
*/
DWORD _ILSimpleGetTextW (LPCITEMIDLIST pidl, LPWSTR szOut, UINT uOutSize)
{
DWORD dwReturn;
FileStructW *pFileStructW = _ILGetFileStructW(pidl);
TRACE("(%p %p %x)\n",pidl,szOut,uOutSize);
TRACE("(%p %p %x)\n", pidl, szOut, uOutSize);
if (pFileStructW) {
lstrcpynW(szOut, pFileStructW->wszName, uOutSize);
@ -1859,7 +1859,7 @@ DWORD _ILSimpleGetTextW (LPCITEMIDLIST pidl, LPWSTR szOut, UINT uOutSize)
WCHAR szTemp[MAX_PATH];
LPSTR szSrc;
LPWSTR szSrcW;
dwReturn=0;
dwReturn = 0;
if (!pidl)
return 0;
@ -1913,7 +1913,7 @@ DWORD _ILSimpleGetTextW (LPCITEMIDLIST pidl, LPWSTR szOut, UINT uOutSize)
}
}
TRACE("-- (%p=%s 0x%08x)\n",szOut,debugstr_w(szOut),dwReturn);
TRACE("-- (%p=%s 0x%08x)\n", szOut, debugstr_w(szOut), dwReturn);
return dwReturn;
}
@ -1946,36 +1946,36 @@ static LPWSTR _ILGetTextPointerW(LPCITEMIDLIST pidl)
switch (pdata->type)
{
case PT_GUID:
case PT_SHELLEXT:
case PT_YAGUID:
return NULL;
case PT_GUID:
case PT_SHELLEXT:
case PT_YAGUID:
return NULL;
case PT_DRIVE:
case PT_DRIVE1:
case PT_DRIVE2:
case PT_DRIVE3:
/*return (LPSTR)&(pdata->u.drive.szDriveName);*/
return NULL;
case PT_DRIVE:
case PT_DRIVE1:
case PT_DRIVE2:
case PT_DRIVE3:
/*return (LPSTR)&(pdata->u.drive.szDriveName);*/
return NULL;
case PT_FOLDER:
case PT_FOLDER1:
case PT_VALUE:
case PT_IESPECIAL1:
case PT_IESPECIAL2:
/*return (LPSTR)&(pdata->u.file.szNames);*/
return NULL;
case PT_FOLDER:
case PT_FOLDER1:
case PT_VALUE:
case PT_IESPECIAL1:
case PT_IESPECIAL2:
/*return (LPSTR)&(pdata->u.file.szNames);*/
return NULL;
case PT_WORKGRP:
case PT_COMP:
case PT_NETWORK:
case PT_NETPROVIDER:
case PT_SHARE:
/*return (LPSTR)&(pdata->u.network.szNames);*/
return NULL;
case PT_WORKGRP:
case PT_COMP:
case PT_NETWORK:
case PT_NETPROVIDER:
case PT_SHARE:
/*return (LPSTR)&(pdata->u.network.szNames);*/
return NULL;
case PT_VALUEW:
return (LPWSTR)pdata->u.file.szNames;
case PT_VALUEW:
return (LPWSTR)pdata->u.file.szNames;
}
return NULL;
}
@ -1996,33 +1996,33 @@ LPSTR _ILGetTextPointer(LPCITEMIDLIST pidl)
switch (pdata->type)
{
case PT_GUID:
case PT_SHELLEXT:
case PT_YAGUID:
return NULL;
case PT_GUID:
case PT_SHELLEXT:
case PT_YAGUID:
return NULL;
case PT_DRIVE:
case PT_DRIVE1:
case PT_DRIVE2:
case PT_DRIVE3:
return pdata->u.drive.szDriveName;
case PT_DRIVE:
case PT_DRIVE1:
case PT_DRIVE2:
case PT_DRIVE3:
return pdata->u.drive.szDriveName;
case PT_FOLDER:
case PT_FOLDER1:
case PT_VALUE:
case PT_IESPECIAL1:
case PT_IESPECIAL2:
return pdata->u.file.szNames;
case PT_FOLDER:
case PT_FOLDER1:
case PT_VALUE:
case PT_IESPECIAL1:
case PT_IESPECIAL2:
return pdata->u.file.szNames;
case PT_WORKGRP:
case PT_COMP:
case PT_NETWORK:
case PT_NETPROVIDER:
case PT_SHARE:
return pdata->u.network.szNames;
case PT_WORKGRP:
case PT_COMP:
case PT_NETWORK:
case PT_NETPROVIDER:
case PT_SHARE:
return pdata->u.network.szNames;
case PT_CPLAPPLET:
return pdata->u.cpanel.szName;
case PT_CPLAPPLET:
return pdata->u.cpanel.szName;
}
return NULL;
}
@ -2035,21 +2035,21 @@ static LPSTR _ILGetSTextPointer(LPCITEMIDLIST pidl)
{
/* TRACE(pidl,"(pidl%p)\n", pidl); */
LPPIDLDATA pdata =_ILGetDataPointer(pidl);
LPPIDLDATA pdata = _ILGetDataPointer(pidl);
if (!pdata)
return NULL;
switch (pdata->type)
{
case PT_FOLDER:
case PT_VALUE:
case PT_IESPECIAL1:
case PT_IESPECIAL2:
return pdata->u.file.szNames + strlen (pdata->u.file.szNames) + 1;
case PT_FOLDER:
case PT_VALUE:
case PT_IESPECIAL1:
case PT_IESPECIAL2:
return pdata->u.file.szNames + strlen (pdata->u.file.szNames) + 1;
case PT_WORKGRP:
return pdata->u.network.szNames + strlen (pdata->u.network.szNames) + 1;
case PT_WORKGRP:
return pdata->u.network.szNames + strlen (pdata->u.network.szNames) + 1;
}
return NULL;
}
@ -2061,7 +2061,7 @@ static LPSTR _ILGetSTextPointer(LPCITEMIDLIST pidl)
*/
IID* _ILGetGUIDPointer(LPCITEMIDLIST pidl)
{
LPPIDLDATA pdata =_ILGetDataPointer(pidl);
LPPIDLDATA pdata = _ILGetDataPointer(pidl);
TRACE("%p\n", pidl);
@ -2071,14 +2071,14 @@ IID* _ILGetGUIDPointer(LPCITEMIDLIST pidl)
TRACE("pdata->type 0x%04x\n", pdata->type);
switch (pdata->type)
{
case PT_SHELLEXT:
case PT_GUID:
case PT_YAGUID:
return &(pdata->u.guid.guid);
case PT_SHELLEXT:
case PT_GUID:
case PT_YAGUID:
return &(pdata->u.guid.guid);
default:
TRACE("Unknown pidl type 0x%04x\n", pdata->type);
break;
default:
TRACE("Unknown pidl type 0x%04x\n", pdata->type);
break;
}
return NULL;
}
@ -2109,11 +2109,11 @@ FileStructW* _ILGetFileStructW(LPCITEMIDLIST pidl) {
* style with a FileStructW member. If we switch all our shellfolder-implementations to
* the new format, this won't be a problem. For now, we do as many sanity checks as possible. */
if (cbOffset & 0x1 || /* FileStructW member is word aligned in the pidl */
/* FileStructW is positioned after FileStruct */
cbOffset < sizeof(pidl->mkid.cb) + sizeof(PIDLTYPE) + sizeof(FileStruct) ||
/* There has to be enough space at cbOffset in the pidl to hold FileStructW and cbOffset */
cbOffset > pidl->mkid.cb - sizeof(cbOffset) - sizeof(FileStructW) ||
pidl->mkid.cb != cbOffset + pFileStructW->cbLen)
/* FileStructW is positioned after FileStruct */
cbOffset < sizeof(pidl->mkid.cb) + sizeof(PIDLTYPE) + sizeof(FileStruct) ||
/* There has to be enough space at cbOffset in the pidl to hold FileStructW and cbOffset */
cbOffset > pidl->mkid.cb - sizeof(cbOffset) - sizeof(FileStructW) ||
pidl->mkid.cb != cbOffset + pFileStructW->cbLen)
{
WARN("Invalid pidl format (cbOffset = %d)!\n", cbOffset);
return NULL;
@ -2146,19 +2146,19 @@ BOOL _ILGetFileDateTime(LPCITEMIDLIST pidl, FILETIME *pFt)
switch (pdata->type)
{
case PT_FOLDER:
case PT_VALUE:
DosDateTimeToFileTime(pdata->u.file.uFileDate, pdata->u.file.uFileTime, pFt);
break;
default:
return FALSE;
case PT_FOLDER:
case PT_VALUE:
DosDateTimeToFileTime(pdata->u.file.uFileDate, pdata->u.file.uFileTime, pFt);
break;
default:
return FALSE;
}
return TRUE;
}
BOOL _ILGetFileDate (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
{
FILETIME ft,lft;
FILETIME ft, lft;
SYSTEMTIME time;
BOOL ret;
@ -2167,7 +2167,7 @@ BOOL _ILGetFileDate (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
FileTimeToLocalFileTime(&ft, &lft);
FileTimeToSystemTime (&lft, &time);
ret = GetDateFormatA(LOCALE_USER_DEFAULT,DATE_SHORTDATE,&time, NULL, pOut, uOutSize);
ret = GetDateFormatA(LOCALE_USER_DEFAULT, DATE_SHORTDATE, &time, NULL, pOut, uOutSize);
if (ret)
{
/* Append space + time without seconds */
@ -2210,11 +2210,11 @@ DWORD _ILGetFileSize (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
switch (pdata->type)
{
case PT_VALUE:
dwSize = pdata->u.file.dwFileSize;
if (pOut)
StrFormatKBSizeA(dwSize, pOut, uOutSize);
return dwSize;
case PT_VALUE:
dwSize = pdata->u.file.dwFileSize;
if (pOut)
StrFormatKBSizeA(dwSize, pOut, uOutSize);
return dwSize;
}
if (pOut)
*pOut = 0x00;
@ -2225,9 +2225,9 @@ BOOL _ILGetExtension (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
{
char szTemp[MAX_PATH];
const char * pPoint;
LPCITEMIDLIST pidlTemp=pidl;
LPCITEMIDLIST pidlTemp = pidl;
TRACE("pidl=%p\n",pidl);
TRACE("pidl=%p\n", pidl);
if (!pidl)
return FALSE;
@ -2246,7 +2246,7 @@ BOOL _ILGetExtension (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
pPoint++;
lstrcpynA(pOut, pPoint, uOutSize);
TRACE("%s\n",pOut);
TRACE("%s\n", pOut);
return TRUE;
}
@ -2298,7 +2298,7 @@ void _ILGetFileType(LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
}
}
}
else
else
{
pOut[0] = '\0';
LoadStringA(shell32_hInstance, IDS_DIRECTORY, pOut, uOutSize);
@ -2335,15 +2335,15 @@ DWORD _ILGetFileAttributes(LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
switch(pData->type)
{
case PT_FOLDER:
case PT_VALUE:
wAttrib = pData->u.file.uFileAttribs;
break;
case PT_FOLDER:
case PT_VALUE:
wAttrib = pData->u.file.uFileAttribs;
break;
}
if(uOutSize >= 6)
{
i=0;
i = 0;
if(wAttrib & FILE_ATTRIBUTE_READONLY)
pOut[i++] = 'R';
if(wAttrib & FILE_ATTRIBUTE_HIDDEN)

View file

@ -51,73 +51,73 @@
* The structure of the pidl seems to be a union. The first byte of the
* PIDLDATA describes the type of pidl.
*
* object ! first byte / ! format ! living space
* ! size
* ----------------------------------------------------------------
* my computer 0x1F/20 guid (2) (usual)
* network 0x1F guid
* bitbucket 0x1F guid
* drive 0x23/25 drive (usual)
* drive 0x25/25 drive (lnk/persistent)
* drive 0x29/25 drive
* shell extension 0x2E guid
* drive 0x2F drive (lnk/persistent)
* folder/file 0x30 folder/file (1) (lnk/persistent)
* folder 0x31 folder (usual)
* valueA 0x32 file (ANSI file name)
* valueW 0x34 file (Unicode file name)
* workgroup 0x41 network (3)
* computer 0x42 network (4)
* net provider 0x46 network
* whole network 0x47 network (5)
* MSITStore 0x61 htmlhlp (7)
* printers/ras connections 0x70 guid
* history/favorites 0xb1 file
* share 0xc3 network (6)
* object ! first byte / ! format ! living space
* ! size
* ----------------------------------------------------------------
* my computer 0x1F/20 guid (2) (usual)
* network 0x1F guid
* bitbucket 0x1F guid
* drive 0x23/25 drive (usual)
* drive 0x25/25 drive (lnk/persistent)
* drive 0x29/25 drive
* shell extension 0x2E guid
* drive 0x2F drive (lnk/persistent)
* folder/file 0x30 folder/file (1) (lnk/persistent)
* folder 0x31 folder (usual)
* valueA 0x32 file (ANSI file name)
* valueW 0x34 file (Unicode file name)
* workgroup 0x41 network (3)
* computer 0x42 network (4)
* net provider 0x46 network
* whole network 0x47 network (5)
* MSITStore 0x61 htmlhlp (7)
* printers/ras connections 0x70 guid
* history/favorites 0xb1 file
* share 0xc3 network (6)
*
* guess: the persistent elements are non tracking
*
* (1) dummy byte is used, attributes are empty
* (2) IID_MyComputer = 20D04FE0L-3AEA-1069-A2D8-08002B30309D
* (3) two strings "workgroup" "Microsoft Network"
* (4) two strings "\\sirius" "Microsoft Network"
* (5) one string "Entire Network"
* (6) two strings "\\sirius\c" "Microsoft Network"
* (3) two strings "workgroup" "Microsoft Network"
* (4) two strings "\\sirius" "Microsoft Network"
* (5) one string "Entire Network"
* (6) two strings "\\sirius\c" "Microsoft Network"
* (7) contains string "mk:@MSITStore:C:\path\file.chm::/path/filename.htm"
* GUID 871C5380-42A0-1069-A2EA-08002B30309D
* GUID 871C5380-42A0-1069-A2EA-08002B30309D
*/
#define PT_CPLAPPLET 0x00
#define PT_GUID 0x1F
#define PT_DRIVE 0x23
#define PT_DRIVE2 0x25
#define PT_DRIVE3 0x29
#define PT_SHELLEXT 0x2E
#define PT_DRIVE1 0x2F
#define PT_FOLDER1 0x30
#define PT_FOLDER 0x31
#define PT_VALUE 0x32
#define PT_CPLAPPLET 0x00
#define PT_GUID 0x1F
#define PT_DRIVE 0x23
#define PT_DRIVE2 0x25
#define PT_DRIVE3 0x29
#define PT_SHELLEXT 0x2E
#define PT_DRIVE1 0x2F
#define PT_FOLDER1 0x30
#define PT_FOLDER 0x31
#define PT_VALUE 0x32
#define PT_VALUEW 0x34
#define PT_WORKGRP 0x41
#define PT_COMP 0x42
#define PT_WORKGRP 0x41
#define PT_COMP 0x42
#define PT_NETPROVIDER 0x46
#define PT_NETWORK 0x47
#define PT_IESPECIAL1 0x61
#define PT_YAGUID 0x70 /* yet another guid.. */
#define PT_CPEXT 0x71
#define PT_IESPECIAL2 0xb1
#define PT_SHARE 0xc3
#define PT_NETWORK 0x47
#define PT_IESPECIAL1 0x61
#define PT_YAGUID 0x70 /* yet another guid.. */
#define PT_CPEXT 0x71
#define PT_IESPECIAL2 0xb1
#define PT_SHARE 0xc3
#include "pshpack1.h"
typedef BYTE PIDLTYPE;
typedef struct tagPIDLCPanelStruct
{
BYTE dummy; /*01 is 0x00 */
DWORD iconIdx; /*02 negative icon ID */
WORD offsDispName; /*06*/
WORD offsComment; /*08*/
CHAR szName[1]; /*10*/ /* terminated by 0x00, followed by display name and comment string */
BYTE dummy; /*01 is 0x00 */
DWORD iconIdx; /*02 negative icon ID */
WORD offsDispName; /*06*/
WORD offsComment; /*08*/
CHAR szName[1]; /*10*/ /* terminated by 0x00, followed by display name and comment string */
} PIDLCPanelStruct;
typedef struct tagPIDLFontStruct
@ -133,17 +133,17 @@ typedef struct tagPIDLPrinterStruct
DWORD Attributes;
WORD offsServer;
WCHAR szName[1];
}PIDLPrinterStruct;
} PIDLPrinterStruct;
typedef struct tagPIDLRecycleStruct
{
FILETIME LastModification;
FILETIME DeletionTime;
ULARGE_INTEGER FileSize;
ULARGE_INTEGER PhysicalFileSize;
DWORD Attributes;
WCHAR szName[1];
}PIDLRecycleStruct;
FILETIME LastModification;
FILETIME DeletionTime;
ULARGE_INTEGER FileSize;
ULARGE_INTEGER PhysicalFileSize;
DWORD Attributes;
WCHAR szName[1];
} PIDLRecycleStruct;
typedef struct tagGUIDStruct
{
@ -153,18 +153,18 @@ typedef struct tagGUIDStruct
typedef struct tagDriveStruct
{
CHAR szDriveName[20]; /*01*/
WORD unknown; /*21*/
CHAR szDriveName[20]; /*01*/
WORD unknown; /*21*/
} DriveStruct;
typedef struct tagFileStruct
{
BYTE dummy; /*01 is 0x00 for files or dirs */
DWORD dwFileSize; /*02*/
WORD uFileDate; /*06*/
WORD uFileTime; /*08*/
WORD uFileAttribs; /*10*/
CHAR szNames[0]; /*12*/
BYTE dummy; /*01 is 0x00 for files or dirs */
DWORD dwFileSize; /*02*/
WORD uFileDate; /*06*/
WORD uFileTime; /*08*/
WORD uFileAttribs; /*10*/
CHAR szNames[0]; /*12*/
/* Here are coming two strings. The first is the long name.
The second the dos name when needed or just 0x00 */
} FileStruct;
@ -189,69 +189,71 @@ typedef struct tagValueW
} ValueWStruct;
typedef struct tagPIDLDATA
{ PIDLTYPE type; /*00*/
union
{
struct tagGUIDStruct guid;
struct tagDriveStruct drive;
struct tagFileStruct file;
struct
{ WORD dummy; /*01*/
CHAR szNames[1]; /*03*/
} network;
struct
{ WORD dummy; /*01*/
DWORD dummy1; /*02*/
CHAR szName[1]; /*06*/ /* terminated by 0x00 0x00 */
} htmlhelp;
struct tagPIDLCPanelStruct cpanel;
struct tagValueW valueW;
struct tagPIDLFontStruct cfont;
struct tagPIDLPrinterStruct cprinter;
struct tagPIDLRecycleStruct crecycle;
}u;
{ PIDLTYPE type; /*00*/
union
{
struct tagGUIDStruct guid;
struct tagDriveStruct drive;
struct tagFileStruct file;
struct
{ WORD dummy; /*01*/
CHAR szNames[1]; /*03*/
} network;
struct
{ WORD dummy; /*01*/
DWORD dummy1; /*02*/
CHAR szName[1]; /*06*/ /* terminated by 0x00 0x00 */
} htmlhelp;
struct tagPIDLCPanelStruct cpanel;
struct tagValueW valueW;
struct tagPIDLFontStruct cfont;
struct tagPIDLPrinterStruct cprinter;
struct tagPIDLRecycleStruct crecycle;
} u;
} PIDLDATA, *LPPIDLDATA;
#include "poppack.h"
/*
* getting special values from simple pidls
*/
DWORD _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize);
DWORD _ILSimpleGetTextW (LPCITEMIDLIST pidl, LPWSTR pOut, UINT uOutSize);
BOOL _ILGetFileDate (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize);
DWORD _ILGetFileSize (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize);
BOOL _ILGetExtension (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize);
void _ILGetFileType (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize);
DWORD _ILGetFileAttributes (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize);
DWORD _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize);
DWORD _ILSimpleGetTextW (LPCITEMIDLIST pidl, LPWSTR pOut, UINT uOutSize);
BOOL _ILGetFileDate (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize);
DWORD _ILGetFileSize (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize);
BOOL _ILGetExtension (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize);
void _ILGetFileType (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize);
DWORD _ILGetFileAttributes (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize);
BOOL _ILGetFileDateTime (LPCITEMIDLIST pidl, FILETIME *ft);
DWORD _ILGetDrive (LPCITEMIDLIST, LPSTR, UINT);
BOOL _ILGetFileDateTime (LPCITEMIDLIST pidl, FILETIME *ft);
DWORD _ILGetDrive (LPCITEMIDLIST, LPSTR, UINT);
/*
* testing simple pidls
*/
BOOL _ILIsUnicode (LPCITEMIDLIST pidl);
BOOL _ILIsDesktop (LPCITEMIDLIST pidl);
BOOL _ILIsMyComputer (LPCITEMIDLIST pidl);
BOOL _ILIsPrinter (LPCITEMIDLIST pidl);
BOOL _ILIsUnicode (LPCITEMIDLIST pidl);
BOOL _ILIsDesktop (LPCITEMIDLIST pidl);
BOOL _ILIsMyComputer (LPCITEMIDLIST pidl);
BOOL _ILIsPrinter (LPCITEMIDLIST pidl);
BOOL _ILIsMyDocuments (LPCITEMIDLIST pidl);
BOOL _ILIsControlPanel (LPCITEMIDLIST pidl);
BOOL _ILIsBitBucket (LPCITEMIDLIST pidl);
BOOL _ILIsAdminTools (LPCITEMIDLIST pidl);
BOOL _ILIsAdminTools (LPCITEMIDLIST pidl);
BOOL _ILIsNetHood (LPCITEMIDLIST pidl);
BOOL _ILIsDrive (LPCITEMIDLIST pidl);
BOOL _ILIsFolder (LPCITEMIDLIST pidl);
BOOL _ILIsValue (LPCITEMIDLIST pidl);
BOOL _ILIsSpecialFolder (LPCITEMIDLIST pidl);
BOOL _ILIsPidlSimple (LPCITEMIDLIST pidl);
BOOL _ILIsCPanelStruct (LPCITEMIDLIST pidl);
BOOL _ILIsDrive (LPCITEMIDLIST pidl);
BOOL _ILIsFolder (LPCITEMIDLIST pidl);
BOOL _ILIsValue (LPCITEMIDLIST pidl);
BOOL _ILIsSpecialFolder (LPCITEMIDLIST pidl);
BOOL _ILIsPidlSimple (LPCITEMIDLIST pidl);
BOOL _ILIsCPanelStruct (LPCITEMIDLIST pidl);
static BOOL __inline _ILIsEqualSimple (LPCITEMIDLIST pidlA, LPCITEMIDLIST pidlB)
{
return (pidlA->mkid.cb > 0 && !memcmp(pidlA, pidlB, pidlA->mkid.cb)) ||
(!pidlA->mkid.cb && !pidlB->mkid.cb);
(!pidlA->mkid.cb && !pidlB->mkid.cb);
}
static
BOOL __inline _ILIsEmpty (LPCITEMIDLIST pidl) {
return _ILIsDesktop(pidl);
}
static
BOOL __inline _ILIsEmpty (LPCITEMIDLIST pidl) { return _ILIsDesktop(pidl); }
/*
* simple pidls
@ -260,43 +262,43 @@ BOOL __inline _ILIsEmpty (LPCITEMIDLIST pidl) { return _ILIsDeskto
/* Creates a PIDL with guid format and type type, which must be one of PT_GUID,
* PT_SHELLEXT, or PT_YAGUID.
*/
LPITEMIDLIST _ILCreateGuid(PIDLTYPE type, REFIID guid);
LPITEMIDLIST _ILCreateGuid(PIDLTYPE type, REFIID guid);
/* Like _ILCreateGuid, but using the string szGUID. */
LPITEMIDLIST _ILCreateGuidFromStrA(LPCSTR szGUID);
LPITEMIDLIST _ILCreateGuidFromStrW(LPCWSTR szGUID);
LPITEMIDLIST _ILCreateGuidFromStrA(LPCSTR szGUID);
LPITEMIDLIST _ILCreateGuidFromStrW(LPCWSTR szGUID);
/* Commonly used PIDLs representing file system objects. */
LPITEMIDLIST _ILCreateDesktop (void);
LPITEMIDLIST _ILCreateFromFindDataW(const WIN32_FIND_DATAW *stffile);
HRESULT _ILCreateFromPathW (LPCWSTR szPath, LPITEMIDLIST* ppidl);
LPITEMIDLIST _ILCreateDesktop (void);
LPITEMIDLIST _ILCreateFromFindDataW(const WIN32_FIND_DATAW *stffile);
HRESULT _ILCreateFromPathW (LPCWSTR szPath, LPITEMIDLIST* ppidl);
/* Other helpers */
LPITEMIDLIST _ILCreateMyComputer (void);
LPITEMIDLIST _ILCreateMyDocuments (void);
LPITEMIDLIST _ILCreateIExplore (void);
LPITEMIDLIST _ILCreateControlPanel (void);
LPITEMIDLIST _ILCreatePrinters (void);
LPITEMIDLIST _ILCreateNetwork (void);
LPITEMIDLIST _ILCreateNetHood (void);
LPITEMIDLIST _ILCreateAdminTools (void);
LPITEMIDLIST _ILCreateFont (void);
LPITEMIDLIST _ILCreateBitBucket (void);
LPITEMIDLIST _ILCreateDrive (LPCWSTR);
LPITEMIDLIST _ILCreateMyComputer (void);
LPITEMIDLIST _ILCreateMyDocuments (void);
LPITEMIDLIST _ILCreateIExplore (void);
LPITEMIDLIST _ILCreateControlPanel (void);
LPITEMIDLIST _ILCreatePrinters (void);
LPITEMIDLIST _ILCreateNetwork (void);
LPITEMIDLIST _ILCreateNetHood (void);
LPITEMIDLIST _ILCreateAdminTools (void);
LPITEMIDLIST _ILCreateFont (void);
LPITEMIDLIST _ILCreateBitBucket (void);
LPITEMIDLIST _ILCreateDrive (LPCWSTR);
/*
* helper functions (getting struct-pointer)
*/
LPPIDLDATA _ILGetDataPointer (LPCITEMIDLIST);
LPSTR _ILGetTextPointer (LPCITEMIDLIST);
IID *_ILGetGUIDPointer (LPCITEMIDLIST pidl);
LPPIDLDATA _ILGetDataPointer (LPCITEMIDLIST);
LPSTR _ILGetTextPointer (LPCITEMIDLIST);
IID *_ILGetGUIDPointer (LPCITEMIDLIST pidl);
FileStructW *_ILGetFileStructW (LPCITEMIDLIST pidl);
/*
* debug helper
*/
void pdump (LPCITEMIDLIST pidl);
BOOL pcheck (LPCITEMIDLIST pidl);
void pdump (LPCITEMIDLIST pidl);
BOOL pcheck (LPCITEMIDLIST pidl);
/*
* aPidl helper

View file

@ -575,7 +575,7 @@ static GUID const CLSID_Shortcut = {
0x00021401, 0x0000, 0x0000, {0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46} };
static struct regsvr_coclass const coclass_list[] = {
{ &CLSID_Desktop,
/*{ &CLSID_Desktop,
"Desktop",
IDS_DESKTOP,
NULL,
@ -634,7 +634,7 @@ static struct regsvr_coclass const coclass_list[] = {
NULL,
NULL,
IDI_SHELL_MY_NETWORK_PLACES
},
},*/
{ &CLSID_FontsFolderShortcut,
"Fonts",
IDS_FONTS,
@ -648,7 +648,7 @@ static struct regsvr_coclass const coclass_list[] = {
NULL,
IDI_SHELL_FONTS_FOLDER
},
{ &CLSID_AdminFolderShortcut,
/*{ &CLSID_AdminFolderShortcut,
"Administrative Tools",
IDS_ADMINISTRATIVETOOLS,
NULL,
@ -660,8 +660,8 @@ static struct regsvr_coclass const coclass_list[] = {
NULL,
NULL,
IDI_SHELL_ADMINTOOLS //FIXME
},
{ &CLSID_Shortcut,
},*/
/*{ &CLSID_Shortcut,
"Shortcut",
0,
NULL,
@ -737,7 +737,7 @@ static struct regsvr_coclass const coclass_list[] = {
NULL,
"shell32.dll",
"Apartment"
},
},*/
{ NULL } /* list terminator */
};
@ -818,17 +818,17 @@ static struct regsvr_namespace const namespace_extensions_list[] = {
HRESULT WINAPI DoRegisterServer(void)
{
HRESULT hr;
HRESULT hr = S_OK;
TRACE("\n");
hr = register_coclasses(coclass_list);
if (SUCCEEDED(hr))
hr = register_interfaces(interface_list);
if (SUCCEEDED(hr))
hr = SHELL_RegisterShellFolders();
if (SUCCEEDED(hr))
hr = register_namespace_extensions(namespace_extensions_list);
//hr = register_coclasses(coclass_list);
//if (SUCCEEDED(hr))
// hr = register_interfaces(interface_list);
//if (SUCCEEDED(hr))
// hr = SHELL_RegisterShellFolders();
//if (SUCCEEDED(hr))
// hr = register_namespace_extensions(namespace_extensions_list);
return hr;
}

View file

@ -21,21 +21,21 @@
#include <precomp.h>
/* copy data structure for tray notifications */
/* copy data structure for tray notifications */
typedef struct TrayNotifyCDS_Dummy {
DWORD cookie;
DWORD notify_code;
DWORD nicon_data[1]; // placeholder for NOTIFYICONDATA structure
} TrayNotifyCDS_Dummy;
/* The only difference between Shell_NotifyIconA and Shell_NotifyIconW is the call to SendMessageA/W. */
/* The only difference between Shell_NotifyIconA and Shell_NotifyIconW is the call to SendMessageA/W. */
static BOOL SHELL_NotifyIcon(DWORD dwMessage, void* pnid, HWND nid_hwnd, int nid_size, BOOL unicode)
{
HWND hwnd;
COPYDATASTRUCT data;
BOOL ret = FALSE;
int len = sizeof(TrayNotifyCDS_Dummy)-sizeof(DWORD)+nid_size;
int len = sizeof(TrayNotifyCDS_Dummy) - sizeof(DWORD) + nid_size;
TrayNotifyCDS_Dummy* pnotify_data = (TrayNotifyCDS_Dummy*) alloca(len);
@ -47,8 +47,8 @@ static BOOL SHELL_NotifyIcon(DWORD dwMessage, void* pnid, HWND nid_hwnd, int nid
data.cbData = len;
data.lpData = pnotify_data;
for(hwnd=0; (hwnd=FindWindowExW(0, hwnd, L"Shell_TrayWnd", NULL)); )
if ((unicode?SendMessageW:SendMessageA)(hwnd, WM_COPYDATA, (WPARAM)nid_hwnd, (LPARAM)&data))
for(hwnd = 0; (hwnd = FindWindowExW(0, hwnd, L"Shell_TrayWnd", NULL)); )
if ((unicode ? SendMessageW : SendMessageA)(hwnd, WM_COPYDATA, (WPARAM)nid_hwnd, (LPARAM)&data))
ret = TRUE;
return ret;

View file

@ -41,7 +41,7 @@ typedef struct
UINT Count;
BOOL NoOpen;
UINT idCmdFirst;
}OPEN_WITH_CONTEXT, *POPEN_WITH_CONTEXT;
} OPEN_WITH_CONTEXT, *POPEN_WITH_CONTEXT;
#define MANUFACTURER_NAME_SIZE 100
@ -50,11 +50,11 @@ typedef struct
HICON hIcon;
WCHAR szAppName[MAX_PATH];
WCHAR szManufacturer[MANUFACTURER_NAME_SIZE];
}OPEN_ITEM_CONTEXT, *POPEN_ITEM_CONTEXT;
} OPEN_ITEM_CONTEXT, *POPEN_ITEM_CONTEXT;
typedef struct _LANGANDCODEPAGE_
{
{
WORD lang;
WORD code;
} LANGANDCODEPAGE, *LPLANGANDCODEPAGE;
@ -81,7 +81,7 @@ AddItem(HMENU hMenu, UINT idCmdFirst)
{
MENUITEMINFOW mii;
WCHAR szBuffer[MAX_PATH];
static const WCHAR szChoose[] = { 'C','h','o','o','s','e',' ','P','r','o','g','r','a','m','.','.','.',0 };
static const WCHAR szChoose[] = { 'C', 'h', 'o', 'o', 's', 'e', ' ', 'P', 'r', 'o', 'g', 'r', 'a', 'm', '.', '.', '.', 0 };
ZeroMemory(&mii, sizeof(mii));
mii.cbSize = sizeof(mii);
@ -91,7 +91,7 @@ AddItem(HMENU hMenu, UINT idCmdFirst)
InsertMenuItemW(hMenu, -1, TRUE, &mii);
if (!LoadStringW(shell32_hInstance, IDS_OPEN_WITH_CHOOSE, szBuffer, sizeof(szBuffer) / sizeof(WCHAR)))
wcscpy(szBuffer, szChoose);
wcscpy(szBuffer, szChoose);
szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
@ -105,7 +105,7 @@ AddItem(HMENU hMenu, UINT idCmdFirst)
InsertMenuItemW(hMenu, -1, TRUE, &mii);
}
static
static
void
LoadOWItems(POPEN_WITH_CONTEXT pContext, LPCWSTR szName)
{
@ -152,11 +152,11 @@ HRESULT WINAPI COpenWithMenu::QueryContextMenu(
INT pos;
HMENU hSubMenu = NULL;
OPEN_WITH_CONTEXT Context;
if (!LoadStringW(shell32_hInstance, IDS_OPEN_WITH, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
if (!LoadStringW(shell32_hInstance, IDS_OPEN_WITH, szBuffer, sizeof(szBuffer) / sizeof(WCHAR)))
{
ERR("failed to load string\n");
return E_FAIL;
ERR("failed to load string\n");
return E_FAIL;
}
hSubMenu = CreatePopupMenu();
@ -181,7 +181,7 @@ HRESULT WINAPI COpenWithMenu::QueryContextMenu(
AddItem(hSubMenu, Context.idCmdFirst++);
count = Context.idCmdFirst - idCmdFirst;
/* verb start at index zero */
wId = count -1;
wId = count - 1;
hSubMenu = hSubMenu;
}
@ -192,8 +192,8 @@ HRESULT WINAPI COpenWithMenu::QueryContextMenu(
mii.fMask = MIIM_ID | MIIM_TYPE | MIIM_STATE;
if (hSubMenu)
{
mii.fMask |= MIIM_SUBMENU;
mii.hSubMenu = hSubMenu;
mii.fMask |= MIIM_SUBMENU;
mii.hSubMenu = hSubMenu;
}
mii.dwTypeData = (LPWSTR) szBuffer;
mii.fState = MFS_ENABLED;
@ -205,7 +205,7 @@ HRESULT WINAPI COpenWithMenu::QueryContextMenu(
mii.wID = Context.idCmdFirst;
mii.fType = MFT_STRING;
if (InsertMenuItemW( hmenu, pos, TRUE, &mii))
Context.Count++;
Context.Count++;
return MAKE_HRESULT(SEVERITY_SUCCESS, 0, Context.Count);
}
@ -236,11 +236,11 @@ FreeListItems(HWND hwndDlg)
BOOL HideApplicationFromList(WCHAR * pFileName)
{
WCHAR szBuffer[100] = {'A','p','p','l','i','c','a','t','i','o','n','s','\\',0};
WCHAR szBuffer[100] = {'A', 'p', 'p', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 's', '\\', 0};
DWORD dwSize = 0;
LONG result;
if (wcslen(pFileName) > (sizeof(szBuffer)/sizeof(WCHAR)) - 14)
if (wcslen(pFileName) > (sizeof(szBuffer) / sizeof(WCHAR)) - 14)
{
ERR("insufficient buffer\n");
return FALSE;
@ -262,10 +262,10 @@ WriteStaticShellExtensionKey(HKEY hRootKey, const WCHAR * pVerb, WCHAR *pFullPat
{
HKEY hShell;
LONG result;
WCHAR szBuffer[MAX_PATH+10] = {'s','h','e','l','l','\\', 0 };
WCHAR szBuffer[MAX_PATH+10] = {'s', 'h', 'e', 'l', 'l', '\\', 0 };
if (wcslen(pVerb) > (sizeof(szBuffer)/sizeof(WCHAR)) - 15 ||
wcslen(pFullPath) > (sizeof(szBuffer)/sizeof(WCHAR)) - 4)
if (wcslen(pVerb) > (sizeof(szBuffer) / sizeof(WCHAR)) - 15 ||
wcslen(pFullPath) > (sizeof(szBuffer) / sizeof(WCHAR)) - 4)
{
ERR("insufficient buffer\n");
return;
@ -283,7 +283,7 @@ WriteStaticShellExtensionKey(HKEY hRootKey, const WCHAR * pVerb, WCHAR *pFullPat
wcscpy(szBuffer, pFullPath);
wcscat(szBuffer, L" %1");
result = RegSetValueExW(hShell, NULL, 0, REG_SZ, (const BYTE*)szBuffer, (wcslen(szBuffer)+1)* sizeof(WCHAR));
result = RegSetValueExW(hShell, NULL, 0, REG_SZ, (const BYTE*)szBuffer, (wcslen(szBuffer) + 1) * sizeof(WCHAR));
RegCloseKey(hShell);
}
@ -298,7 +298,7 @@ StoreNewSettings(LPCWSTR szFileName, WCHAR *szAppName)
/* get file extension */
pFileExt = wcsrchr(szFileName, L'.');
if (wcslen(pFileExt) > (sizeof(szBuffer)/sizeof(WCHAR)) - 60)
if (wcslen(pFileExt) > (sizeof(szBuffer) / sizeof(WCHAR)) - 60)
{
ERR("insufficient buffer\n");
return;
@ -352,7 +352,7 @@ SetProgrammAsDefaultHandler(LPCWSTR szFileName, WCHAR * szAppName)
/* a new entry was created create the prog key id */
wcscpy(szBuffer, &pFileExt[1]);
wcscat(szBuffer, L"_auto_file");
if (RegSetValueExW(hKey, NULL, 0, REG_SZ, (const BYTE*)szBuffer, (wcslen(szBuffer)+1) * sizeof(WCHAR)) != ERROR_SUCCESS)
if (RegSetValueExW(hKey, NULL, 0, REG_SZ, (const BYTE*)szBuffer, (wcslen(szBuffer) + 1) * sizeof(WCHAR)) != ERROR_SUCCESS)
{
RegCloseKey(hKey);
return;
@ -453,7 +453,7 @@ BrowseForApplication(HWND hwndDlg)
POPEN_ITEM_CONTEXT
GetCurrentOpenItemContext(HWND hwndDlg)
{
LRESULT result;
LRESULT result;
/* get current item */
result = SendDlgItemMessage(hwndDlg, 14002, LB_GETCURSEL, 0, 0);
@ -495,8 +495,8 @@ ExecuteOpenItem(POPEN_ITEM_CONTEXT pItemContext, LPCWSTR FileName)
static INT_PTR CALLBACK OpenWithProgrammDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
LPMEASUREITEMSTRUCT lpmis;
LPDRAWITEMSTRUCT lpdis;
LPMEASUREITEMSTRUCT lpmis;
LPDRAWITEMSTRUCT lpdis;
INT index;
WCHAR szBuffer[MAX_PATH + 30] = { 0 };
OPENASINFO *poainfo;
@ -510,128 +510,128 @@ static INT_PTR CALLBACK OpenWithProgrammDlg(HWND hwndDlg, UINT uMsg, WPARAM wPar
switch(uMsg)
{
case WM_INITDIALOG:
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG)lParam);
poainfo = (OPENASINFO*)lParam;
if (!(poainfo->oaifInFlags & OAIF_ALLOW_REGISTRATION))
EnableWindow(GetDlgItem(hwndDlg, 14003), FALSE);
if (poainfo->oaifInFlags & OAIF_FORCE_REGISTRATION)
SendDlgItemMessage(hwndDlg, 14003, BM_SETCHECK, BST_CHECKED, 0);
if (poainfo->oaifInFlags & OAIF_HIDE_REGISTRATION)
ShowWindow(GetDlgItem(hwndDlg, 14003), SW_HIDE);
if (poainfo->pcszFile)
{
szBuffer[0] = L'\0';
GetDlgItemTextW(hwndDlg, 14001, szBuffer, sizeof(szBuffer)/sizeof(szBuffer[0]));
index = wcslen(szBuffer);
if (index + wcslen(poainfo->pcszFile) + 1 < sizeof(szBuffer)/sizeof(szBuffer[0]))
wcscat(szBuffer, poainfo->pcszFile);
szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
SetDlgItemTextW(hwndDlg, 14001, szBuffer);
ZeroMemory(&Context, sizeof(OPEN_WITH_CONTEXT));
Context.hDlgCtrl = GetDlgItem(hwndDlg, 14002);
LoadOWItems(&Context, poainfo->pcszFile);
SendMessage(Context.hDlgCtrl, LB_SETCURSEL, 0, 0);
}
return TRUE;
case WM_MEASUREITEM:
lpmis = (LPMEASUREITEMSTRUCT) lParam;
lpmis->itemHeight = 64;
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case 14004: /* browse */
BrowseForApplication(hwndDlg);
return TRUE;
case 14002:
if (HIWORD(wParam) == LBN_SELCHANGE)
InvalidateRect((HWND)lParam, NULL, TRUE); // FIXME USE UPDATE RECT
break;
case 14005: /* ok */
pItemContext = GetCurrentOpenItemContext(hwndDlg);
if (pItemContext)
case WM_INITDIALOG:
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG)lParam);
poainfo = (OPENASINFO*)lParam;
if (!(poainfo->oaifInFlags & OAIF_ALLOW_REGISTRATION))
EnableWindow(GetDlgItem(hwndDlg, 14003), FALSE);
if (poainfo->oaifInFlags & OAIF_FORCE_REGISTRATION)
SendDlgItemMessage(hwndDlg, 14003, BM_SETCHECK, BST_CHECKED, 0);
if (poainfo->oaifInFlags & OAIF_HIDE_REGISTRATION)
ShowWindow(GetDlgItem(hwndDlg, 14003), SW_HIDE);
if (poainfo->pcszFile)
{
/* store settings in HKCU path */
StoreNewSettings(poainfo->pcszFile, pItemContext->szAppName);
if (SendDlgItemMessage(hwndDlg, 14003, BM_GETCHECK, 0, 0) == BST_CHECKED)
{
/* set programm as default handler */
SetProgrammAsDefaultHandler(poainfo->pcszFile, pItemContext->szAppName);
}
if (poainfo->oaifInFlags & OAIF_EXEC)
ExecuteOpenItem(pItemContext, poainfo->pcszFile);
szBuffer[0] = L'\0';
GetDlgItemTextW(hwndDlg, 14001, szBuffer, sizeof(szBuffer) / sizeof(szBuffer[0]));
index = wcslen(szBuffer);
if (index + wcslen(poainfo->pcszFile) + 1 < sizeof(szBuffer) / sizeof(szBuffer[0]))
wcscat(szBuffer, poainfo->pcszFile);
szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
SetDlgItemTextW(hwndDlg, 14001, szBuffer);
ZeroMemory(&Context, sizeof(OPEN_WITH_CONTEXT));
Context.hDlgCtrl = GetDlgItem(hwndDlg, 14002);
LoadOWItems(&Context, poainfo->pcszFile);
SendMessage(Context.hDlgCtrl, LB_SETCURSEL, 0, 0);
}
FreeListItems(hwndDlg);
EndDialog(hwndDlg, 1);
return TRUE;
case 14006: /* cancel */
case WM_MEASUREITEM:
lpmis = (LPMEASUREITEMSTRUCT) lParam;
lpmis->itemHeight = 64;
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case 14004: /* browse */
BrowseForApplication(hwndDlg);
return TRUE;
case 14002:
if (HIWORD(wParam) == LBN_SELCHANGE)
InvalidateRect((HWND)lParam, NULL, TRUE); // FIXME USE UPDATE RECT
break;
case 14005: /* ok */
pItemContext = GetCurrentOpenItemContext(hwndDlg);
if (pItemContext)
{
/* store settings in HKCU path */
StoreNewSettings(poainfo->pcszFile, pItemContext->szAppName);
if (SendDlgItemMessage(hwndDlg, 14003, BM_GETCHECK, 0, 0) == BST_CHECKED)
{
/* set programm as default handler */
SetProgrammAsDefaultHandler(poainfo->pcszFile, pItemContext->szAppName);
}
if (poainfo->oaifInFlags & OAIF_EXEC)
ExecuteOpenItem(pItemContext, poainfo->pcszFile);
}
FreeListItems(hwndDlg);
EndDialog(hwndDlg, 1);
return TRUE;
case 14006: /* cancel */
FreeListItems(hwndDlg);
EndDialog(hwndDlg, 0);
return TRUE;
default:
break;
}
break;
case WM_DRAWITEM:
lpdis = (LPDRAWITEMSTRUCT) lParam;
if ((int)lpdis->itemID == -1)
break;
switch (lpdis->itemAction)
{
case ODA_SELECT:
case ODA_DRAWENTIRE:
index = SendMessageW(lpdis->hwndItem, LB_GETCURSEL, 0, 0);
pItemContext = (POPEN_ITEM_CONTEXT)SendMessage(lpdis->hwndItem, LB_GETITEMDATA, lpdis->itemID, (LPARAM) 0);
if ((int)lpdis->itemID == index)
{
/* paint focused item with standard background colour */
HBRUSH hBrush;
hBrush = CreateSolidBrush(RGB(46, 104, 160));
FillRect(lpdis->hDC, &lpdis->rcItem, hBrush);
DeleteObject(hBrush);
preBkColor = SetBkColor(lpdis->hDC, RGB(46, 104, 160));
}
else
{
/* paint non focused item with white background */
HBRUSH hBrush;
hBrush = CreateSolidBrush(RGB(255, 255, 255));
FillRect(lpdis->hDC, &lpdis->rcItem, hBrush);
DeleteObject(hBrush);
preBkColor = SetBkColor(lpdis->hDC, RGB(255, 255, 255));
}
SendMessageW(lpdis->hwndItem, LB_GETTEXT, lpdis->itemID, (LPARAM) szBuffer);
/* paint the icon */
DrawIconEx(lpdis->hDC, lpdis->rcItem.left, lpdis->rcItem.top, pItemContext->hIcon, 0, 0, 0, NULL, DI_NORMAL);
/* get text size */
GetTextMetrics(lpdis->hDC, &mt);
/* paint app name */
YOffset = lpdis->rcItem.top + mt.tmHeight / 2;
TextOutW(lpdis->hDC, 45, YOffset, szBuffer, wcslen(szBuffer));
/* paint manufacturer description */
YOffset += mt.tmHeight + 2;
preColor = SetTextColor(lpdis->hDC, RGB(192, 192, 192));
if (pItemContext->szManufacturer[0])
TextOutW(lpdis->hDC, 45, YOffset, pItemContext->szManufacturer, wcslen(pItemContext->szManufacturer));
else
TextOutW(lpdis->hDC, 45, YOffset, pItemContext->szAppName, wcslen(pItemContext->szAppName));
SetTextColor(lpdis->hDC, preColor);
SetBkColor(lpdis->hDC, preBkColor);
break;
}
break;
case WM_CLOSE:
FreeListItems(hwndDlg);
EndDialog(hwndDlg, 0);
return TRUE;
default:
break;
}
break;
case WM_DRAWITEM:
lpdis = (LPDRAWITEMSTRUCT) lParam;
if ((int)lpdis->itemID == -1)
break;
switch (lpdis->itemAction)
{
case ODA_SELECT:
case ODA_DRAWENTIRE:
index = SendMessageW(lpdis->hwndItem, LB_GETCURSEL, 0, 0);
pItemContext =(POPEN_ITEM_CONTEXT)SendMessage(lpdis->hwndItem, LB_GETITEMDATA, lpdis->itemID, (LPARAM) 0);
if ((int)lpdis->itemID == index)
{
/* paint focused item with standard background colour */
HBRUSH hBrush;
hBrush = CreateSolidBrush(RGB(46, 104, 160));
FillRect(lpdis->hDC, &lpdis->rcItem, hBrush);
DeleteObject(hBrush);
preBkColor = SetBkColor(lpdis->hDC, RGB(46, 104, 160));
}
else
{
/* paint non focused item with white background */
HBRUSH hBrush;
hBrush = CreateSolidBrush(RGB(255, 255, 255));
FillRect(lpdis->hDC, &lpdis->rcItem, hBrush);
DeleteObject(hBrush);
preBkColor = SetBkColor(lpdis->hDC, RGB(255, 255, 255));
}
SendMessageW(lpdis->hwndItem, LB_GETTEXT, lpdis->itemID, (LPARAM) szBuffer);
/* paint the icon */
DrawIconEx(lpdis->hDC, lpdis->rcItem.left,lpdis->rcItem.top, pItemContext->hIcon, 0, 0, 0, NULL, DI_NORMAL);
/* get text size */
GetTextMetrics(lpdis->hDC, &mt);
/* paint app name */
YOffset = lpdis->rcItem.top + mt.tmHeight/2;
TextOutW(lpdis->hDC, 45, YOffset, szBuffer, wcslen(szBuffer));
/* paint manufacturer description */
YOffset += mt.tmHeight + 2;
preColor = SetTextColor(lpdis->hDC, RGB(192, 192, 192));
if (pItemContext->szManufacturer[0])
TextOutW(lpdis->hDC, 45, YOffset, pItemContext->szManufacturer, wcslen(pItemContext->szManufacturer));
else
TextOutW(lpdis->hDC, 45, YOffset, pItemContext->szAppName, wcslen(pItemContext->szAppName));
SetTextColor(lpdis->hDC, preColor);
SetBkColor(lpdis->hDC, preBkColor);
break;
}
break;
case WM_CLOSE:
FreeListItems(hwndDlg);
EndDialog(hwndDlg, 0);
return TRUE;
default:
break;
}
return FALSE;
}
@ -655,12 +655,12 @@ FreeMenuItemContext(HMENU hMenu)
for(Index = 0; Index < Count; Index++)
{
if (GetMenuItemInfoW(hMenu, Index, TRUE, &mii))
{
if ((mii.fType & MFT_SEPARATOR) || mii.dwItemData == 0)
continue;
HeapFree(GetProcessHeap(), 0, (LPVOID)mii.dwItemData);
}
if (GetMenuItemInfoW(hMenu, Index, TRUE, &mii))
{
if ((mii.fType & MFT_SEPARATOR) || mii.dwItemData == 0)
continue;
HeapFree(GetProcessHeap(), 0, (LPVOID)mii.dwItemData);
}
}
}
@ -707,7 +707,7 @@ COpenWithMenu::InvokeCommand(LPCMINVOKECOMMANDINFO lpici )
HRESULT WINAPI
COpenWithMenu::GetCommandString(UINT_PTR idCmd, UINT uType,
UINT* pwReserved, LPSTR pszName, UINT cchMax )
UINT* pwReserved, LPSTR pszName, UINT cchMax )
{
FIXME("%p %lu %u %p %p %u\n", this,
idCmd, uType, pwReserved, pszName, cchMax );
@ -720,7 +720,7 @@ HRESULT WINAPI COpenWithMenu::HandleMenuMsg(
WPARAM wParam,
LPARAM lParam)
{
TRACE("This %p uMsg %x\n",this, uMsg);
TRACE("This %p uMsg %x\n", this, uMsg);
return E_NOTIMPL;
}
@ -768,17 +768,17 @@ GetManufacturer(WCHAR * szAppName, POPEN_ITEM_CONTEXT pContext)
/* query lang code */
if(VerQueryValueW(pBuf, const_cast<LPWSTR>(wTranslation), (LPVOID *)&lplangcode, &VerSize))
{
/* FIXME find language from current locale / if not available,
* default to english
* for now default to first available language
*/
lang = lplangcode->lang;
code = lplangcode->code;
/* FIXME find language from current locale / if not available,
* default to english
* for now default to first available language
*/
lang = lplangcode->lang;
code = lplangcode->code;
}
/* set up format */
swprintf(szBuffer, wFormat, lang, code);
/* query manufacturer */
pResult = NULL;
pResult = NULL;
bResult = VerQueryValueW(pBuf, szBuffer, (LPVOID *)&pResult, &VerSize);
if (VerSize && bResult && pResult)
@ -833,9 +833,9 @@ InsertOpenWithItem(POPEN_WITH_CONTEXT pContext, WCHAR * szAppName)
}
else
{
/* get default icon */
pItemContext->hIcon = ExtractIconW(shell32_hInstance, szAppName, 0);
/* get manufacturer */
/* get default icon */
pItemContext->hIcon = ExtractIconW(shell32_hInstance, szAppName, 0);
/* get manufacturer */
GetManufacturer(pItemContext->szAppName, pItemContext);
index = SendMessageW(pContext->hDlgCtrl, LB_ADDSTRING, 0, (LPARAM)Buffer);
if (index != LB_ERR)
@ -846,7 +846,7 @@ InsertOpenWithItem(POPEN_WITH_CONTEXT pContext, WCHAR * szAppName)
void
AddItemFromProgIDList(POPEN_WITH_CONTEXT pContext, HKEY hKey)
{
FIXME("implement me :)))\n");
FIXME("implement me :)))\n");
}
HANDLE
@ -1020,11 +1020,11 @@ COpenWithMenu::SHEOW_LoadOpenWithItems(IDataObject *pdtobj)
HRESULT hr;
LPIDA pida;
LPCITEMIDLIST pidl_folder;
LPCITEMIDLIST pidl_child;
LPCITEMIDLIST pidl;
LPCITEMIDLIST pidl_child;
LPCITEMIDLIST pidl;
DWORD dwType;
LPWSTR pszExt;
static const WCHAR szShortCut[] = { '.','l','n','k', 0 };
static const WCHAR szShortCut[] = { '.', 'l', 'n', 'k', 0 };
fmt.cfFormat = RegisterClipboardFormatW(CFSTR_SHELLIDLIST);
fmt.ptd = NULL;
@ -1041,7 +1041,7 @@ COpenWithMenu::SHEOW_LoadOpenWithItems(IDataObject *pdtobj)
}
pida = (LPIDA)GlobalLock(medium.hGlobal);
ASSERT(pida->cidl==1);
ASSERT(pida->cidl == 1);
pidl_folder = (LPCITEMIDLIST) ((LPBYTE)pida + pida->aoffset[0]);
pidl_child = (LPCITEMIDLIST) ((LPBYTE)pida + pida->aoffset[1]);
@ -1057,7 +1057,7 @@ COpenWithMenu::SHEOW_LoadOpenWithItems(IDataObject *pdtobj)
return E_OUTOFMEMORY;
}
if (_ILIsDesktop(pidl) || _ILIsMyDocuments(pidl) || _ILIsControlPanel(pidl) || _ILIsNetHood(pidl) ||
_ILIsBitBucket(pidl) || _ILIsDrive(pidl) || _ILIsCPanelStruct(pidl) || _ILIsFolder(pidl))
_ILIsBitBucket(pidl) || _ILIsDrive(pidl) || _ILIsCPanelStruct(pidl) || _ILIsFolder(pidl))
{
TRACE("pidl is a folder\n");
SHFree((void*)pidl);
@ -1123,12 +1123,12 @@ SHOpenWithDialog(HWND hwndParent,
}
ShowWindow(hwnd, SW_SHOWNORMAL);
while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0)
{
if (!IsWindow(hwnd) || !IsDialogMessage(hwnd, &msg))
while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0)
{
if (!IsWindow(hwnd) || !IsDialogMessage(hwnd, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return S_OK;

View file

@ -40,15 +40,15 @@ This folder should not exist. It is just a file system folder...
class CDesktopFolderEnumY :
public IEnumIDListImpl
{
private:
public:
CDesktopFolderEnumY();
~CDesktopFolderEnumY();
HRESULT WINAPI Initialize(LPWSTR szTarget, DWORD dwFlags);
private:
public:
CDesktopFolderEnumY();
~CDesktopFolderEnumY();
HRESULT WINAPI Initialize(LPWSTR szTarget, DWORD dwFlags);
BEGIN_COM_MAP(CDesktopFolderEnumY)
COM_INTERFACE_ENTRY_IID(IID_IEnumIDList, IEnumIDList)
END_COM_MAP()
BEGIN_COM_MAP(CDesktopFolderEnumY)
COM_INTERFACE_ENTRY_IID(IID_IEnumIDList, IEnumIDList)
END_COM_MAP()
};
static const shvheader AdminToolsSFHeader[] = {
@ -76,7 +76,7 @@ CDesktopFolderEnumY::~CDesktopFolderEnumY()
HRESULT WINAPI CDesktopFolderEnumY::Initialize(LPWSTR szTarget, DWORD dwFlags)
{
TRACE("(%p)->(flags=0x%08x)\n", this, dwFlags);
/* enumerate the elements in %windir%\desktop */
/* enumerate the elements in %windir%\desktop */
return CreateFolderEnumList(szTarget, dwFlags);
}
@ -117,11 +117,11 @@ HRESULT WINAPI CAdminToolsFolder::FinalConstruct()
*
*/
HRESULT WINAPI CAdminToolsFolder::ParseDisplayName (HWND hwndOwner, LPBC pbc, LPOLESTR lpszDisplayName,
DWORD * pchEaten, LPITEMIDLIST * ppidl, DWORD * pdwAttributes)
DWORD * pchEaten, LPITEMIDLIST * ppidl, DWORD * pdwAttributes)
{
TRACE("(%p)->(HWND=%p,%p,%p=%s,%p,pidl=%p,%p)\n",
this, hwndOwner, pbc, lpszDisplayName, debugstr_w(lpszDisplayName),
pchEaten, ppidl, pdwAttributes);
this, hwndOwner, pbc, lpszDisplayName, debugstr_w(lpszDisplayName),
pchEaten, ppidl, pdwAttributes);
*ppidl = 0;
if (pchEaten)
@ -171,7 +171,7 @@ HRESULT WINAPI CAdminToolsFolder::EnumObjects(HWND hwndOwner, DWORD dwFlags, LPE
HRESULT WINAPI CAdminToolsFolder::BindToObject(LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut)
{
TRACE ("(%p)->(pidl=%p,%p,%s,%p)\n", this,
pidl, pbcReserved, shdebugstr_guid (&riid), ppvOut);
pidl, pbcReserved, shdebugstr_guid (&riid), ppvOut);
return SHELL32_BindToChild (pidlRoot, NULL, pidl, riid, ppvOut);
}
@ -210,7 +210,7 @@ HRESULT WINAPI CAdminToolsFolder::CreateViewObject(HWND hwndOwner, REFIID riid,
HRESULT hr = E_INVALIDARG;
TRACE ("(%p)->(hwnd=%p,%s,%p)\n", this,
hwndOwner, shdebugstr_guid (&riid), ppvOut);
hwndOwner, shdebugstr_guid (&riid), ppvOut);
if (!ppvOut)
return hr;
@ -288,14 +288,14 @@ HRESULT WINAPI CAdminToolsFolder::GetAttributesOf(UINT cidl, LPCITEMIDLIST *apid
*
*/
HRESULT WINAPI CAdminToolsFolder::GetUIObjectOf(HWND hwndOwner, UINT cidl, LPCITEMIDLIST *apidl,
REFIID riid, UINT * prgfInOut, LPVOID * ppvOut)
REFIID riid, UINT * prgfInOut, LPVOID * ppvOut)
{
LPITEMIDLIST pidl;
CComPtr<IUnknown> pObj;
HRESULT hr = E_INVALIDARG;
TRACE ("(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n",
this, hwndOwner, cidl, apidl, shdebugstr_guid (&riid), prgfInOut, ppvOut);
this, hwndOwner, cidl, apidl, shdebugstr_guid (&riid), prgfInOut, ppvOut);
if (!ppvOut)
return hr;
@ -361,7 +361,7 @@ HRESULT WINAPI CAdminToolsFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwF
if (!strRet)
return E_INVALIDARG;
pszPath = (LPWSTR)CoTaskMemAlloc((MAX_PATH +1) * sizeof(WCHAR));
pszPath = (LPWSTR)CoTaskMemAlloc((MAX_PATH + 1) * sizeof(WCHAR));
if (!pszPath)
return E_OUTOFMEMORY;
@ -370,7 +370,7 @@ HRESULT WINAPI CAdminToolsFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwF
if (!pidl->mkid.cb)
{
if ((GET_SHGDN_RELATION (dwFlags) == SHGDN_NORMAL) &&
(GET_SHGDN_FOR (dwFlags) & SHGDN_FORPARSING))
(GET_SHGDN_FOR (dwFlags) & SHGDN_FORPARSING))
wcscpy(pszPath, szTarget);
else if (!HCR_GetClassNameW(CLSID_AdminFolderShortcut, pszPath, MAX_PATH))
hr = E_FAIL;
@ -378,8 +378,8 @@ HRESULT WINAPI CAdminToolsFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwF
else if (_ILIsPidlSimple(pidl))
{
if ((GET_SHGDN_FOR(dwFlags) & SHGDN_FORPARSING) &&
(GET_SHGDN_RELATION(dwFlags) != SHGDN_INFOLDER) &&
szTarget)
(GET_SHGDN_RELATION(dwFlags) != SHGDN_INFOLDER) &&
szTarget)
{
wcscpy(pszPath, szTarget);
pOffset = PathAddBackslashW(pszPath);
@ -402,16 +402,16 @@ HRESULT WINAPI CAdminToolsFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwF
hr = E_FAIL;
}
}
else if (_ILIsSpecialFolder(pidl))
else if (_ILIsSpecialFolder(pidl))
{
BOOL bSimplePidl = _ILIsPidlSimple(pidl);
if (bSimplePidl)
if (bSimplePidl)
{
if (!_ILSimpleGetTextW(pidl, pszPath, MAX_PATH))
hr = E_FAIL;
}
else if ((dwFlags & SHGDN_FORPARSING) && !bSimplePidl)
else if ((dwFlags & SHGDN_FORPARSING) && !bSimplePidl)
{
int len = 0;
@ -425,7 +425,7 @@ HRESULT WINAPI CAdminToolsFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwF
return E_OUTOFMEMORY;
}
}
}
}
if (SUCCEEDED(hr))
@ -453,7 +453,7 @@ HRESULT WINAPI CAdminToolsFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwF
* LPITEMIDLIST* ppidlOut) //[out] simple pidl returned
*/
HRESULT WINAPI CAdminToolsFolder::SetNameOf (HWND hwndOwner, LPCITEMIDLIST pidl, /* simple pidl */
LPCOLESTR lpName, DWORD dwFlags, LPITEMIDLIST * pPidlOut)
LPCOLESTR lpName, DWORD dwFlags, LPITEMIDLIST * pPidlOut)
{
FIXME ("(%p)->(%p,pidl=%p,%s,%lu,%p)\n", this, hwndOwner, pidl,
debugstr_w (lpName), dwFlags, pPidlOut);
@ -522,20 +522,20 @@ HRESULT WINAPI CAdminToolsFolder::GetDetailsOf (LPCITEMIDLIST pidl, UINT iColumn
psd->str.uType = STRRET_CSTR;
switch (iColumn)
{
case COLUMN_NAME:
psd->str.uType = STRRET_WSTR;
hr = GetDisplayNameOf(pidl,
SHGDN_NORMAL | SHGDN_INFOLDER, &psd->str);
break;
case COLUMN_SIZE:
_ILGetFileSize (pidl, psd->str.cStr, MAX_PATH);
break;
case COLUMN_TYPE:
_ILGetFileType (pidl, psd->str.cStr, MAX_PATH);
break;
case COLUMN_DATE:
_ILGetFileDate (pidl, psd->str.cStr, MAX_PATH);
break;
case COLUMN_NAME:
psd->str.uType = STRRET_WSTR;
hr = GetDisplayNameOf(pidl,
SHGDN_NORMAL | SHGDN_INFOLDER, &psd->str);
break;
case COLUMN_SIZE:
_ILGetFileSize (pidl, psd->str.cStr, MAX_PATH);
break;
case COLUMN_TYPE:
_ILGetFileType (pidl, psd->str.cStr, MAX_PATH);
break;
case COLUMN_DATE:
_ILGetFileDate (pidl, psd->str.cStr, MAX_PATH);
break;
}
return hr;

View file

@ -36,19 +36,19 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell);
class CControlPanelEnum :
public IEnumIDListImpl
{
private:
public:
CControlPanelEnum();
~CControlPanelEnum();
HRESULT WINAPI Initialize(DWORD dwFlags);
BOOL RegisterCPanelApp(LPCSTR path);
int RegisterRegistryCPanelApps(HKEY hkey_root, LPCSTR szRepPath);
int RegisterCPanelFolders(HKEY hkey_root, LPCSTR szRepPath);
BOOL CreateCPanelEnumList(DWORD dwFlags);
private:
public:
CControlPanelEnum();
~CControlPanelEnum();
HRESULT WINAPI Initialize(DWORD dwFlags);
BOOL RegisterCPanelApp(LPCSTR path);
int RegisterRegistryCPanelApps(HKEY hkey_root, LPCSTR szRepPath);
int RegisterCPanelFolders(HKEY hkey_root, LPCSTR szRepPath);
BOOL CreateCPanelEnumList(DWORD dwFlags);
BEGIN_COM_MAP(CControlPanelEnum)
COM_INTERFACE_ENTRY_IID(IID_IEnumIDList, IEnumIDList)
END_COM_MAP()
BEGIN_COM_MAP(CControlPanelEnum)
COM_INTERFACE_ENTRY_IID(IID_IEnumIDList, IEnumIDList)
END_COM_MAP()
};
/***********************************************************************
@ -91,7 +91,7 @@ static LPITEMIDLIST _ILCreateCPanelApplet(LPCSTR pszName, LPCSTR pszDisplayName,
/* Allocate PIDL */
cbData = sizeof(pidl->mkid.cb) + sizeof(pData->type) + sizeof(pData->u.cpanel) - sizeof(pData->u.cpanel.szName)
+ cchName + cchDisplayName + cchComment + 3;
+ cchName + cchDisplayName + cchComment + 3;
pidl = (LPITEMIDLIST)SHAlloc(cbData + sizeof(WORD));
if (!pidl)
return NULL;
@ -127,7 +127,7 @@ static PIDLCPanelStruct *_ILGetCPanelPointer(LPCITEMIDLIST pidl)
LPPIDLDATA pdata = _ILGetDataPointer(pidl);
if (pdata && pdata->type == PT_CPLAPPLET)
return (PIDLCPanelStruct *)&(pdata->u.cpanel);
return (PIDLCPanelStruct *) & (pdata->u.cpanel);
return NULL;
}
@ -309,9 +309,9 @@ HRESULT WINAPI CControlPanelFolder::FinalConstruct()
* ISF_ControlPanel_fnParseDisplayName
*/
HRESULT WINAPI CControlPanelFolder::ParseDisplayName(HWND hwndOwner,
LPBC pbc,
LPOLESTR lpszDisplayName,
DWORD * pchEaten, LPITEMIDLIST * ppidl, DWORD * pdwAttributes)
LPBC pbc,
LPOLESTR lpszDisplayName,
DWORD * pchEaten, LPITEMIDLIST * ppidl, DWORD * pdwAttributes)
{
WCHAR szElement[MAX_PATH];
LPCWSTR szNext = NULL;
@ -349,7 +349,7 @@ HRESULT WINAPI CControlPanelFolder::ParseDisplayName(HWND hwndOwner,
if (szNext && *szNext)
{
hr = SHELL32_ParseNextElement(this, hwndOwner, pbc,
&pidlTemp, (LPOLESTR) szNext, pchEaten, pdwAttributes);
&pidlTemp, (LPOLESTR) szNext, pchEaten, pdwAttributes);
}
else
{
@ -445,21 +445,21 @@ HRESULT WINAPI CControlPanelFolder::CreateViewObject(HWND hwndOwner, REFIID riid
TRACE("(%p)->(hwnd=%p,%s,%p)\n", this, hwndOwner, shdebugstr_guid(&riid), ppvOut);
if (ppvOut) {
*ppvOut = NULL;
*ppvOut = NULL;
if (IsEqualIID(riid, IID_IDropTarget)) {
WARN("IDropTarget not implemented\n");
hr = E_NOTIMPL;
} else if (IsEqualIID(riid, IID_IContextMenu)) {
WARN("IContextMenu not implemented\n");
hr = E_NOTIMPL;
} else if (IsEqualIID(riid, IID_IShellView)) {
hr = IShellView_Constructor((IShellFolder *)this, &pShellView);
if (pShellView) {
hr = pShellView->QueryInterface(riid, ppvOut);
if (IsEqualIID(riid, IID_IDropTarget)) {
WARN("IDropTarget not implemented\n");
hr = E_NOTIMPL;
} else if (IsEqualIID(riid, IID_IContextMenu)) {
WARN("IContextMenu not implemented\n");
hr = E_NOTIMPL;
} else if (IsEqualIID(riid, IID_IShellView)) {
hr = IShellView_Constructor((IShellFolder *)this, &pShellView);
if (pShellView) {
hr = pShellView->QueryInterface(riid, ppvOut);
}
}
}
}
TRACE("--(%p)->(interface=%p)\n", this, ppvOut);
return hr;
}
@ -509,52 +509,52 @@ HRESULT WINAPI CControlPanelFolder::GetAttributesOf(UINT cidl, LPCITEMIDLIST * a
*
*/
HRESULT WINAPI CControlPanelFolder::GetUIObjectOf(HWND hwndOwner,
UINT cidl, LPCITEMIDLIST * apidl, REFIID riid, UINT * prgfInOut, LPVOID * ppvOut)
UINT cidl, LPCITEMIDLIST * apidl, REFIID riid, UINT * prgfInOut, LPVOID * ppvOut)
{
LPITEMIDLIST pidl;
IUnknown *pObj = NULL;
HRESULT hr = E_INVALIDARG;
TRACE("(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n",
this, hwndOwner, cidl, apidl, shdebugstr_guid(&riid), prgfInOut, ppvOut);
this, hwndOwner, cidl, apidl, shdebugstr_guid(&riid), prgfInOut, ppvOut);
if (ppvOut) {
*ppvOut = NULL;
*ppvOut = NULL;
if (IsEqualIID(riid, IID_IContextMenu) &&(cidl >= 1)) {
// TODO
// create a seperate item struct
//
pObj = (IContextMenu *)this;
this->apidl = apidl;
cidl = cidl;
pObj->AddRef();
hr = S_OK;
} else if (IsEqualIID(riid, IID_IDataObject) &&(cidl >= 1)) {
hr = IDataObject_Constructor(hwndOwner, pidlRoot, apidl, cidl, (IDataObject **)&pObj);
} else if (IsEqualIID(riid, IID_IExtractIconA) &&(cidl == 1)) {
pidl = ILCombine(pidlRoot, apidl[0]);
pObj = (LPUNKNOWN) IExtractIconA_Constructor(pidl);
SHFree(pidl);
hr = S_OK;
} else if (IsEqualIID(riid, IID_IExtractIconW) &&(cidl == 1)) {
pidl = ILCombine(pidlRoot, apidl[0]);
pObj = (LPUNKNOWN) IExtractIconW_Constructor(pidl);
SHFree(pidl);
hr = S_OK;
} else if ((IsEqualIID(riid, IID_IShellLinkW) || IsEqualIID(riid, IID_IShellLinkA))
&& (cidl == 1)) {
pidl = ILCombine(pidlRoot, apidl[0]);
hr = IShellLink_ConstructFromFile(NULL, riid, pidl,(LPVOID*)&pObj);
SHFree(pidl);
} else {
hr = E_NOINTERFACE;
}
if (IsEqualIID(riid, IID_IContextMenu) && (cidl >= 1)) {
// TODO
// create a seperate item struct
//
pObj = (IContextMenu *)this;
this->apidl = apidl;
cidl = cidl;
pObj->AddRef();
hr = S_OK;
} else if (IsEqualIID(riid, IID_IDataObject) && (cidl >= 1)) {
hr = IDataObject_Constructor(hwndOwner, pidlRoot, apidl, cidl, (IDataObject **)&pObj);
} else if (IsEqualIID(riid, IID_IExtractIconA) && (cidl == 1)) {
pidl = ILCombine(pidlRoot, apidl[0]);
pObj = (LPUNKNOWN) IExtractIconA_Constructor(pidl);
SHFree(pidl);
hr = S_OK;
} else if (IsEqualIID(riid, IID_IExtractIconW) && (cidl == 1)) {
pidl = ILCombine(pidlRoot, apidl[0]);
pObj = (LPUNKNOWN) IExtractIconW_Constructor(pidl);
SHFree(pidl);
hr = S_OK;
} else if ((IsEqualIID(riid, IID_IShellLinkW) || IsEqualIID(riid, IID_IShellLinkA))
&& (cidl == 1)) {
pidl = ILCombine(pidlRoot, apidl[0]);
hr = IShellLink_ConstructFromFile(NULL, riid, pidl, (LPVOID*)&pObj);
SHFree(pidl);
} else {
hr = E_NOINTERFACE;
}
if (SUCCEEDED(hr) && !pObj)
hr = E_OUTOFMEMORY;
if (SUCCEEDED(hr) && !pObj)
hr = E_OUTOFMEMORY;
*ppvOut = pObj;
*ppvOut = pObj;
}
TRACE("(%p)->hr=0x%08x\n", this, hr);
return hr;
@ -591,7 +591,7 @@ HRESULT WINAPI CControlPanelFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD d
{
BOOL bSimplePidl = _ILIsPidlSimple(pidl);
SFGAOF Attr = SFGAO_FILESYSTEM;
SHELL32_GetItemAttributes(this, pidl, &Attr);
if (Attr & SFGAO_FILESYSTEM)
{
@ -644,7 +644,7 @@ HRESULT WINAPI CControlPanelFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD d
* LPITEMIDLIST* ppidlOut) //[out] simple pidl returned
*/
HRESULT WINAPI CControlPanelFolder::SetNameOf(HWND hwndOwner, LPCITEMIDLIST pidl, /*simple pidl */
LPCOLESTR lpName, DWORD dwFlags, LPITEMIDLIST * pPidlOut)
LPCOLESTR lpName, DWORD dwFlags, LPITEMIDLIST * pPidlOut)
{
FIXME("(%p)->(%p,pidl=%p,%s,%u,%p)\n", this, hwndOwner, pidl, debugstr_w(lpName), dwFlags, pPidlOut);
return E_FAIL;
@ -693,26 +693,26 @@ HRESULT WINAPI CControlPanelFolder::GetDetailsOf(LPCITEMIDLIST pidl, UINT iColum
TRACE("(%p)->(%p %i %p)\n", this, pidl, iColumn, psd);
if (!psd || iColumn >= CONROLPANELSHELLVIEWCOLUMNS)
return E_INVALIDARG;
return E_INVALIDARG;
if (!pidl) {
psd->fmt = ControlPanelSFHeader[iColumn].fmt;
psd->cxChar = ControlPanelSFHeader[iColumn].cxChar;
psd->str.uType = STRRET_CSTR;
LoadStringA(shell32_hInstance, ControlPanelSFHeader[iColumn].colnameid, psd->str.cStr, MAX_PATH);
return S_OK;
psd->fmt = ControlPanelSFHeader[iColumn].fmt;
psd->cxChar = ControlPanelSFHeader[iColumn].cxChar;
psd->str.uType = STRRET_CSTR;
LoadStringA(shell32_hInstance, ControlPanelSFHeader[iColumn].colnameid, psd->str.cStr, MAX_PATH);
return S_OK;
} else {
psd->str.cStr[0] = 0x00;
psd->str.uType = STRRET_CSTR;
switch(iColumn) {
case 0: /* name */
hr = GetDisplayNameOf(pidl, SHGDN_NORMAL | SHGDN_INFOLDER, &psd->str);
break;
case 1: /* comment */
_ILGetFileType(pidl, psd->str.cStr, MAX_PATH);
break;
}
hr = S_OK;
psd->str.cStr[0] = 0x00;
psd->str.uType = STRRET_CSTR;
switch(iColumn) {
case 0: /* name */
hr = GetDisplayNameOf(pidl, SHGDN_NORMAL | SHGDN_INFOLDER, &psd->str);
break;
case 1: /* comment */
_ILGetFileType(pidl, psd->str.cStr, MAX_PATH);
break;
}
hr = S_OK;
}
return hr;
@ -731,7 +731,7 @@ HRESULT WINAPI CControlPanelFolder::GetClassID(CLSID *lpClassId)
TRACE("(%p)\n", this);
if (!lpClassId)
return E_POINTER;
return E_POINTER;
*lpClassId = CLSID_ControlPanel;
return S_OK;
@ -759,7 +759,7 @@ HRESULT WINAPI CControlPanelFolder::GetCurFolder(LPITEMIDLIST * pidl)
TRACE("(%p)->(%p)\n", this, pidl);
if (!pidl)
return E_POINTER;
return E_POINTER;
*pidl = ILClone(pidlRoot);
return S_OK;
}
@ -769,7 +769,7 @@ HRESULT CPanel_GetIconLocationW(LPCITEMIDLIST pidl, LPWSTR szIconFile, UINT cchM
PIDLCPanelStruct* pcpanel = _ILGetCPanelPointer(pidl);
if (!pcpanel)
return E_INVALIDARG;
return E_INVALIDARG;
MultiByteToWideChar(CP_ACP, 0, pcpanel->szName, -1, szIconFile, cchMax);
*piIndex = (int)pcpanel->iconIdx != -1 ? pcpanel->iconIdx : 0;
@ -802,7 +802,7 @@ ExecuteAppletFromCLSID(LPOLESTR pOleStr)
return E_FAIL;
}
if (!ExpandEnvironmentStringsW(szCmd, szExpCmd, sizeof(szExpCmd)/sizeof(WCHAR)))
if (!ExpandEnvironmentStringsW(szCmd, szExpCmd, sizeof(szExpCmd) / sizeof(WCHAR)))
return E_FAIL;
ZeroMemory(&si, sizeof(si));
@ -818,7 +818,7 @@ ExecuteAppletFromCLSID(LPOLESTR pOleStr)
HRESULT WINAPI CControlPanelFolder::Execute(LPSHELLEXECUTEINFOW psei)
{
static const WCHAR wCplopen[] = {'c','p','l','o','p','e','n','\0'};
static const WCHAR wCplopen[] = {'c', 'p', 'l', 'o', 'p', 'e', 'n', '\0'};
SHELLEXECUTEINFOW sei_tmp;
PIDLCPanelStruct* pcpanel;
WCHAR path[MAX_PATH];
@ -853,13 +853,13 @@ HRESULT WINAPI CControlPanelFolder::Execute(LPSHELLEXECUTEINFOW psei)
path[0] = '\"';
/* Return value from MultiByteToWideChar includes terminating NUL, which
* compensates for the starting double quote we just put in */
l = MultiByteToWideChar(CP_ACP, 0, pcpanel->szName, -1, path+1, MAX_PATH);
l = MultiByteToWideChar(CP_ACP, 0, pcpanel->szName, -1, path + 1, MAX_PATH);
/* pass applet name to Control_RunDLL to distinguish between applets in one .cpl file */
path[l++] = '"';
path[l] = '\0';
MultiByteToWideChar(CP_ACP, 0, pcpanel->szName+pcpanel->offsDispName, -1, params, MAX_PATH);
MultiByteToWideChar(CP_ACP, 0, pcpanel->szName + pcpanel->offsDispName, -1, params, MAX_PATH);
memcpy(&sei_tmp, psei, sizeof(sei_tmp));
sei_tmp.lpFile = path;
@ -888,19 +888,19 @@ HRESULT WINAPI CControlPanelFolder::Execute(LPSHELLEXECUTEINFOA psei)
TRACE("(%p)->execute(%p)\n", this, psei);
if (!psei)
return E_INVALIDARG;
return E_INVALIDARG;
pcpanel = _ILGetCPanelPointer(ILFindLastID((LPCITEMIDLIST)psei->lpIDList));
if (!pcpanel)
return E_INVALIDARG;
return E_INVALIDARG;
path[0] = '\"';
lstrcpyA(path+1, pcpanel->szName);
lstrcpyA(path + 1, pcpanel->szName);
/* pass applet name to Control_RunDLL to distinguish between applets in one .cpl file */
lstrcatA(path, "\" ");
lstrcatA(path, pcpanel->szName+pcpanel->offsDispName);
lstrcatA(path, pcpanel->szName + pcpanel->offsDispName);
memcpy(&sei_tmp, psei, sizeof(sei_tmp));
sei_tmp.lpFile = path;
@ -908,9 +908,9 @@ HRESULT WINAPI CControlPanelFolder::Execute(LPSHELLEXECUTEINFOA psei)
ret = ShellExecuteExA(&sei_tmp);
if (ret)
return S_OK;
return S_OK;
else
return S_FALSE;
return S_FALSE;
}
/**************************************************************************
@ -933,14 +933,14 @@ HRESULT WINAPI CControlPanelFolder::QueryContextMenu(
TRACE("(%p)->(hmenu=%p indexmenu=%x cmdfirst=%x cmdlast=%x flags=%x )\n",
this, hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags);
if (LoadStringW(shell32_hInstance, IDS_OPEN, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
if (LoadStringW(shell32_hInstance, IDS_OPEN, szBuffer, sizeof(szBuffer) / sizeof(WCHAR)))
{
szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
_InsertMenuItemW(hMenu, indexMenu++, TRUE, IDS_OPEN, MFT_STRING, szBuffer, MFS_DEFAULT); //FIXME identifier
Count++;
}
if (LoadStringW(shell32_hInstance, IDS_CREATELINK, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
if (LoadStringW(shell32_hInstance, IDS_CREATELINK, szBuffer, sizeof(szBuffer) / sizeof(WCHAR)))
{
if (Count)
{
@ -970,29 +970,29 @@ HRESULT WINAPI CControlPanelFolder::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
CComPtr<IShellLinkA> isl;
HRESULT hResult;
TRACE("(%p)->(invcom=%p verb=%p wnd=%p)\n",this,lpcmi,lpcmi->lpVerb, lpcmi->hwnd);
TRACE("(%p)->(invcom=%p verb=%p wnd=%p)\n", this, lpcmi, lpcmi->lpVerb, lpcmi->hwnd);
if (lpcmi->lpVerb == MAKEINTRESOURCEA(IDS_OPEN)) //FIXME
{
ZeroMemory(&sei, sizeof(sei));
sei.cbSize = sizeof(sei);
sei.fMask = SEE_MASK_INVOKEIDLIST;
sei.lpIDList = ILCombine(pidlRoot, apidl[0]);
sei.hwnd = lpcmi->hwnd;
sei.nShow = SW_SHOWNORMAL;
sei.lpVerb = L"open";
ZeroMemory(&sei, sizeof(sei));
sei.cbSize = sizeof(sei);
sei.fMask = SEE_MASK_INVOKEIDLIST;
sei.lpIDList = ILCombine(pidlRoot, apidl[0]);
sei.hwnd = lpcmi->hwnd;
sei.nShow = SW_SHOWNORMAL;
sei.lpVerb = L"open";
if (ShellExecuteExW(&sei) == FALSE)
if (ShellExecuteExW(&sei) == FALSE)
return E_FAIL;
}
else if (lpcmi->lpVerb == MAKEINTRESOURCEA(IDS_CREATELINK)) //FIXME
{
if (!SHGetSpecialFolderPathW(NULL, szPath, CSIDL_DESKTOPDIRECTORY, FALSE))
return E_FAIL;
return E_FAIL;
pszPath = PathAddBackslashW(szPath);
if (!pszPath)
return E_FAIL;
return E_FAIL;
if (GetDisplayNameOf(apidl[0], SHGDN_FORPARSING, &strret) != S_OK)
return E_FAIL;
@ -1025,12 +1025,12 @@ HRESULT WINAPI CControlPanelFolder::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
pcpanel = _ILGetCPanelPointer(ILFindLastID(apidl[0]));
if (pcpanel)
{
strncpy(szTarget, pcpanel->szName, MAX_PATH);
strncpy(szTarget, pcpanel->szName, MAX_PATH);
}
else
{
FIXME("Couldn't retrieve pointer to cpl structure\n");
return E_FAIL;
FIXME("Couldn't retrieve pointer to cpl structure\n");
return E_FAIL;
}
hResult = ShellLink::_CreatorClass::CreateInstance(NULL, IID_IShellLinkA, (void **)&isl);
if (SUCCEEDED(hResult))
@ -1055,7 +1055,7 @@ HRESULT WINAPI CControlPanelFolder::GetCommandString(
LPSTR lpszName,
UINT uMaxNameLen)
{
TRACE("(%p)->(idcom=%lx flags=%x %p name=%p len=%x)\n",this, idCommand, uFlags, lpReserved, lpszName, uMaxNameLen);
TRACE("(%p)->(idcom=%lx flags=%x %p name=%p len=%x)\n", this, idCommand, uFlags, lpReserved, lpszName, uMaxNameLen);
FIXME("unknown command string\n");
return E_FAIL;
@ -1069,7 +1069,7 @@ HRESULT WINAPI CControlPanelFolder::HandleMenuMsg(
WPARAM wParam,
LPARAM lParam)
{
TRACE("ICPanel_IContextMenu_HandleMenuMsg (%p)->(msg=%x wp=%lx lp=%lx)\n",this, uMsg, wParam, lParam);
TRACE("ICPanel_IContextMenu_HandleMenuMsg (%p)->(msg=%x wp=%lx lp=%lx)\n", this, uMsg, wParam, lParam);
return E_NOTIMPL;
}

View file

@ -53,17 +53,17 @@ class CDesktopFolder;
class CDesktopFolderEnum :
public IEnumIDListImpl
{
private:
private:
// CComPtr fDesktopEnumerator;
// CComPtr fCommonDesktopEnumerator;
public:
CDesktopFolderEnum();
~CDesktopFolderEnum();
HRESULT WINAPI Initialize(CDesktopFolder *desktopFolder, HWND hwndOwner, DWORD dwFlags);
public:
CDesktopFolderEnum();
~CDesktopFolderEnum();
HRESULT WINAPI Initialize(CDesktopFolder *desktopFolder, HWND hwndOwner, DWORD dwFlags);
BEGIN_COM_MAP(CDesktopFolderEnum)
COM_INTERFACE_ENTRY_IID(IID_IEnumIDList, IEnumIDList)
END_COM_MAP()
BEGIN_COM_MAP(CDesktopFolderEnum)
COM_INTERFACE_ENTRY_IID(IID_IEnumIDList, IEnumIDList)
END_COM_MAP()
};
WCHAR *build_paths_list(LPCWSTR wszBasePath, int cidl, LPCITEMIDLIST *pidls);
@ -87,11 +87,12 @@ CDesktopFolderEnum::~CDesktopFolderEnum()
{
}
static const WCHAR ClassicStartMenuW[] = {'S','O','F','T','W','A','R','E','\\',
'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\',
'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\','E','x','p','l','o','r','e','r',
'\\','H','i','d','e','D','e','s','k','t','o','p','I','c','o','n','s','\\',
'C','l','a','s','s','i','c','S','t','a','r','t','M','e','n','u','\0' };
static const WCHAR ClassicStartMenuW[] = {'S', 'O', 'F', 'T', 'W', 'A', 'R', 'E', '\\',
'M', 'i', 'c', 'r', 'o', 's', 'o', 'f', 't', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\',
'C', 'u', 'r', 'r', 'e', 'n', 't', 'V', 'e', 'r', 's', 'i', 'o', 'n', '\\', 'E', 'x', 'p', 'l', 'o', 'r', 'e', 'r',
'\\', 'H', 'i', 'd', 'e', 'D', 'e', 's', 'k', 't', 'o', 'p', 'I', 'c', 'o', 'n', 's', '\\',
'C', 'l', 'a', 's', 's', 'i', 'c', 'S', 't', 'a', 'r', 't', 'M', 'e', 'n', 'u', '\0'
};
INT
IsNamespaceExtensionHidden(WCHAR *iid)
@ -107,9 +108,9 @@ IsNamespaceExtensionHidden(WCHAR *iid)
&Result,
&dwResult) != ERROR_SUCCESS)
{
return -1;
return -1;
}
return Result;
}
@ -129,11 +130,12 @@ SetNamespaceExtensionVisibleStatus(const WCHAR * iid, DWORD dwStatus)
/**************************************************************************
* CreateDesktopEnumList()
*/
static const WCHAR Desktop_NameSpaceW[] = { 'S','O','F','T','W','A','R','E',
'\\','M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\',
'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\','E','x','p','l',
'o','r','e','r','\\','D','e','s','k','t','o','p','\\','N','a','m','e','s','p',
'a','c','e','\0' };
static const WCHAR Desktop_NameSpaceW[] = { 'S', 'O', 'F', 'T', 'W', 'A', 'R', 'E',
'\\', 'M', 'i', 'c', 'r', 'o', 's', 'o', 'f', 't', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\',
'C', 'u', 'r', 'r', 'e', 'n', 't', 'V', 'e', 'r', 's', 'i', 'o', 'n', '\\', 'E', 'x', 'p', 'l',
'o', 'r', 'e', 'r', '\\', 'D', 'e', 's', 'k', 't', 'o', 'p', '\\', 'N', 'a', 'm', 'e', 's', 'p',
'a', 'c', 'e', '\0'
};
HRESULT WINAPI CDesktopFolderEnum::Initialize(CDesktopFolder *desktopFolder, HWND hwndOwner, DWORD dwFlags)
{
@ -162,14 +164,14 @@ HRESULT WINAPI CDesktopFolderEnum::Initialize(CDesktopFolder *desktopFolder, HWN
{
if (i == 0)
dwResult = RegOpenKeyExW(HKEY_LOCAL_MACHINE, Desktop_NameSpaceW, 0, KEY_READ, &hkey);
else
else
dwResult = RegOpenKeyExW(HKEY_CURRENT_USER, Desktop_NameSpaceW, 0, KEY_READ, &hkey);
if (dwResult == ERROR_SUCCESS)
{
WCHAR iid[50];
LPITEMIDLIST pidl;
int i=0;
int i = 0;
while (ret)
{
@ -182,19 +184,19 @@ HRESULT WINAPI CDesktopFolderEnum::Initialize(CDesktopFolder *desktopFolder, HWN
{
if (IsNamespaceExtensionHidden(iid) < 1)
{
pidl = _ILCreateGuidFromStrW(iid);
pidl = _ILCreateGuidFromStrW(iid);
if (pidl != NULL)
{
if (!HasItemWithCLSID(pidl))
{
ret = AddToEnumList(pidl);
}
else
{
if (!HasItemWithCLSID(pidl))
{
ret = AddToEnumList(pidl);
}
else
{
SHFree(pidl);
}
}
}
}
}
}
else if (ERROR_NO_MORE_ITEMS == r)
break;
@ -209,7 +211,7 @@ HRESULT WINAPI CDesktopFolderEnum::Initialize(CDesktopFolder *desktopFolder, HWN
{
if (i == 0)
dwResult = RegOpenKeyExW(HKEY_LOCAL_MACHINE, ClassicStartMenuW, 0, KEY_READ, &hkey);
else
else
dwResult = RegOpenKeyExW(HKEY_CURRENT_USER, ClassicStartMenuW, 0, KEY_READ, &hkey);
if (dwResult == ERROR_SUCCESS)
@ -233,7 +235,7 @@ HRESULT WINAPI CDesktopFolderEnum::Initialize(CDesktopFolder *desktopFolder, HWN
{
if (!HasItemWithCLSID(pidl))
{
AddToEnumList(pidl);
AddToEnumList(pidl);
}
else
{
@ -294,7 +296,7 @@ HRESULT WINAPI CDesktopFolder::FinalConstruct()
* to MyComputer
*/
HRESULT WINAPI CDesktopFolder::ParseDisplayName (HWND hwndOwner, LPBC pbc, LPOLESTR lpszDisplayName,
DWORD *pchEaten, LPITEMIDLIST *ppidl, DWORD *pdwAttributes)
DWORD *pchEaten, LPITEMIDLIST *ppidl, DWORD *pdwAttributes)
{
WCHAR szElement[MAX_PATH];
LPCWSTR szNext = NULL;
@ -351,11 +353,11 @@ HRESULT WINAPI CDesktopFolder::ParseDisplayName (HWND hwndOwner, LPBC pbc, LPOLE
if (urldata.nScheme == URL_SCHEME_SHELL) /* handle shell: urls */
{
TRACE ("-- shell url: %s\n", debugstr_w(urldata.pszSuffix));
SHCLSIDFromStringW (urldata.pszSuffix+2, &clsid);
SHCLSIDFromStringW (urldata.pszSuffix + 2, &clsid);
pidlTemp = _ILCreateGuid (PT_GUID, clsid);
}
else
return IEParseDisplayNameWithBCW(CP_ACP,lpszDisplayName,pbc,ppidl);
return IEParseDisplayNameWithBCW(CP_ACP, lpszDisplayName, pbc, ppidl);
}
else
{
@ -391,7 +393,7 @@ HRESULT WINAPI CDesktopFolder::ParseDisplayName (HWND hwndOwner, LPBC pbc, LPOLE
if (szNext && *szNext)
{
hr = SHELL32_ParseNextElement(this, hwndOwner, pbc,
&pidlTemp, (LPOLESTR) szNext, pchEaten, pdwAttributes);
&pidlTemp, (LPOLESTR) szNext, pchEaten, pdwAttributes);
}
else
{
@ -425,19 +427,19 @@ HRESULT WINAPI CDesktopFolder::EnumObjects(HWND hwndOwner, DWORD dwFlags, LPENUM
if (ppEnumIDList == NULL)
return E_POINTER;
*ppEnumIDList = NULL;
ATLTRY (theEnumerator = new CComObject<CDesktopFolderEnum>);
if (theEnumerator == NULL)
return E_OUTOFMEMORY;
hResult = theEnumerator->QueryInterface (IID_IEnumIDList, (void **)&result);
if (FAILED (hResult))
{
delete theEnumerator;
return hResult;
}
hResult = theEnumerator->Initialize (this, hwndOwner, dwFlags);
if (FAILED (hResult))
return hResult;
@ -581,14 +583,14 @@ HRESULT WINAPI CDesktopFolder::GetAttributesOf (UINT cidl, LPCITEMIDLIST *apidl,
*
*/
HRESULT WINAPI CDesktopFolder::GetUIObjectOf(HWND hwndOwner, UINT cidl, LPCITEMIDLIST *apidl,
REFIID riid, UINT * prgfInOut, LPVOID * ppvOut)
REFIID riid, UINT * prgfInOut, LPVOID * ppvOut)
{
LPITEMIDLIST pidl;
IUnknown *pObj = NULL;
HRESULT hr = E_INVALIDARG;
TRACE ("(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n",
this, hwndOwner, cidl, apidl, shdebugstr_guid (&riid), prgfInOut, ppvOut);
this, hwndOwner, cidl, apidl, shdebugstr_guid (&riid), prgfInOut, ppvOut);
if (!ppvOut)
return hr;
@ -656,14 +658,14 @@ HRESULT WINAPI CDesktopFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlag
if (!strRet)
return E_INVALIDARG;
pszPath = (LPWSTR)CoTaskMemAlloc((MAX_PATH +1) * sizeof(WCHAR));
pszPath = (LPWSTR)CoTaskMemAlloc((MAX_PATH + 1) * sizeof(WCHAR));
if (!pszPath)
return E_OUTOFMEMORY;
if (_ILIsDesktop (pidl))
{
if ((GET_SHGDN_RELATION (dwFlags) == SHGDN_NORMAL) &&
(GET_SHGDN_FOR (dwFlags) & SHGDN_FORPARSING))
(GET_SHGDN_FOR (dwFlags) & SHGDN_FORPARSING))
wcscpy(pszPath, sPathTarget);
else
HCR_GetClassNameW(CLSID_ShellDesktop, pszPath, MAX_PATH);
@ -693,12 +695,13 @@ HRESULT WINAPI CDesktopFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlag
{
/* get the "WantsFORPARSING" flag from the registry */
static const WCHAR clsidW[] =
{ 'C','L','S','I','D','\\',0 };
{ 'C', 'L', 'S', 'I', 'D', '\\', 0 };
static const WCHAR shellfolderW[] =
{ '\\','s','h','e','l','l','f','o','l','d','e','r',0 };
{ '\\', 's', 'h', 'e', 'l', 'l', 'f', 'o', 'l', 'd', 'e', 'r', 0 };
static const WCHAR wantsForParsingW[] =
{ 'W','a','n','t','s','F','o','r','P','a','r','s','i','n',
'g',0 };
{ 'W', 'a', 'n', 't', 's', 'F', 'o', 'r', 'P', 'a', 'r', 's', 'i', 'n',
'g', 0
};
WCHAR szRegPath[100];
LONG r;
@ -714,7 +717,7 @@ HRESULT WINAPI CDesktopFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlag
}
if ((GET_SHGDN_RELATION (dwFlags) == SHGDN_NORMAL) &&
bWantsForParsing)
bWantsForParsing)
{
/*
* we need the filesystem path to the destination folder.
@ -744,7 +747,7 @@ HRESULT WINAPI CDesktopFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlag
/* file system folder or file rooted at the desktop */
if ((GET_SHGDN_FOR(dwFlags) == SHGDN_FORPARSING) &&
(GET_SHGDN_RELATION(dwFlags) != SHGDN_INFOLDER))
(GET_SHGDN_RELATION(dwFlags) != SHGDN_INFOLDER))
{
lstrcpynW(pszPath, sPathTarget, MAX_PATH - 1);
PathAddBackslashW(pszPath);
@ -759,7 +762,7 @@ HRESULT WINAPI CDesktopFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlag
{
/* file system folder or file rooted at the AllUsers desktop */
if ((GET_SHGDN_FOR(dwFlags) == SHGDN_FORPARSING) &&
(GET_SHGDN_RELATION(dwFlags) != SHGDN_INFOLDER))
(GET_SHGDN_RELATION(dwFlags) != SHGDN_INFOLDER))
{
SHGetSpecialFolderPathW(0, pszPath, CSIDL_COMMON_DESKTOPDIRECTORY, FALSE);
PathAddBackslashW(pszPath);
@ -769,7 +772,8 @@ HRESULT WINAPI CDesktopFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlag
_ILSimpleGetTextW(pidl, pszPath + cLen, MAX_PATH - cLen);
if (!_ILIsFolder(pidl))
SHELL_FS_ProcessDisplayFilename(pszPath, dwFlags);
} }
}
}
}
else
{
@ -799,8 +803,8 @@ HRESULT WINAPI CDesktopFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlag
CoTaskMemFree(pszPath);
TRACE ("-- (%p)->(%s,0x%08x)\n", this,
strRet->uType == STRRET_CSTR ? strRet->cStr :
debugstr_w(strRet->pOleStr), hr);
strRet->uType == STRRET_CSTR ? strRet->cStr :
debugstr_w(strRet->pOleStr), hr);
return hr;
}
@ -817,7 +821,7 @@ HRESULT WINAPI CDesktopFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlag
* LPITEMIDLIST* ppidlOut) //[out] simple pidl returned
*/
HRESULT WINAPI CDesktopFolder::SetNameOf(HWND hwndOwner, LPCITEMIDLIST pidl, /* simple pidl */
LPCOLESTR lpName, DWORD dwFlags, LPITEMIDLIST *pPidlOut)
LPCOLESTR lpName, DWORD dwFlags, LPITEMIDLIST *pPidlOut)
{
CComPtr<IShellFolder2> psf;
HRESULT hr;
@ -860,7 +864,7 @@ HRESULT WINAPI CDesktopFolder::SetNameOf(HWND hwndOwner, LPCITEMIDLIST pidl,
}
}
if (!memcmp(szSrc, szDest, (wcslen(szDest)+1) * sizeof(WCHAR)))
if (!memcmp(szSrc, szDest, (wcslen(szDest) + 1) * sizeof(WCHAR)))
{
/* src and destination is the same */
hr = S_OK;
@ -879,7 +883,7 @@ HRESULT WINAPI CDesktopFolder::SetNameOf(HWND hwndOwner, LPCITEMIDLIST pidl,
hr = _ILCreateFromPathW(szDest, pPidlOut);
SHChangeNotify (bIsFolder ? SHCNE_RENAMEFOLDER : SHCNE_RENAMEITEM,
SHCNF_PATHW, szSrc, szDest);
SHCNF_PATHW, szSrc, szDest);
return hr;
}
@ -915,7 +919,7 @@ HRESULT WINAPI CDesktopFolder::GetDefaultColumnState(UINT iColumn, DWORD *pcsFla
TRACE ("(%p)\n", this);
if (!pcsFlags || iColumn >= DESKTOPSHELLVIEWCOLUMNS)
return E_INVALIDARG;
return E_INVALIDARG;
*pcsFlags = DesktopSFHeader[iColumn].pcsFlags;
@ -952,22 +956,22 @@ HRESULT WINAPI CDesktopFolder::GetDetailsOf(LPCITEMIDLIST pidl, UINT iColumn, SH
psd->str.uType = STRRET_CSTR;
switch (iColumn)
{
case 0: /* name */
hr = GetDisplayNameOf(pidl,
SHGDN_NORMAL | SHGDN_INFOLDER, &psd->str);
break;
case 1: /* size */
_ILGetFileSize (pidl, psd->str.cStr, MAX_PATH);
break;
case 2: /* type */
_ILGetFileType (pidl, psd->str.cStr, MAX_PATH);
break;
case 3: /* date */
_ILGetFileDate (pidl, psd->str.cStr, MAX_PATH);
break;
case 4: /* attributes */
_ILGetFileAttributes (pidl, psd->str.cStr, MAX_PATH);
break;
case 0: /* name */
hr = GetDisplayNameOf(pidl,
SHGDN_NORMAL | SHGDN_INFOLDER, &psd->str);
break;
case 1: /* size */
_ILGetFileSize (pidl, psd->str.cStr, MAX_PATH);
break;
case 2: /* type */
_ILGetFileType (pidl, psd->str.cStr, MAX_PATH);
break;
case 3: /* date */
_ILGetFileDate (pidl, psd->str.cStr, MAX_PATH);
break;
case 4: /* attributes */
_ILGetFileAttributes (pidl, psd->str.cStr, MAX_PATH);
break;
}
return hr;
@ -1013,19 +1017,19 @@ HRESULT WINAPI CDesktopFolder::GetUniqueName(LPWSTR pwszName, UINT uLen)
HRESULT hr;
WCHAR wszText[MAX_PATH];
WCHAR wszNewFolder[25];
const WCHAR wszFormat[] = {'%','s',' ','%','d',0 };
const WCHAR wszFormat[] = {'%', 's', ' ', '%', 'd', 0 };
LoadStringW(shell32_hInstance, IDS_NEWFOLDER, wszNewFolder, sizeof(wszNewFolder)/sizeof(WCHAR));
LoadStringW(shell32_hInstance, IDS_NEWFOLDER, wszNewFolder, sizeof(wszNewFolder) / sizeof(WCHAR));
TRACE ("(%p)(%p %u)\n", this, pwszName, uLen);
if (uLen < sizeof(wszNewFolder)/sizeof(WCHAR) + 3)
if (uLen < sizeof(wszNewFolder) / sizeof(WCHAR) + 3)
return E_POINTER;
lstrcpynW (pwszName, wszNewFolder, uLen);
hr = EnumObjects(0,
SHCONTF_FOLDERS | SHCONTF_NONFOLDERS | SHCONTF_INCLUDEHIDDEN, &penum);
SHCONTF_FOLDERS | SHCONTF_NONFOLDERS | SHCONTF_INCLUDEHIDDEN, &penum);
if (penum) {
LPITEMIDLIST pidl;
DWORD dwFetched;
@ -1034,7 +1038,7 @@ HRESULT WINAPI CDesktopFolder::GetUniqueName(LPWSTR pwszName, UINT uLen)
next:
penum->Reset ();
while (S_OK == penum->Next(1, &pidl, &dwFetched) &&
dwFetched) {
dwFetched) {
_ILSimpleGetTextW (pidl, wszText, MAX_PATH);
if (0 == lstrcmpiW (wszText, pwszName)) {
_snwprintf (pwszName, uLen, wszFormat, wszNewFolder, i++);
@ -1063,12 +1067,12 @@ HRESULT WINAPI CDesktopFolder::AddFolder(HWND hwnd, LPCWSTR pwszName, LPITEMIDLI
lstrcpynW(wszNewDir, sPathTarget, MAX_PATH);
PathAppendW(wszNewDir, pwszName);
bRes = CreateDirectoryW (wszNewDir, NULL);
if (bRes)
if (bRes)
{
SHChangeNotify (SHCNE_MKDIR, SHCNF_PATHW, wszNewDir, NULL);
hres = S_OK;
if (ppidlOut)
hres = _ILCreateFromPathW(wszNewDir, ppidlOut);
hres = _ILCreateFromPathW(wszNewDir, ppidlOut);
}
return hres;
@ -1087,7 +1091,7 @@ HRESULT WINAPI CDesktopFolder::DeleteItems(UINT cidl, LPCITEMIDLIST *apidl)
int res;
TRACE ("(%p)(%u %p)\n", this, cidl, apidl);
if (cidl==0) return S_OK;
if (cidl == 0) return S_OK;
for(i = 0; i < cidl; i++)
{
@ -1104,10 +1108,10 @@ HRESULT WINAPI CDesktopFolder::DeleteItems(UINT cidl, LPCITEMIDLIST *apidl)
/* FIXME use FormatMessage
* use a similar message resource as in windows
*/
LoadStringW(shell32_hInstance, IDS_DELETEMULTIPLE_TEXT, wszPath, sizeof(wszPath)/sizeof(WCHAR));
LoadStringW(shell32_hInstance, IDS_DELETEMULTIPLE_TEXT, wszPath, sizeof(wszPath) / sizeof(WCHAR));
wszPath[(sizeof(wszPath)/sizeof(WCHAR))-1] = 0;
LoadStringW(shell32_hInstance, IDS_DELETEITEM_CAPTION, wszCaption, sizeof(wszCaption)/sizeof(WCHAR));
LoadStringW(shell32_hInstance, IDS_DELETEITEM_CAPTION, wszCaption, sizeof(wszCaption) / sizeof(WCHAR));
wszCaption[(sizeof(wszCaption)/sizeof(WCHAR))-1] = 0;
res = SHELL_ConfirmMsgBox(GetActiveWindow(), wszPath, wszCaption, NULL, cidl > 1);
@ -1166,7 +1170,7 @@ HRESULT WINAPI CDesktopFolder::DeleteItems(UINT cidl, LPCITEMIDLIST *apidl)
SHFree(pidl);
}
wszCurrentPath += wcslen(wszCurrentPath)+1;
wszCurrentPath += wcslen(wszCurrentPath) + 1;
}
HeapFree(GetProcessHeap(), 0, wszPathsList);
return ret;
@ -1186,7 +1190,7 @@ HRESULT WINAPI CDesktopFolder::CopyItems(IShellFolder *pSFFrom, UINT cidl, LPCIT
TRACE ("(%p)->(%p,%u,%p)\n", this, pSFFrom, cidl, apidl);
pSFFrom->QueryInterface(IID_IPersistFolder2, (LPVOID *)&ppf2);
if (ppf2)
if (ppf2)
{
if (FAILED(ppf2->GetCurFolder(&pidl)))
return E_FAIL;

View file

@ -37,16 +37,16 @@ is what we normally see. However, the folder is a perfectly normal CFSFolder.
class CDesktopFolderEnumZ :
public IEnumIDListImpl
{
private:
public:
CDesktopFolderEnumZ();
~CDesktopFolderEnumZ();
HRESULT WINAPI Initialize(DWORD dwFlags);
BOOL CreateFontsEnumList(DWORD dwFlags);
private:
public:
CDesktopFolderEnumZ();
~CDesktopFolderEnumZ();
HRESULT WINAPI Initialize(DWORD dwFlags);
BOOL CreateFontsEnumList(DWORD dwFlags);
BEGIN_COM_MAP(CDesktopFolderEnumZ)
COM_INTERFACE_ENTRY_IID(IID_IEnumIDList, IEnumIDList)
END_COM_MAP()
BEGIN_COM_MAP(CDesktopFolderEnumZ)
COM_INTERFACE_ENTRY_IID(IID_IEnumIDList, IEnumIDList)
END_COM_MAP()
};
static shvheader FontsSFHeader[] = {
@ -83,7 +83,7 @@ static LPITEMIDLIST _ILCreateFontItem(LPWSTR pszFont, LPWSTR pszFile)
PIDLDATA tmp;
LPITEMIDLIST pidl;
PIDLFontStruct * p;
int size0 = (char*)&tmp.u.cfont.szName-(char*)&tmp.u.cfont;
int size0 = (char*)&tmp.u.cfont.szName - (char*)&tmp.u.cfont;
int size = size0;
tmp.type = 0x00;
@ -96,14 +96,14 @@ static LPITEMIDLIST _ILCreateFontItem(LPWSTR pszFont, LPWSTR pszFile)
if (!pidl)
return pidl;
pidl->mkid.cb = size+2;
memcpy(pidl->mkid.abID, &tmp, 2+size0);
pidl->mkid.cb = size + 2;
memcpy(pidl->mkid.abID, &tmp, 2 + size0);
p = &((PIDLDATA*)pidl->mkid.abID)->u.cfont;
wcscpy(p->szName, pszFont);
wcscpy(p->szName + tmp.u.cfont.offsFile, pszFile);
*(WORD*)((char*)pidl+(size+2)) = 0;
*(WORD*)((char*)pidl + (size + 2)) = 0;
return pidl;
}
@ -111,8 +111,8 @@ static PIDLFontStruct * _ILGetFontStruct(LPCITEMIDLIST pidl)
{
LPPIDLDATA pdata = _ILGetDataPointer(pidl);
if (pdata && pdata->type==0x00)
return (PIDLFontStruct*)&(pdata->u.cfont);
if (pdata && pdata->type == 0x00)
return (PIDLFontStruct*) & (pdata->u.cfont);
return NULL;
}
@ -140,20 +140,20 @@ BOOL CDesktopFolderEnumZ::CreateFontsEnumList(DWORD dwFlags)
pszPath = PathAddBackslashW(szPath);
if (!pszPath)
return FALSE;
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts", 0, KEY_READ, &hKey)!= ERROR_SUCCESS)
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts", 0, KEY_READ, &hKey) != ERROR_SUCCESS)
return FALSE;
Length = pszPath - szPath;
dwIndex = 0;
do
{
dwName = sizeof(szName)/sizeof(WCHAR);
dwFile = sizeof(szFile)/sizeof(WCHAR);
dwName = sizeof(szName) / sizeof(WCHAR);
dwFile = sizeof(szFile) / sizeof(WCHAR);
ret = RegEnumValueW(hKey, dwIndex++, szName, &dwName, NULL, &dwType, (LPBYTE)szFile, &dwFile);
if (ret == ERROR_SUCCESS)
{
szFile[(sizeof(szFile)/sizeof(WCHAR))-1] = L'\0';
if (dwType == REG_SZ && wcslen(szFile) + Length + 1< (sizeof(szPath)/sizeof(WCHAR)))
if (dwType == REG_SZ && wcslen(szFile) + Length + 1 < (sizeof(szPath) / sizeof(WCHAR)))
{
wcscpy(&szPath[Length], szFile);
pidl = _ILCreateFontItem(szName, szPath);
@ -165,7 +165,7 @@ BOOL CDesktopFolderEnumZ::CreateFontsEnumList(DWORD dwFlags)
}
}
}
}while(ret != ERROR_NO_MORE_ITEMS);
} while(ret != ERROR_NO_MORE_ITEMS);
RegCloseKey(hKey);
}
@ -196,13 +196,13 @@ HRESULT WINAPI CFontsFolder::FinalConstruct()
* ISF_Fonts_fnParseDisplayName
*/
HRESULT WINAPI CFontsFolder::ParseDisplayName(HWND hwndOwner, LPBC pbcReserved, LPOLESTR lpszDisplayName,
DWORD * pchEaten, LPITEMIDLIST * ppidl, DWORD * pdwAttributes)
DWORD * pchEaten, LPITEMIDLIST * ppidl, DWORD * pdwAttributes)
{
HRESULT hr = E_UNEXPECTED;
TRACE ("(%p)->(HWND=%p,%p,%p=%s,%p,pidl=%p,%p)\n", this,
hwndOwner, pbcReserved, lpszDisplayName, debugstr_w (lpszDisplayName),
pchEaten, ppidl, pdwAttributes);
hwndOwner, pbcReserved, lpszDisplayName, debugstr_w (lpszDisplayName),
pchEaten, ppidl, pdwAttributes);
*ppidl = 0;
if (pchEaten)
@ -252,7 +252,7 @@ HRESULT WINAPI CFontsFolder::EnumObjects(HWND hwndOwner, DWORD dwFlags, LPENUMID
HRESULT WINAPI CFontsFolder::BindToObject(LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut)
{
TRACE ("(%p)->(pidl=%p,%p,%s,%p)\n", this,
pidl, pbcReserved, shdebugstr_guid (&riid), ppvOut);
pidl, pbcReserved, shdebugstr_guid (&riid), ppvOut);
return SHELL32_BindToChild (pidlRoot, NULL, pidl, riid, ppvOut);
}
@ -263,7 +263,7 @@ HRESULT WINAPI CFontsFolder::BindToObject(LPCITEMIDLIST pidl, LPBC pbcReserved,
HRESULT WINAPI CFontsFolder::BindToStorage(LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut)
{
FIXME ("(%p)->(pidl=%p,%p,%s,%p) stub\n", this,
pidl, pbcReserved, shdebugstr_guid (&riid), ppvOut);
pidl, pbcReserved, shdebugstr_guid (&riid), ppvOut);
*ppvOut = NULL;
return E_NOTIMPL;
@ -292,7 +292,7 @@ HRESULT WINAPI CFontsFolder::CreateViewObject(HWND hwndOwner, REFIID riid, LPVOI
HRESULT hr = E_INVALIDARG;
TRACE ("(%p)->(hwnd=%p,%s,%p)\n", this,
hwndOwner, shdebugstr_guid (&riid), ppvOut);
hwndOwner, shdebugstr_guid (&riid), ppvOut);
if (!ppvOut)
return hr;
@ -327,7 +327,7 @@ HRESULT WINAPI CFontsFolder::GetAttributesOf(UINT cidl, LPCITEMIDLIST *apidl, DW
HRESULT hr = S_OK;
TRACE ("(%p)->(cidl=%d apidl=%p mask=%p (0x%08x))\n", this,
cidl, apidl, rgfInOut, rgfInOut ? *rgfInOut : 0);
cidl, apidl, rgfInOut, rgfInOut ? *rgfInOut : 0);
if (!rgfInOut)
return E_INVALIDARG;
@ -377,14 +377,14 @@ HRESULT WINAPI CFontsFolder::GetAttributesOf(UINT cidl, LPCITEMIDLIST *apidl, DW
*
*/
HRESULT WINAPI CFontsFolder::GetUIObjectOf(HWND hwndOwner, UINT cidl, LPCITEMIDLIST *apidl, REFIID riid,
UINT * prgfInOut, LPVOID * ppvOut)
UINT * prgfInOut, LPVOID * ppvOut)
{
LPITEMIDLIST pidl;
CComPtr<IUnknown> pObj;
HRESULT hr = E_INVALIDARG;
TRACE ("(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n", this,
hwndOwner, cidl, apidl, shdebugstr_guid (&riid), prgfInOut, ppvOut);
hwndOwner, cidl, apidl, shdebugstr_guid (&riid), prgfInOut, ppvOut);
if (!ppvOut)
return hr;
@ -447,7 +447,7 @@ HRESULT WINAPI CFontsFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlags,
pFont = _ILGetFontStruct(pidl);
if (pFont)
{
strRet->pOleStr = (LPWSTR)CoTaskMemAlloc((wcslen(pFont->szName)+1) * sizeof(WCHAR));
strRet->pOleStr = (LPWSTR)CoTaskMemAlloc((wcslen(pFont->szName) + 1) * sizeof(WCHAR));
if (!strRet->pOleStr)
return E_OUTOFMEMORY;
@ -459,7 +459,7 @@ HRESULT WINAPI CFontsFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlags,
WCHAR wszPath[MAX_PATH];
if ((GET_SHGDN_RELATION (dwFlags) == SHGDN_NORMAL) &&
(GET_SHGDN_FOR (dwFlags) & SHGDN_FORPARSING))
(GET_SHGDN_FOR (dwFlags) & SHGDN_FORPARSING))
{
if (!SHGetSpecialFolderPathW(NULL, wszPath, CSIDL_FONTS, FALSE))
return E_FAIL;
@ -493,10 +493,10 @@ HRESULT WINAPI CFontsFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlags,
* ppidlOut [out] simple pidl returned
*/
HRESULT WINAPI CFontsFolder::SetNameOf(HWND hwndOwner, LPCITEMIDLIST pidl, /*simple pidl */
LPCOLESTR lpName, DWORD dwFlags, LPITEMIDLIST * pPidlOut)
LPCOLESTR lpName, DWORD dwFlags, LPITEMIDLIST * pPidlOut)
{
FIXME ("(%p)->(%p,pidl=%p,%s,%u,%p)\n", this,
hwndOwner, pidl, debugstr_w (lpName), dwFlags, pPidlOut);
hwndOwner, pidl, debugstr_w (lpName), dwFlags, pPidlOut);
return E_FAIL;
}
@ -582,7 +582,7 @@ HRESULT WINAPI CFontsFolder::GetDetailsOf(LPCITEMIDLIST pidl, UINT iColumn, SHEL
{
if (SHGetFileInfoW(pfont->szName + pfont->offsFile, 0, &fi, sizeof(fi), SHGFI_TYPENAME))
{
psd->str.pOleStr = (LPWSTR)CoTaskMemAlloc((wcslen(fi.szTypeName)+1) * sizeof(WCHAR));
psd->str.pOleStr = (LPWSTR)CoTaskMemAlloc((wcslen(fi.szTypeName) + 1) * sizeof(WCHAR));
if (!psd->str.pOleStr)
return E_OUTOFMEMORY;
wcscpy(psd->str.pOleStr, fi.szTypeName);
@ -600,7 +600,7 @@ HRESULT WINAPI CFontsFolder::GetDetailsOf(LPCITEMIDLIST pidl, UINT iColumn, SHEL
{
if (GetFileSizeEx(hFile, &FileSize))
{
if (StrFormatByteSizeW(FileSize.QuadPart, buffer, sizeof(buffer)/sizeof(WCHAR)))
if (StrFormatByteSizeW(FileSize.QuadPart, buffer, sizeof(buffer) / sizeof(WCHAR)))
{
psd->str.pOleStr = (LPWSTR)CoTaskMemAlloc(wcslen(buffer) + 1);
if (!psd->str.pOleStr)
@ -630,7 +630,7 @@ HRESULT WINAPI CFontsFolder::GetDetailsOf(LPCITEMIDLIST pidl, UINT iColumn, SHEL
return E_OUTOFMEMORY;
}
break;
}
}
return E_FAIL;
}
@ -699,34 +699,34 @@ HRESULT WINAPI CFontsFolder::QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT
TRACE("(%p)->(hmenu=%p indexmenu=%x cmdfirst=%x cmdlast=%x flags=%x )\n",
this, hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags);
if (LoadStringW(shell32_hInstance, IDS_OPEN, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
if (LoadStringW(shell32_hInstance, IDS_OPEN, szBuffer, sizeof(szBuffer) / sizeof(WCHAR)))
{
szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
_InsertMenuItemW(hMenu, indexMenu++, TRUE, idCmdFirst + Count, MFT_STRING, szBuffer, MFS_DEFAULT);
Count++;
}
if (LoadStringW(shell32_hInstance, IDS_PRINT_VERB, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
if (LoadStringW(shell32_hInstance, IDS_PRINT_VERB, szBuffer, sizeof(szBuffer) / sizeof(WCHAR)))
{
szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
_InsertMenuItemW(hMenu, indexMenu++, TRUE, idCmdFirst + Count++, MFT_STRING, szBuffer, MFS_ENABLED);
}
if (LoadStringW(shell32_hInstance, IDS_COPY, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
if (LoadStringW(shell32_hInstance, IDS_COPY, szBuffer, sizeof(szBuffer) / sizeof(WCHAR)))
{
szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
_InsertMenuItemW(hMenu, indexMenu++, TRUE, idCmdFirst + Count++, MFT_SEPARATOR, NULL, MFS_ENABLED);
_InsertMenuItemW(hMenu, indexMenu++, TRUE, idCmdFirst + Count++, MFT_STRING, szBuffer, MFS_ENABLED);
}
if (LoadStringW(shell32_hInstance, IDS_DELETE, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
if (LoadStringW(shell32_hInstance, IDS_DELETE, szBuffer, sizeof(szBuffer) / sizeof(WCHAR)))
{
szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
_InsertMenuItemW(hMenu, indexMenu++, TRUE, idCmdFirst + Count++, MFT_SEPARATOR, NULL, MFS_ENABLED);
_InsertMenuItemW(hMenu, indexMenu++, TRUE, idCmdFirst + Count, MFT_STRING, szBuffer, MFS_ENABLED);
}
if (LoadStringW(shell32_hInstance, IDS_PROPERTIES, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
if (LoadStringW(shell32_hInstance, IDS_PROPERTIES, szBuffer, sizeof(szBuffer) / sizeof(WCHAR)))
{
szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
_InsertMenuItemW(hMenu, indexMenu++, TRUE, idCmdFirst + Count++, MFT_SEPARATOR, NULL, MFS_ENABLED);
@ -745,7 +745,7 @@ HRESULT WINAPI CFontsFolder::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
PIDLFontStruct * pfont;
SHFILEOPSTRUCTW op;
TRACE("(%p)->(invcom=%p verb=%p wnd=%p)\n",this,lpcmi,lpcmi->lpVerb, lpcmi->hwnd);
TRACE("(%p)->(invcom=%p verb=%p wnd=%p)\n", this, lpcmi, lpcmi->lpVerb, lpcmi->hwnd);
if (lpcmi->lpVerb == MAKEINTRESOURCEA(1) || lpcmi->lpVerb == MAKEINTRESOURCEA(2) || lpcmi->lpVerb == MAKEINTRESOURCEA(7))
{
@ -764,7 +764,7 @@ HRESULT WINAPI CFontsFolder::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
sei.lpFile = pfont->szName + pfont->offsFile;
if (ShellExecuteExW(&sei) == FALSE)
return E_FAIL;
return E_FAIL;
}
else if (lpcmi->lpVerb == MAKEINTRESOURCEA(4))
{
@ -773,13 +773,13 @@ HRESULT WINAPI CFontsFolder::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
}
else if (lpcmi->lpVerb == MAKEINTRESOURCEA(6))
{
ZeroMemory(&op, sizeof(op));
op.hwnd = lpcmi->hwnd;
op.wFunc = FO_DELETE;
op.fFlags = FOF_ALLOWUNDO;
pfont = _ILGetFontStruct(apidl);
op.pFrom = pfont->szName + pfont->offsFile;
SHFileOperationW(&op);
ZeroMemory(&op, sizeof(op));
op.hwnd = lpcmi->hwnd;
op.wFunc = FO_DELETE;
op.fFlags = FOF_ALLOWUNDO;
pfont = _ILGetFontStruct(apidl);
op.pFrom = pfont->szName + pfont->offsFile;
SHFileOperationW(&op);
}
return S_OK;
@ -789,9 +789,9 @@ HRESULT WINAPI CFontsFolder::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
* ISF_Fonts_IContextMenu_GetCommandString()
*
*/
HRESULT WINAPI CFontsFolder::GetCommandString(UINT_PTR idCommand,UINT uFlags, UINT *lpReserved, LPSTR lpszName, UINT uMaxNameLen)
HRESULT WINAPI CFontsFolder::GetCommandString(UINT_PTR idCommand, UINT uFlags, UINT *lpReserved, LPSTR lpszName, UINT uMaxNameLen)
{
TRACE("(%p)->(idcom=%lx flags=%x %p name=%p len=%x)\n",this, idCommand, uFlags, lpReserved, lpszName, uMaxNameLen);
TRACE("(%p)->(idcom=%lx flags=%x %p name=%p len=%x)\n", this, idCommand, uFlags, lpReserved, lpszName, uMaxNameLen);
return E_FAIL;
}
@ -801,7 +801,7 @@ HRESULT WINAPI CFontsFolder::GetCommandString(UINT_PTR idCommand,UINT uFlags, UI
*/
HRESULT WINAPI CFontsFolder::HandleMenuMsg(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
TRACE("ISF_Fonts_IContextMenu_HandleMenuMsg (%p)->(msg=%x wp=%lx lp=%lx)\n",this, uMsg, wParam, lParam);
TRACE("ISF_Fonts_IContextMenu_HandleMenuMsg (%p)->(msg=%x wp=%lx lp=%lx)\n", this, uMsg, wParam, lParam);
return E_NOTIMPL;
}

View file

@ -38,15 +38,15 @@ be inserted in a removable drive.
class CFileSysEnum :
public IEnumIDListImpl
{
private:
public:
CFileSysEnum();
~CFileSysEnum();
HRESULT WINAPI Initialize(LPWSTR sPathTarget, DWORD dwFlags);
private:
public:
CFileSysEnum();
~CFileSysEnum();
HRESULT WINAPI Initialize(LPWSTR sPathTarget, DWORD dwFlags);
BEGIN_COM_MAP(CFileSysEnum)
COM_INTERFACE_ENTRY_IID(IID_IEnumIDList, IEnumIDList)
END_COM_MAP()
BEGIN_COM_MAP(CFileSysEnum)
COM_INTERFACE_ENTRY_IID(IID_IEnumIDList, IEnumIDList)
END_COM_MAP()
};
CFileSysEnum::CFileSysEnum()
@ -112,8 +112,9 @@ static const shvheader GenericSFHeader[] = {
LPITEMIDLIST SHELL32_CreatePidlFromBindCtx(IBindCtx *pbc, LPCWSTR path)
{
static WCHAR szfsbc[] = {
'F','i','l','e',' ','S','y','s','t','e','m',' ',
'B','i','n','d',' ','D','a','t','a',0 };
'F', 'i', 'l', 'e', ' ', 'S', 'y', 's', 't', 'e', 'm', ' ',
'B', 'i', 'n', 'd', ' ', 'D', 'a', 't', 'a', 0
};
IFileSystemBindData *fsbd = NULL;
LPITEMIDLIST pidl = NULL;
IUnknown *param = NULL;
@ -131,7 +132,7 @@ LPITEMIDLIST SHELL32_CreatePidlFromBindCtx(IBindCtx *pbc, LPCWSTR path)
return NULL;
r = param->QueryInterface(IID_IFileSystemBindData,
(LPVOID*) &fsbd );
(LPVOID*) &fsbd );
if (SUCCEEDED(r))
{
r = fsbd->GetFindData(&wfd );
@ -172,10 +173,10 @@ LPITEMIDLIST SHELL32_CreatePidlFromBindCtx(IBindCtx *pbc, LPCWSTR path)
* pchEaten is not set like in windows
*/
HRESULT WINAPI CFSFolder::ParseDisplayName(HWND hwndOwner,
LPBC pbc,
LPOLESTR lpszDisplayName,
DWORD *pchEaten, LPITEMIDLIST *ppidl,
DWORD *pdwAttributes)
LPBC pbc,
LPOLESTR lpszDisplayName,
DWORD *pchEaten, LPITEMIDLIST *ppidl,
DWORD *pdwAttributes)
{
HRESULT hr = E_INVALIDARG;
LPCWSTR szNext = NULL;
@ -185,8 +186,8 @@ HRESULT WINAPI CFSFolder::ParseDisplayName(HWND hwndOwner,
DWORD len;
TRACE ("(%p)->(HWND=%p,%p,%p=%s,%p,pidl=%p,%p)\n",
this, hwndOwner, pbc, lpszDisplayName, debugstr_w (lpszDisplayName),
pchEaten, ppidl, pdwAttributes);
this, hwndOwner, pbc, lpszDisplayName, debugstr_w (lpszDisplayName),
pchEaten, ppidl, pdwAttributes);
if (!ppidl)
return E_INVALIDARG;
@ -221,12 +222,12 @@ HRESULT WINAPI CFSFolder::ParseDisplayName(HWND hwndOwner,
if (szNext && *szNext) {
/* try to analyse the next element */
hr = SHELL32_ParseNextElement (this, hwndOwner, pbc,
&pidlTemp, (LPOLESTR) szNext, pchEaten, pdwAttributes);
&pidlTemp, (LPOLESTR) szNext, pchEaten, pdwAttributes);
} else {
/* it's the last element */
if (pdwAttributes && *pdwAttributes) {
hr = SHELL32_GetItemAttributes (this,
pidlTemp, pdwAttributes);
pidlTemp, pdwAttributes);
}
}
}
@ -250,7 +251,7 @@ HRESULT WINAPI CFSFolder::ParseDisplayName(HWND hwndOwner,
* LPENUMIDLIST* ppenumIDList //[out] IEnumIDList interface
*/
HRESULT WINAPI CFSFolder::EnumObjects (HWND hwndOwner,
DWORD dwFlags, LPENUMIDLIST * ppEnumIDList)
DWORD dwFlags, LPENUMIDLIST * ppEnumIDList)
{
CComObject<CFileSysEnum> *theEnumerator;
CComPtr<IEnumIDList> result;
@ -289,13 +290,13 @@ HRESULT WINAPI CFSFolder::EnumObjects (HWND hwndOwner,
* LPVOID* ppvObject //[out] Interface*
*/
HRESULT WINAPI CFSFolder::BindToObject(LPCITEMIDLIST pidl,
LPBC pbc, REFIID riid, LPVOID * ppvOut)
LPBC pbc, REFIID riid, LPVOID * ppvOut)
{
TRACE ("(%p)->(pidl=%p,%p,%s,%p)\n", this, pidl, pbc,
shdebugstr_guid (&riid), ppvOut);
shdebugstr_guid (&riid), ppvOut);
return SHELL32_BindToChild (pidlRoot, sPathTarget, pidl, riid,
ppvOut);
ppvOut);
}
/**************************************************************************
@ -307,10 +308,10 @@ HRESULT WINAPI CFSFolder::BindToObject(LPCITEMIDLIST pidl,
* LPVOID* ppvObject //[out] Interface* returned
*/
HRESULT WINAPI CFSFolder::BindToStorage(LPCITEMIDLIST pidl,
LPBC pbcReserved, REFIID riid, LPVOID * ppvOut)
LPBC pbcReserved, REFIID riid, LPVOID * ppvOut)
{
FIXME ("(%p)->(pidl=%p,%p,%s,%p) stub\n", this, pidl, pbcReserved,
shdebugstr_guid (&riid), ppvOut);
shdebugstr_guid (&riid), ppvOut);
*ppvOut = NULL;
return E_NOTIMPL;
@ -321,7 +322,7 @@ HRESULT WINAPI CFSFolder::BindToStorage(LPCITEMIDLIST pidl,
*/
HRESULT WINAPI CFSFolder::CompareIDs(LPARAM lParam,
LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
{
int nReturn;
@ -335,13 +336,13 @@ HRESULT WINAPI CFSFolder::CompareIDs(LPARAM lParam,
* IShellFolder_fnCreateViewObject
*/
HRESULT WINAPI CFSFolder::CreateViewObject(HWND hwndOwner,
REFIID riid, LPVOID * ppvOut)
REFIID riid, LPVOID * ppvOut)
{
LPSHELLVIEW pShellView;
HRESULT hr = E_INVALIDARG;
TRACE ("(%p)->(hwnd=%p,%s,%p)\n", this, hwndOwner, shdebugstr_guid (&riid),
ppvOut);
ppvOut);
if (ppvOut) {
*ppvOut = NULL;
@ -373,12 +374,12 @@ HRESULT WINAPI CFSFolder::CreateViewObject(HWND hwndOwner,
*
*/
HRESULT WINAPI CFSFolder::GetAttributesOf(UINT cidl,
LPCITEMIDLIST * apidl, DWORD * rgfInOut)
LPCITEMIDLIST * apidl, DWORD * rgfInOut)
{
HRESULT hr = S_OK;
TRACE ("(%p)->(cidl=%d apidl=%p mask=%p (0x%08x))\n", this, cidl, apidl,
rgfInOut, rgfInOut ? *rgfInOut : 0);
rgfInOut, rgfInOut ? *rgfInOut : 0);
if (!rgfInOut)
return E_INVALIDARG;
@ -388,7 +389,7 @@ HRESULT WINAPI CFSFolder::GetAttributesOf(UINT cidl,
if (*rgfInOut == 0)
*rgfInOut = ~0;
if(cidl == 0){
if(cidl == 0) {
IShellFolder *psfParent = NULL;
LPCITEMIDLIST rpidl = NULL;
@ -438,24 +439,24 @@ HRESULT WINAPI CFSFolder::GetAttributesOf(UINT cidl,
* needs the positions.
*/
HRESULT WINAPI CFSFolder::GetUIObjectOf(HWND hwndOwner,
UINT cidl, LPCITEMIDLIST * apidl, REFIID riid,
UINT * prgfInOut, LPVOID * ppvOut)
UINT cidl, LPCITEMIDLIST * apidl, REFIID riid,
UINT * prgfInOut, LPVOID * ppvOut)
{
LPITEMIDLIST pidl;
IUnknown *pObj = NULL;
HRESULT hr = E_INVALIDARG;
TRACE ("(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n",
this, hwndOwner, cidl, apidl, shdebugstr_guid (&riid), prgfInOut, ppvOut);
this, hwndOwner, cidl, apidl, shdebugstr_guid (&riid), prgfInOut, ppvOut);
if (ppvOut) {
*ppvOut = NULL;
if (IsEqualIID (riid, IID_IContextMenu) && (cidl >= 1)) {
hr = CDefFolderMenu_Create2(pidlRoot, hwndOwner, cidl, apidl, (IShellFolder*)this, NULL, 0, NULL, (IContextMenu**)&pObj);
} else if (IsEqualIID (riid, IID_IDataObject)){
} else if (IsEqualIID (riid, IID_IDataObject)) {
if (cidl >= 1) {
hr = IDataObject_Constructor (hwndOwner, pidlRoot, apidl, cidl, (IDataObject **)&pObj);
hr = IDataObject_Constructor (hwndOwner, pidlRoot, apidl, cidl, (IDataObject **)&pObj);
}
else
{
@ -473,9 +474,9 @@ HRESULT WINAPI CFSFolder::GetUIObjectOf(HWND hwndOwner,
hr = S_OK;
} else if (IsEqualIID (riid, IID_IDropTarget) && (cidl >= 1)) {
hr = this->QueryInterface(IID_IDropTarget,
(LPVOID *) & pObj);
} else if ((IsEqualIID(riid,IID_IShellLinkW) ||
IsEqualIID(riid,IID_IShellLinkA)) && (cidl == 1)) {
(LPVOID *) & pObj);
} else if ((IsEqualIID(riid, IID_IShellLinkW) ||
IsEqualIID(riid, IID_IShellLinkA)) && (cidl == 1)) {
pidl = ILCombine (pidlRoot, apidl[0]);
hr = IShellLink_ConstructFromFile(NULL, riid, pidl, (LPVOID*)&pObj);
SHFree (pidl);
@ -492,14 +493,17 @@ HRESULT WINAPI CFSFolder::GetUIObjectOf(HWND hwndOwner,
return hr;
}
static const WCHAR AdvancedW[] = { 'S','O','F','T','W','A','R','E',
'\\','M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\',
'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\','E','x','p','l',
'o','r','e','r','\\','A','d','v','a','n','c','e','d',0 };
static const WCHAR HideFileExtW[] = { 'H','i','d','e','F','i','l','e','E','x',
't',0 };
static const WCHAR NeverShowExtW[] = { 'N','e','v','e','r','S','h','o','w','E',
'x','t',0 };
static const WCHAR AdvancedW[] = { 'S', 'O', 'F', 'T', 'W', 'A', 'R', 'E',
'\\', 'M', 'i', 'c', 'r', 'o', 's', 'o', 'f', 't', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\',
'C', 'u', 'r', 'r', 'e', 'n', 't', 'V', 'e', 'r', 's', 'i', 'o', 'n', '\\', 'E', 'x', 'p', 'l',
'o', 'r', 'e', 'r', '\\', 'A', 'd', 'v', 'a', 'n', 'c', 'e', 'd', 0
};
static const WCHAR HideFileExtW[] = { 'H', 'i', 'd', 'e', 'F', 'i', 'l', 'e', 'E', 'x',
't', 0
};
static const WCHAR NeverShowExtW[] = { 'N', 'e', 'v', 'e', 'r', 'S', 'h', 'o', 'w', 'E',
'x', 't', 0
};
/******************************************************************************
* SHELL_FS_HideExtension [Internal]
@ -549,7 +553,7 @@ void SHELL_FS_ProcessDisplayFilename(LPWSTR szPath, DWORD dwFlags)
{
/*FIXME: MSDN also mentions SHGDN_FOREDITING which is not yet handled. */
if (!(dwFlags & SHGDN_FORPARSING) &&
((dwFlags & SHGDN_INFOLDER) || (dwFlags == SHGDN_NORMAL))) {
((dwFlags & SHGDN_INFOLDER) || (dwFlags == SHGDN_NORMAL))) {
if (SHELL_FS_HideExtension(szPath) && szPath[0] != '.')
PathRemoveExtensionW(szPath);
}
@ -569,7 +573,7 @@ void SHELL_FS_ProcessDisplayFilename(LPWSTR szPath, DWORD dwFlags)
*/
HRESULT WINAPI CFSFolder::GetDisplayNameOf(LPCITEMIDLIST pidl,
DWORD dwFlags, LPSTRRET strRet)
DWORD dwFlags, LPSTRRET strRet)
{
LPWSTR pszPath;
@ -588,7 +592,7 @@ HRESULT WINAPI CFSFolder::GetDisplayNameOf(LPCITEMIDLIST pidl,
if (_ILIsDesktop(pidl)) { /* empty pidl */
if ((GET_SHGDN_FOR(dwFlags) & SHGDN_FORPARSING) &&
(GET_SHGDN_RELATION(dwFlags) != SHGDN_INFOLDER))
(GET_SHGDN_RELATION(dwFlags) != SHGDN_INFOLDER))
{
if (sPathTarget)
lstrcpynW(pszPath, sPathTarget, MAX_PATH);
@ -598,8 +602,8 @@ HRESULT WINAPI CFSFolder::GetDisplayNameOf(LPCITEMIDLIST pidl,
}
} else if (_ILIsPidlSimple(pidl)) {
if ((GET_SHGDN_FOR(dwFlags) & SHGDN_FORPARSING) &&
(GET_SHGDN_RELATION(dwFlags) != SHGDN_INFOLDER) &&
sPathTarget)
(GET_SHGDN_RELATION(dwFlags) != SHGDN_INFOLDER) &&
sPathTarget)
{
lstrcpynW(pszPath, sPathTarget, MAX_PATH);
PathAddBackslashW(pszPath);
@ -616,7 +620,7 @@ HRESULT WINAPI CFSFolder::GetDisplayNameOf(LPCITEMIDLIST pidl,
if (GetVersion() & 0x80000000) {
strRet->uType = STRRET_CSTR;
if (!WideCharToMultiByte(CP_ACP, 0, pszPath, -1, strRet->cStr, MAX_PATH,
NULL, NULL))
NULL, NULL))
strRet->cStr[0] = '\0';
CoTaskMemFree(pszPath);
} else {
@ -643,17 +647,17 @@ HRESULT WINAPI CFSFolder::GetDisplayNameOf(LPCITEMIDLIST pidl,
* LPITEMIDLIST* ppidlOut) //[out] simple pidl returned
*/
HRESULT WINAPI CFSFolder::SetNameOf (HWND hwndOwner,
LPCITEMIDLIST pidl,
LPCOLESTR lpName,
DWORD dwFlags,
LPITEMIDLIST * pPidlOut)
LPCITEMIDLIST pidl,
LPCOLESTR lpName,
DWORD dwFlags,
LPITEMIDLIST * pPidlOut)
{
WCHAR szSrc[MAX_PATH + 1], szDest[MAX_PATH + 1];
LPWSTR ptr;
BOOL bIsFolder = _ILIsFolder (ILFindLastID (pidl));
TRACE ("(%p)->(%p,pidl=%p,%s,%u,%p)\n", this, hwndOwner, pidl,
debugstr_w (lpName), dwFlags, pPidlOut);
debugstr_w (lpName), dwFlags, pPidlOut);
/* build source path */
lstrcpynW(szSrc, sPathTarget, MAX_PATH);
@ -679,7 +683,7 @@ HRESULT WINAPI CFSFolder::SetNameOf (HWND hwndOwner,
}
TRACE ("src=%s dest=%s\n", debugstr_w(szSrc), debugstr_w(szDest));
if (!memcmp(szSrc, szDest, (wcslen(szDest)+1) * sizeof(WCHAR)))
if (!memcmp(szSrc, szDest, (wcslen(szDest) + 1) * sizeof(WCHAR)))
{
/* src and destination is the same */
HRESULT hr = S_OK;
@ -697,7 +701,7 @@ HRESULT WINAPI CFSFolder::SetNameOf (HWND hwndOwner,
hr = _ILCreateFromPathW(szDest, pPidlOut);
SHChangeNotify (bIsFolder ? SHCNE_RENAMEFOLDER : SHCNE_RENAMEITEM,
SHCNF_PATHW, szSrc, szDest);
SHCNF_PATHW, szSrc, szDest);
return hr;
}
@ -718,7 +722,7 @@ HRESULT WINAPI CFSFolder::EnumSearches(IEnumExtraSearch ** ppenum)
}
HRESULT WINAPI CFSFolder::GetDefaultColumn(DWORD dwRes,
ULONG * pSort, ULONG * pDisplay)
ULONG * pSort, ULONG * pDisplay)
{
TRACE ("(%p)\n", this);
@ -731,7 +735,7 @@ HRESULT WINAPI CFSFolder::GetDefaultColumn(DWORD dwRes,
}
HRESULT WINAPI CFSFolder::GetDefaultColumnState(UINT iColumn,
DWORD * pcsFlags)
DWORD * pcsFlags)
{
TRACE ("(%p)\n", this);
@ -744,7 +748,7 @@ HRESULT WINAPI CFSFolder::GetDefaultColumnState(UINT iColumn,
}
HRESULT WINAPI CFSFolder::GetDetailsEx(LPCITEMIDLIST pidl,
const SHCOLUMNID * pscid, VARIANT * pv)
const SHCOLUMNID * pscid, VARIANT * pv)
{
FIXME ("(%p)\n", this);
@ -752,7 +756,7 @@ HRESULT WINAPI CFSFolder::GetDetailsEx(LPCITEMIDLIST pidl,
}
HRESULT WINAPI CFSFolder::GetDetailsOf(LPCITEMIDLIST pidl,
UINT iColumn, SHELLDETAILS * psd)
UINT iColumn, SHELLDETAILS * psd)
{
HRESULT hr = E_FAIL;
@ -767,29 +771,29 @@ HRESULT WINAPI CFSFolder::GetDetailsOf(LPCITEMIDLIST pidl,
psd->cxChar = GenericSFHeader[iColumn].cxChar;
psd->str.uType = STRRET_CSTR;
LoadStringA (shell32_hInstance, GenericSFHeader[iColumn].colnameid,
psd->str.cStr, MAX_PATH);
psd->str.cStr, MAX_PATH);
return S_OK;
} else {
hr = S_OK;
psd->str.uType = STRRET_CSTR;
/* the data from the pidl */
switch (iColumn) {
case 0: /* name */
hr = GetDisplayNameOf (pidl,
SHGDN_NORMAL | SHGDN_INFOLDER, &psd->str);
break;
case 1: /* size */
_ILGetFileSize (pidl, psd->str.cStr, MAX_PATH);
break;
case 2: /* type */
_ILGetFileType (pidl, psd->str.cStr, MAX_PATH);
break;
case 3: /* date */
_ILGetFileDate (pidl, psd->str.cStr, MAX_PATH);
break;
case 4: /* attributes */
_ILGetFileAttributes (pidl, psd->str.cStr, MAX_PATH);
break;
case 0: /* name */
hr = GetDisplayNameOf (pidl,
SHGDN_NORMAL | SHGDN_INFOLDER, &psd->str);
break;
case 1: /* size */
_ILGetFileSize (pidl, psd->str.cStr, MAX_PATH);
break;
case 2: /* type */
_ILGetFileType (pidl, psd->str.cStr, MAX_PATH);
break;
case 3: /* date */
_ILGetFileDate (pidl, psd->str.cStr, MAX_PATH);
break;
case 4: /* attributes */
_ILGetFileAttributes (pidl, psd->str.cStr, MAX_PATH);
break;
}
}
@ -797,7 +801,7 @@ HRESULT WINAPI CFSFolder::GetDetailsOf(LPCITEMIDLIST pidl,
}
HRESULT WINAPI CFSFolder::MapColumnToSCID (UINT column,
SHCOLUMNID * pscid)
SHCOLUMNID * pscid)
{
FIXME ("(%p)\n", this);
return E_NOTIMPL;
@ -819,19 +823,19 @@ HRESULT WINAPI CFSFolder::GetUniqueName(LPWSTR pwszName, UINT uLen)
HRESULT hr;
WCHAR wszText[MAX_PATH];
WCHAR wszNewFolder[25];
const WCHAR wszFormat[] = {'%','s',' ','%','d',0 };
const WCHAR wszFormat[] = {'%', 's', ' ', '%', 'd', 0 };
LoadStringW(shell32_hInstance, IDS_NEWFOLDER, wszNewFolder, sizeof(wszNewFolder)/sizeof(WCHAR));
LoadStringW(shell32_hInstance, IDS_NEWFOLDER, wszNewFolder, sizeof(wszNewFolder) / sizeof(WCHAR));
TRACE ("(%p)(%p %u)\n", this, pwszName, uLen);
if (uLen < sizeof(wszNewFolder)/sizeof(WCHAR) + 3)
if (uLen < sizeof(wszNewFolder) / sizeof(WCHAR) + 3)
return E_POINTER;
lstrcpynW (pwszName, wszNewFolder, uLen);
hr = EnumObjects(0,
SHCONTF_FOLDERS | SHCONTF_NONFOLDERS | SHCONTF_INCLUDEHIDDEN, &penum);
SHCONTF_FOLDERS | SHCONTF_NONFOLDERS | SHCONTF_INCLUDEHIDDEN, &penum);
if (penum) {
LPITEMIDLIST pidl;
DWORD dwFetched;
@ -840,7 +844,7 @@ HRESULT WINAPI CFSFolder::GetUniqueName(LPWSTR pwszName, UINT uLen)
next:
penum->Reset ();
while (S_OK == penum->Next(1, &pidl, &dwFetched) &&
dwFetched) {
dwFetched) {
_ILSimpleGetTextW (pidl, wszText, MAX_PATH);
if (0 == lstrcmpiW (wszText, pwszName)) {
_snwprintf (pwszName, uLen, wszFormat, wszNewFolder, i++);
@ -864,7 +868,7 @@ next:
*/
HRESULT WINAPI CFSFolder::AddFolder(HWND hwnd, LPCWSTR pwszName,
LPITEMIDLIST * ppidlOut)
LPITEMIDLIST * ppidlOut)
{
WCHAR wszNewDir[MAX_PATH];
DWORD bRes;
@ -884,7 +888,7 @@ HRESULT WINAPI CFSFolder::AddFolder(HWND hwnd, LPCWSTR pwszName,
hres = S_OK;
if (ppidlOut)
hres = _ILCreateFromPathW(wszNewDir, ppidlOut);
hres = _ILCreateFromPathW(wszNewDir, ppidlOut);
} else {
WCHAR wszText[128 + MAX_PATH];
WCHAR wszTempText[128];
@ -892,9 +896,9 @@ HRESULT WINAPI CFSFolder::AddFolder(HWND hwnd, LPCWSTR pwszName,
/* Cannot Create folder because of permissions */
LoadStringW (shell32_hInstance, IDS_CREATEFOLDER_DENIED, wszTempText,
sizeof (wszTempText));
sizeof (wszTempText));
LoadStringW (shell32_hInstance, IDS_CREATEFOLDER_CAPTION, wszCaption,
sizeof (wszCaption));
sizeof (wszCaption));
swprintf (wszText, wszTempText, wszNewDir);
MessageBoxW (hwnd, wszText, wszCaption, MB_OK | MB_ICONEXCLAMATION);
}
@ -916,7 +920,7 @@ WCHAR *build_paths_list(LPCWSTR wszBasePath, int cidl, LPCITEMIDLIST *pidls)
int i;
iPathLen = wcslen(wszBasePath);
wszPathsList = (WCHAR *)HeapAlloc(GetProcessHeap(), 0, MAX_PATH*sizeof(WCHAR)*cidl+1);
wszPathsList = (WCHAR *)HeapAlloc(GetProcessHeap(), 0, MAX_PATH * sizeof(WCHAR) * cidl + 1);
wszListPos = wszPathsList;
for (i = 0; i < cidl; i++) {
@ -925,10 +929,10 @@ WCHAR *build_paths_list(LPCWSTR wszBasePath, int cidl, LPCITEMIDLIST *pidls)
lstrcpynW(wszListPos, wszBasePath, MAX_PATH);
/* FIXME: abort if path too long */
_ILSimpleGetTextW(pidls[i], wszListPos+iPathLen, MAX_PATH-iPathLen);
wszListPos += wcslen(wszListPos)+1;
_ILSimpleGetTextW(pidls[i], wszListPos + iPathLen, MAX_PATH - iPathLen);
wszListPos += wcslen(wszListPos) + 1;
}
*wszListPos=0;
*wszListPos = 0;
return wszPathsList;
}
@ -947,7 +951,7 @@ HRESULT WINAPI CFSFolder::DeleteItems(UINT cidl, LPCITEMIDLIST * apidl)
WCHAR *wszCurrentPath;
TRACE ("(%p)(%u %p)\n", this, cidl, apidl);
if (cidl==0) return S_OK;
if (cidl == 0) return S_OK;
if (sPathTarget)
lstrcpynW(wszPath, sPathTarget, MAX_PATH);
@ -990,7 +994,7 @@ HRESULT WINAPI CFSFolder::DeleteItems(UINT cidl, LPCITEMIDLIST * apidl)
SHFree(pidl);
}
wszCurrentPath += wcslen(wszCurrentPath)+1;
wszCurrentPath += wcslen(wszCurrentPath) + 1;
}
HeapFree(GetProcessHeap(), 0, wszPathsList);
return ret;
@ -1002,7 +1006,7 @@ HRESULT WINAPI CFSFolder::DeleteItems(UINT cidl, LPCITEMIDLIST * apidl)
* copies items to this folder
*/
HRESULT WINAPI CFSFolder::CopyItems(IShellFolder * pSFFrom, UINT cidl,
LPCITEMIDLIST * apidl)
LPCITEMIDLIST * apidl)
{
IPersistFolder2 *ppf2 = NULL;
WCHAR szSrcPath[MAX_PATH];
@ -1189,16 +1193,16 @@ HRESULT WINAPI CFSFolder::GetCurFolder(LPITEMIDLIST * pidl)
* FIXME: error handling
*/
HRESULT WINAPI CFSFolder::InitializeEx(IBindCtx * pbc, LPCITEMIDLIST pidlRootx,
const PERSIST_FOLDER_TARGET_INFO * ppfti)
const PERSIST_FOLDER_TARGET_INFO * ppfti)
{
WCHAR wszTemp[MAX_PATH];
TRACE ("(%p)->(%p,%p,%p)\n", this, pbc, pidlRootx, ppfti);
if (ppfti)
TRACE ("--%p %s %s 0x%08x 0x%08x\n",
ppfti->pidlTargetFolder, debugstr_w (ppfti->szTargetParsingName),
debugstr_w (ppfti->szNetworkProvider), ppfti->dwAttributes,
ppfti->csidl);
ppfti->pidlTargetFolder, debugstr_w (ppfti->szTargetParsingName),
debugstr_w (ppfti->szNetworkProvider), ppfti->dwAttributes,
ppfti->csidl);
pdump (pidlRootx);
if (ppfti && ppfti->pidlTargetFolder)
@ -1221,7 +1225,7 @@ HRESULT WINAPI CFSFolder::InitializeEx(IBindCtx * pbc, LPCITEMIDLIST pidlRootx,
if (ppfti) {
if (ppfti->csidl != -1) {
if (SHGetSpecialFolderPathW (0, wszTemp, ppfti->csidl,
ppfti->csidl & CSIDL_FLAG_CREATE)) {
ppfti->csidl & CSIDL_FLAG_CREATE)) {
int len = wcslen(wszTemp);
sPathTarget = (WCHAR *)SHAlloc((len + 1) * sizeof(WCHAR));
if (!sPathTarget)
@ -1262,7 +1266,7 @@ HRESULT WINAPI CFSFolder::GetFolderTargetInfo(PERSIST_FOLDER_TARGET_INFO * ppfti
* ISFDropTarget implementation
*/
BOOL CFSFolder::QueryDrop (DWORD dwKeyState,
LPDWORD pdwEffect)
LPDWORD pdwEffect)
{
DWORD dwEffect = *pdwEffect;
@ -1280,7 +1284,7 @@ BOOL CFSFolder::QueryDrop (DWORD dwKeyState,
}
HRESULT WINAPI CFSFolder::DragEnter (IDataObject * pDataObject,
DWORD dwKeyState, POINTL pt, DWORD * pdwEffect)
DWORD dwKeyState, POINTL pt, DWORD * pdwEffect)
{
FORMATETC fmt;
@ -1289,7 +1293,7 @@ HRESULT WINAPI CFSFolder::DragEnter (IDataObject * pDataObject,
InitFormatEtc (fmt, cfShellIDList, TYMED_HGLOBAL);
fAcceptFmt = (S_OK == pDataObject->QueryGetData(&fmt)) ?
TRUE : FALSE;
TRUE : FALSE;
QueryDrop(dwKeyState, pdwEffect);
@ -1297,7 +1301,7 @@ HRESULT WINAPI CFSFolder::DragEnter (IDataObject * pDataObject,
}
HRESULT WINAPI CFSFolder::DragOver (DWORD dwKeyState, POINTL pt,
DWORD * pdwEffect)
DWORD * pdwEffect)
{
TRACE ("(%p)\n", this);
@ -1319,7 +1323,7 @@ HRESULT WINAPI CFSFolder::DragLeave ()
}
HRESULT WINAPI CFSFolder::Drop (IDataObject * pDataObject,
DWORD dwKeyState, POINTL pt, DWORD * pdwEffect)
DWORD dwKeyState, POINTL pt, DWORD * pdwEffect)
{
FIXME ("(%p) object dropped\n", this);

View file

@ -42,16 +42,16 @@ CDrivesFolderEnum is only responsible for returning the physical items.
class CDrivesFolderEnum :
public IEnumIDListImpl
{
private:
public:
CDrivesFolderEnum();
~CDrivesFolderEnum();
HRESULT WINAPI Initialize(HWND hwndOwner, DWORD dwFlags);
BOOL CreateMyCompEnumList(DWORD dwFlags);
private:
public:
CDrivesFolderEnum();
~CDrivesFolderEnum();
HRESULT WINAPI Initialize(HWND hwndOwner, DWORD dwFlags);
BOOL CreateMyCompEnumList(DWORD dwFlags);
BEGIN_COM_MAP(CDrivesFolderEnum)
COM_INTERFACE_ENTRY_IID(IID_IEnumIDList, IEnumIDList)
END_COM_MAP()
BEGIN_COM_MAP(CDrivesFolderEnum)
COM_INTERFACE_ENTRY_IID(IID_IEnumIDList, IEnumIDList)
END_COM_MAP()
};
/***********************************************************************
@ -85,11 +85,12 @@ HRESULT WINAPI CDrivesFolderEnum::Initialize(HWND hwndOwner, DWORD dwFlags)
/**************************************************************************
* CreateMyCompEnumList()
*/
static const WCHAR MyComputer_NameSpaceW[] = { 'S','O','F','T','W','A','R','E',
'\\','M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\',
'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\','E','x','p','l',
'o','r','e','r','\\','M','y','C','o','m','p','u','t','e','r','\\','N','a','m',
'e','s','p','a','c','e','\0' };
static const WCHAR MyComputer_NameSpaceW[] = { 'S', 'O', 'F', 'T', 'W', 'A', 'R', 'E',
'\\', 'M', 'i', 'c', 'r', 'o', 's', 'o', 'f', 't', '\\', 'W', 'i', 'n', 'd', 'o', 'w', 's', '\\',
'C', 'u', 'r', 'r', 'e', 'n', 't', 'V', 'e', 'r', 's', 'i', 'o', 'n', '\\', 'E', 'x', 'p', 'l',
'o', 'r', 'e', 'r', '\\', 'M', 'y', 'C', 'o', 'm', 'p', 'u', 't', 'e', 'r', '\\', 'N', 'a', 'm',
'e', 's', 'p', 'a', 'c', 'e', '\0'
};
BOOL CDrivesFolderEnum::CreateMyCompEnumList(DWORD dwFlags)
{
@ -105,7 +106,7 @@ BOOL CDrivesFolderEnum::CreateMyCompEnumList(DWORD dwFlags)
HKEY hKey;
UINT i;
while (bRet && wszDriveName[0]<='Z')
while (bRet && wszDriveName[0] <= 'Z')
{
if(dwDrivemap & 0x00000001L)
bRet = AddToEnumList(_ILCreateDrive(wszDriveName));
@ -117,7 +118,7 @@ BOOL CDrivesFolderEnum::CreateMyCompEnumList(DWORD dwFlags)
for (i = 0; i < 2; i++)
{
if (bRet && ERROR_SUCCESS == RegOpenKeyExW(i == 0 ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER,
MyComputer_NameSpaceW, 0, KEY_READ, &hKey))
MyComputer_NameSpaceW, 0, KEY_READ, &hKey))
{
WCHAR wszBuf[50];
DWORD dwSize, j = 0;
@ -180,7 +181,7 @@ HRESULT WINAPI CDrivesFolder::FinalConstruct()
return E_OUTOFMEMORY;
i = swprintf(wszMyCompKey, L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CLSID\\");
StringFromGUID2(CLSID_MyComputer, wszMyCompKey + i, sizeof(wszMyCompKey)/sizeof(wszMyCompKey[0]) - i);
StringFromGUID2(CLSID_MyComputer, wszMyCompKey + i, sizeof(wszMyCompKey) / sizeof(wszMyCompKey[0]) - i);
dwSize = sizeof(szName);
if (RegGetValueW(HKEY_CURRENT_USER, wszMyCompKey,
NULL, RRF_RT_REG_SZ, NULL, szName, &dwSize) == ERROR_SUCCESS)
@ -199,7 +200,7 @@ HRESULT WINAPI CDrivesFolder::FinalConstruct()
* ISF_MyComputer_fnParseDisplayName
*/
HRESULT WINAPI CDrivesFolder::ParseDisplayName (HWND hwndOwner, LPBC pbc, LPOLESTR lpszDisplayName,
DWORD * pchEaten, LPITEMIDLIST * ppidl, DWORD * pdwAttributes)
DWORD * pchEaten, LPITEMIDLIST * ppidl, DWORD * pdwAttributes)
{
HRESULT hr = E_INVALIDARG;
LPCWSTR szNext = NULL;
@ -225,7 +226,7 @@ HRESULT WINAPI CDrivesFolder::ParseDisplayName (HWND hwndOwner, LPBC pbc, LPOLES
}
/* do we have an absolute path name ? */
else if (PathGetDriveNumberW (lpszDisplayName) >= 0 &&
lpszDisplayName[2] == (WCHAR) '\\')
lpszDisplayName[2] == (WCHAR) '\\')
{
szNext = GetNextElementW (lpszDisplayName, szElement, MAX_PATH);
/* make drive letter uppercase to enable PIDL comparison */
@ -236,7 +237,7 @@ HRESULT WINAPI CDrivesFolder::ParseDisplayName (HWND hwndOwner, LPBC pbc, LPOLES
if (szNext && *szNext)
{
hr = SHELL32_ParseNextElement (this, hwndOwner, pbc, &pidlTemp,
(LPOLESTR) szNext, pchEaten, pdwAttributes);
(LPOLESTR) szNext, pchEaten, pdwAttributes);
}
else
{
@ -266,13 +267,13 @@ HRESULT WINAPI CDrivesFolder::EnumObjects (HWND hwndOwner, DWORD dwFlags, LPENUM
if (ppEnumIDList == NULL)
return E_POINTER;
*ppEnumIDList = NULL;
ATLTRY (theEnumerator = new CComObject<CDrivesFolderEnum>);
if (theEnumerator == NULL)
return E_OUTOFMEMORY;
hResult = theEnumerator->QueryInterface (IID_IEnumIDList, (void **)&result);
if (FAILED (hResult))
{
@ -419,7 +420,7 @@ HRESULT WINAPI CDrivesFolder::GetAttributesOf (UINT cidl, LPCITEMIDLIST * apidl,
*
*/
HRESULT WINAPI CDrivesFolder::GetUIObjectOf (HWND hwndOwner, UINT cidl, LPCITEMIDLIST * apidl, REFIID riid,
UINT * prgfInOut, LPVOID * ppvOut)
UINT * prgfInOut, LPVOID * ppvOut)
{
LPITEMIDLIST pidl;
IUnknown *pObj = NULL;
@ -440,7 +441,7 @@ HRESULT WINAPI CDrivesFolder::GetUIObjectOf (HWND hwndOwner, UINT cidl, LPCITEMI
else if (IsEqualIID (riid, IID_IDataObject) && (cidl >= 1))
{
hr = IDataObject_Constructor (hwndOwner,
pidlRoot, apidl, cidl, (IDataObject **)&pObj);
pidlRoot, apidl, cidl, (IDataObject **)&pObj);
}
else if (IsEqualIID (riid, IID_IExtractIconA) && (cidl == 1))
{
@ -459,10 +460,10 @@ HRESULT WINAPI CDrivesFolder::GetUIObjectOf (HWND hwndOwner, UINT cidl, LPCITEMI
else if (IsEqualIID (riid, IID_IDropTarget) && (cidl >= 1))
{
hr = this->QueryInterface(IID_IDropTarget,
(LPVOID *) &pObj);
(LPVOID *) &pObj);
}
else if ((IsEqualIID(riid,IID_IShellLinkW) ||
IsEqualIID(riid,IID_IShellLinkA)) && (cidl == 1))
else if ((IsEqualIID(riid, IID_IShellLinkW) ||
IsEqualIID(riid, IID_IShellLinkA)) && (cidl == 1))
{
pidl = ILCombine (pidlRoot, apidl[0]);
hr = IShellLink_ConstructFromFile(NULL, riid, pidl, (LPVOID*) &pObj);
@ -493,7 +494,7 @@ HRESULT WINAPI CDrivesFolder::GetDisplayNameOf (LPCITEMIDLIST pidl, DWORD dwFlag
if (!strRet)
return E_INVALIDARG;
pszPath = (LPWSTR)CoTaskMemAlloc((MAX_PATH +1) * sizeof(WCHAR));
pszPath = (LPWSTR)CoTaskMemAlloc((MAX_PATH + 1) * sizeof(WCHAR));
if (!pszPath)
return E_OUTOFMEMORY;
@ -519,12 +520,13 @@ HRESULT WINAPI CDrivesFolder::GetDisplayNameOf (LPCITEMIDLIST pidl, DWORD dwFlag
if (GET_SHGDN_FOR (dwFlags) & SHGDN_FORPARSING)
{
static const WCHAR clsidW[] =
{ 'C','L','S','I','D','\\',0 };
{ 'C', 'L', 'S', 'I', 'D', '\\', 0 };
static const WCHAR shellfolderW[] =
{ '\\','s','h','e','l','l','f','o','l','d','e','r',0 };
{ '\\', 's', 'h', 'e', 'l', 'l', 'f', 'o', 'l', 'd', 'e', 'r', 0 };
static const WCHAR wantsForParsingW[] =
{ 'W','a','n','t','s','F','o','r','P','a','r','s','i','n',
'g',0 };
{ 'W', 'a', 'n', 't', 's', 'F', 'o', 'r', 'P', 'a', 'r', 's', 'i', 'n',
'g', 0
};
int bWantsForParsing = FALSE;
WCHAR szRegPath[100];
LONG r;
@ -549,14 +551,14 @@ HRESULT WINAPI CDrivesFolder::GetDisplayNameOf (LPCITEMIDLIST pidl, DWORD dwFlag
bWantsForParsing = TRUE;
if ((GET_SHGDN_RELATION (dwFlags) == SHGDN_NORMAL) &&
bWantsForParsing)
bWantsForParsing)
{
/*
* We need the filesystem path to the destination folder
* Only the folder itself can know it
*/
hr = SHELL32_GetDisplayNameOfChild (this, pidl,
dwFlags, pszPath, MAX_PATH);
dwFlags, pszPath, MAX_PATH);
}
else
{
@ -603,15 +605,15 @@ HRESULT WINAPI CDrivesFolder::GetDisplayNameOf (LPCITEMIDLIST pidl, DWORD dwFlag
{
WCHAR wszDrive[18] = {0};
DWORD dwVolumeSerialNumber, dwMaximumComponentLength, dwFileSystemFlags;
static const WCHAR wszOpenBracket[] = {' ','(',0};
static const WCHAR wszCloseBracket[] = {')',0};
static const WCHAR wszOpenBracket[] = {' ', '(', 0};
static const WCHAR wszCloseBracket[] = {')', 0};
lstrcpynW(wszDrive, pszPath, 4);
pszPath[0] = L'\0';
GetVolumeInformationW (wszDrive, pszPath,
MAX_PATH - 7,
&dwVolumeSerialNumber,
&dwMaximumComponentLength, &dwFileSystemFlags, NULL, 0);
MAX_PATH - 7,
&dwVolumeSerialNumber,
&dwMaximumComponentLength, &dwFileSystemFlags, NULL, 0);
pszPath[MAX_PATH-1] = L'\0';
if (!wcslen(pszPath))
{
@ -683,7 +685,7 @@ HRESULT WINAPI CDrivesFolder::GetDisplayNameOf (LPCITEMIDLIST pidl, DWORD dwFlag
* ppidlOut [out] simple pidl returned
*/
HRESULT WINAPI CDrivesFolder::SetNameOf(HWND hwndOwner, LPCITEMIDLIST pidl,
LPCOLESTR lpName, DWORD dwFlags, LPITEMIDLIST * pPidlOut)
LPCOLESTR lpName, DWORD dwFlags, LPITEMIDLIST * pPidlOut)
{
LPWSTR sName;
HKEY hKey;
@ -695,13 +697,13 @@ HRESULT WINAPI CDrivesFolder::SetNameOf(HWND hwndOwner, LPCITEMIDLIST pidl,
if (_ILIsDrive(pidl))
{
if (_ILSimpleGetTextW(pidl, szName, sizeof(szName)/sizeof(WCHAR)))
{
SetVolumeLabelW(szName, lpName);
}
if (pPidlOut)
*pPidlOut = _ILCreateDrive(szName);
return S_OK;
if (_ILSimpleGetTextW(pidl, szName, sizeof(szName) / sizeof(WCHAR)))
{
SetVolumeLabelW(szName, lpName);
}
if (pPidlOut)
*pPidlOut = _ILCreateDrive(szName);
return S_OK;
}
@ -717,7 +719,7 @@ HRESULT WINAPI CDrivesFolder::SetNameOf(HWND hwndOwner, LPCITEMIDLIST pidl,
{
return E_OUTOFMEMORY;
}
if (RegOpenKeyExW(HKEY_CURRENT_USER,
L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CLSID\\{20D04FE0-3AEA-1069-A2D8-08002B30309D}",
0,
@ -756,7 +758,7 @@ HRESULT WINAPI CDrivesFolder::GetDefaultColumn (DWORD dwRes, ULONG *pSort, ULONG
TRACE ("(%p)\n", this);
if (pSort)
*pSort = 0;
*pSort = 0;
if (pDisplay)
*pDisplay = 0;
return S_OK;
@ -806,29 +808,29 @@ HRESULT WINAPI CDrivesFolder::GetDetailsOf(LPCITEMIDLIST pidl, UINT iColumn, SHE
psd->str.uType = STRRET_CSTR;
switch (iColumn)
{
case 0: /* name */
hr = GetDisplayNameOf(pidl,
SHGDN_NORMAL | SHGDN_INFOLDER, &psd->str);
break;
case 1: /* type */
_ILGetFileType (pidl, psd->str.cStr, MAX_PATH);
break;
case 2: /* total size */
if (_ILIsDrive (pidl))
{
_ILSimpleGetText (pidl, szPath, MAX_PATH);
GetDiskFreeSpaceExA (szPath, NULL, &ulBytes, NULL);
StrFormatByteSizeA (ulBytes.LowPart, psd->str.cStr, MAX_PATH);
}
break;
case 3: /* free size */
if (_ILIsDrive (pidl))
{
_ILSimpleGetText (pidl, szPath, MAX_PATH);
GetDiskFreeSpaceExA (szPath, &ulBytes, NULL, NULL);
StrFormatByteSizeA (ulBytes.LowPart, psd->str.cStr, MAX_PATH);
}
break;
case 0: /* name */
hr = GetDisplayNameOf(pidl,
SHGDN_NORMAL | SHGDN_INFOLDER, &psd->str);
break;
case 1: /* type */
_ILGetFileType (pidl, psd->str.cStr, MAX_PATH);
break;
case 2: /* total size */
if (_ILIsDrive (pidl))
{
_ILSimpleGetText (pidl, szPath, MAX_PATH);
GetDiskFreeSpaceExA (szPath, NULL, &ulBytes, NULL);
StrFormatByteSizeA (ulBytes.LowPart, psd->str.cStr, MAX_PATH);
}
break;
case 3: /* free size */
if (_ILIsDrive (pidl))
{
_ILSimpleGetText (pidl, szPath, MAX_PATH);
GetDiskFreeSpaceExA (szPath, &ulBytes, NULL, NULL);
StrFormatByteSizeA (ulBytes.LowPart, psd->str.cStr, MAX_PATH);
}
break;
}
hr = S_OK;
}
@ -850,7 +852,7 @@ HRESULT WINAPI CDrivesFolder::GetClassID(CLSID *lpClassId)
TRACE ("(%p)\n", this);
if (!lpClassId)
return E_POINTER;
return E_POINTER;
*lpClassId = CLSID_MyComputer;
return S_OK;

View file

@ -36,15 +36,15 @@ CFSFolder::EnumObjects.
class CFileSysEnumX :
public IEnumIDListImpl
{
private:
public:
CFileSysEnumX();
~CFileSysEnumX();
HRESULT WINAPI Initialize(DWORD dwFlags);
private:
public:
CFileSysEnumX();
~CFileSysEnumX();
HRESULT WINAPI Initialize(DWORD dwFlags);
BEGIN_COM_MAP(CFileSysEnumX)
COM_INTERFACE_ENTRY_IID(IID_IEnumIDList, IEnumIDList)
END_COM_MAP()
BEGIN_COM_MAP(CFileSysEnumX)
COM_INTERFACE_ENTRY_IID(IID_IEnumIDList, IEnumIDList)
END_COM_MAP()
};
static const shvheader MyDocumentsSFHeader[] = {
@ -102,7 +102,7 @@ HRESULT WINAPI CMyDocsFolder::FinalConstruct()
}
HRESULT WINAPI CMyDocsFolder::ParseDisplayName (HWND hwndOwner, LPBC pbc, LPOLESTR lpszDisplayName,
DWORD * pchEaten, LPITEMIDLIST * ppidl, DWORD * pdwAttributes)
DWORD * pchEaten, LPITEMIDLIST * ppidl, DWORD * pdwAttributes)
{
WCHAR szElement[MAX_PATH];
LPCWSTR szNext = NULL;
@ -168,7 +168,7 @@ HRESULT WINAPI CMyDocsFolder::ParseDisplayName (HWND hwndOwner, LPBC pbc, LPOLES
if (szNext && *szNext)
{
hr = SHELL32_ParseNextElement(this, hwndOwner, pbc,
&pidlTemp, (LPOLESTR) szNext, pchEaten, pdwAttributes);
&pidlTemp, (LPOLESTR) szNext, pchEaten, pdwAttributes);
}
else
{
@ -349,14 +349,14 @@ HRESULT WINAPI CMyDocsFolder::GetAttributesOf(UINT cidl, LPCITEMIDLIST *apidl, D
*
*/
HRESULT WINAPI CMyDocsFolder::GetUIObjectOf(HWND hwndOwner, UINT cidl, LPCITEMIDLIST *apidl,
REFIID riid, UINT * prgfInOut, LPVOID * ppvOut)
REFIID riid, UINT * prgfInOut, LPVOID * ppvOut)
{
LPITEMIDLIST pidl;
IUnknown *pObj = NULL;
HRESULT hr = E_INVALIDARG;
TRACE ("(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n",
this, hwndOwner, cidl, apidl, shdebugstr_guid (&riid), prgfInOut, ppvOut);
this, hwndOwner, cidl, apidl, shdebugstr_guid (&riid), prgfInOut, ppvOut);
if (!ppvOut)
return hr;
@ -370,7 +370,7 @@ HRESULT WINAPI CMyDocsFolder::GetUIObjectOf(HWND hwndOwner, UINT cidl, LPCITEMID
else if (IsEqualIID (riid, IID_IDataObject) && (cidl >= 1))
{
hr = IDataObject_Constructor( hwndOwner,
pidlRoot, apidl, cidl, (IDataObject **)&pObj);
pidlRoot, apidl, cidl, (IDataObject **)&pObj);
}
else if (IsEqualIID (riid, IID_IExtractIconA) && (cidl == 1))
{
@ -419,16 +419,16 @@ HRESULT WINAPI CMyDocsFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlags
if (!strRet)
return E_INVALIDARG;
pszPath = (LPWSTR)CoTaskMemAlloc((MAX_PATH +1) * sizeof(WCHAR));
pszPath = (LPWSTR)CoTaskMemAlloc((MAX_PATH + 1) * sizeof(WCHAR));
if (!pszPath)
return E_OUTOFMEMORY;
ZeroMemory(pszPath, (MAX_PATH +1) * sizeof(WCHAR));
ZeroMemory(pszPath, (MAX_PATH + 1) * sizeof(WCHAR));
if (_ILIsMyDocuments (pidl))
{
if ((GET_SHGDN_RELATION (dwFlags) == SHGDN_NORMAL) &&
(GET_SHGDN_FOR (dwFlags) & SHGDN_FORPARSING))
(GET_SHGDN_FOR (dwFlags) & SHGDN_FORPARSING))
wcscpy(pszPath, sPathTarget);
else
HCR_GetClassNameW(CLSID_MyDocuments, pszPath, MAX_PATH);
@ -459,12 +459,13 @@ HRESULT WINAPI CMyDocsFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlags
{
/* get the "WantsFORPARSING" flag from the registry */
static const WCHAR clsidW[] =
{ 'C','L','S','I','D','\\',0 };
{ 'C', 'L', 'S', 'I', 'D', '\\', 0 };
static const WCHAR shellfolderW[] =
{ '\\','s','h','e','l','l','f','o','l','d','e','r',0 };
{ '\\', 's', 'h', 'e', 'l', 'l', 'f', 'o', 'l', 'd', 'e', 'r', 0 };
static const WCHAR wantsForParsingW[] =
{ 'W','a','n','t','s','F','o','r','P','a','r','s','i','n',
'g',0 };
{ 'W', 'a', 'n', 't', 's', 'F', 'o', 'r', 'P', 'a', 'r', 's', 'i', 'n',
'g', 0
};
WCHAR szRegPath[100];
LONG r;
@ -480,7 +481,7 @@ HRESULT WINAPI CMyDocsFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlags
}
if ((GET_SHGDN_RELATION (dwFlags) == SHGDN_NORMAL) &&
bWantsForParsing)
bWantsForParsing)
{
/*
* we need the filesystem path to the destination folder.
@ -489,7 +490,7 @@ HRESULT WINAPI CMyDocsFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlags
hr = SHELL32_GetDisplayNameOfChild (this, pidl, dwFlags,
pszPath,
MAX_PATH);
TRACE("CP\n");
TRACE("CP\n");
}
else
{
@ -497,14 +498,14 @@ HRESULT WINAPI CMyDocsFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlags
pszPath[0] = ':';
pszPath[1] = ':';
SHELL32_GUIDToStringW (*clsid, &pszPath[2]);
TRACE("CP\n");
TRACE("CP\n");
}
}
else
{
/* user friendly name */
HCR_GetClassNameW (*clsid, pszPath, MAX_PATH);
TRACE("CP\n");
TRACE("CP\n");
}
}
else
@ -513,7 +514,7 @@ HRESULT WINAPI CMyDocsFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlags
/* file system folder or file rooted at the desktop */
if ((GET_SHGDN_FOR(dwFlags) == SHGDN_FORPARSING) &&
(GET_SHGDN_RELATION(dwFlags) != SHGDN_INFOLDER))
(GET_SHGDN_RELATION(dwFlags) != SHGDN_INFOLDER))
{
lstrcpynW(pszPath, sPathTarget, MAX_PATH - 1);
TRACE("CP %s\n", debugstr_w(pszPath));
@ -527,7 +528,7 @@ HRESULT WINAPI CMyDocsFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlags
if (!_ILIsFolder(pidl))
{
SHELL_FS_ProcessDisplayFilename(pszPath, dwFlags);
TRACE("CP\n");
TRACE("CP\n");
}
}
}
@ -537,7 +538,7 @@ HRESULT WINAPI CMyDocsFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlags
/* a complex pidl, let the subfolder do the work */
hr = SHELL32_GetDisplayNameOfChild (this, pidl, dwFlags,
pszPath, MAX_PATH);
TRACE("CP\n");
TRACE("CP\n");
}
if (SUCCEEDED(hr))
@ -553,7 +554,7 @@ HRESULT WINAPI CMyDocsFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlags
}
HRESULT WINAPI CMyDocsFolder::SetNameOf(HWND hwndOwner, LPCITEMIDLIST pidl, /* simple pidl */
LPCOLESTR lpName, DWORD dwFlags, LPITEMIDLIST * pPidlOut)
LPCOLESTR lpName, DWORD dwFlags, LPITEMIDLIST * pPidlOut)
{
FIXME ("(%p)->(%p,pidl=%p,%s,%u,%p)\n", this, hwndOwner, pidl,
debugstr_w (lpName), dwFlags, pPidlOut);
@ -590,7 +591,7 @@ HRESULT WINAPI CMyDocsFolder::GetDefaultColumnState(UINT iColumn, DWORD *pcsFlag
TRACE ("(%p)\n", this);
if (!pcsFlags || iColumn >= MYDOCUMENTSSHELLVIEWCOLUMNS)
return E_INVALIDARG;
return E_INVALIDARG;
*pcsFlags = MyDocumentsSFHeader[iColumn].pcsFlags;
@ -627,22 +628,22 @@ HRESULT WINAPI CMyDocsFolder::GetDetailsOf(LPCITEMIDLIST pidl, UINT iColumn, SHE
psd->str.uType = STRRET_CSTR;
switch (iColumn)
{
case 0: /* name */
hr = GetDisplayNameOf(pidl,
SHGDN_NORMAL | SHGDN_INFOLDER, &psd->str);
break;
case 1: /* size */
_ILGetFileSize (pidl, psd->str.cStr, MAX_PATH);
break;
case 2: /* type */
_ILGetFileType (pidl, psd->str.cStr, MAX_PATH);
break;
case 3: /* date */
_ILGetFileDate (pidl, psd->str.cStr, MAX_PATH);
break;
case 4: /* attributes */
_ILGetFileAttributes (pidl, psd->str.cStr, MAX_PATH);
break;
case 0: /* name */
hr = GetDisplayNameOf(pidl,
SHGDN_NORMAL | SHGDN_INFOLDER, &psd->str);
break;
case 1: /* size */
_ILGetFileSize (pidl, psd->str.cStr, MAX_PATH);
break;
case 2: /* type */
_ILGetFileType (pidl, psd->str.cStr, MAX_PATH);
break;
case 3: /* date */
_ILGetFileDate (pidl, psd->str.cStr, MAX_PATH);
break;
case 4: /* attributes */
_ILGetFileAttributes (pidl, psd->str.cStr, MAX_PATH);
break;
}
return hr;
@ -656,8 +657,8 @@ HRESULT WINAPI CMyDocsFolder::MapColumnToSCID (UINT column, SHCOLUMNID *pscid)
HRESULT WINAPI CMyDocsFolder::GetClassID(CLSID *lpClassId)
{
static GUID const CLSID_MyDocuments =
{ 0x450d8fba, 0xad25, 0x11d0, {0x98,0xa8,0x08,0x00,0x36,0x1b,0x11,0x03} };
static GUID const CLSID_MyDocuments =
{ 0x450d8fba, 0xad25, 0x11d0, {0x98, 0xa8, 0x08, 0x00, 0x36, 0x1b, 0x11, 0x03} };
TRACE ("(%p)\n", this);

View file

@ -66,13 +66,13 @@ HRESULT WINAPI CNetFolder::FinalConstruct()
* ISF_NetworkPlaces_fnParseDisplayName
*/
HRESULT WINAPI CNetFolder::ParseDisplayName(HWND hwndOwner, LPBC pbcReserved, LPOLESTR lpszDisplayName,
DWORD * pchEaten, LPITEMIDLIST * ppidl, DWORD * pdwAttributes)
DWORD * pchEaten, LPITEMIDLIST * ppidl, DWORD * pdwAttributes)
{
HRESULT hr = E_UNEXPECTED;
TRACE ("(%p)->(HWND=%p,%p,%p=%s,%p,pidl=%p,%p)\n", this,
hwndOwner, pbcReserved, lpszDisplayName, debugstr_w (lpszDisplayName),
pchEaten, ppidl, pdwAttributes);
hwndOwner, pbcReserved, lpszDisplayName, debugstr_w (lpszDisplayName),
pchEaten, ppidl, pdwAttributes);
*ppidl = 0;
if (pchEaten)
@ -89,13 +89,13 @@ HRESULT WINAPI CNetFolder::ParseDisplayName(HWND hwndOwner, LPBC pbcReserved, LP
HRESULT WINAPI CNetFolder::EnumObjects(HWND hwndOwner, DWORD dwFlags, LPENUMIDLIST *ppEnumIDList)
{
TRACE ("(%p)->(HWND=%p flags=0x%08x pplist=%p)\n", this,
hwndOwner, dwFlags, ppEnumIDList);
hwndOwner, dwFlags, ppEnumIDList);
*ppEnumIDList = NULL; //IEnumIDList_Constructor();
TRACE ("-- (%p)->(new ID List: %p)\n", this, *ppEnumIDList);
return S_FALSE;
// return (*ppEnumIDList) ? S_OK : E_OUTOFMEMORY;
return S_FALSE;
// return (*ppEnumIDList) ? S_OK : E_OUTOFMEMORY;
}
/**************************************************************************
@ -104,7 +104,7 @@ HRESULT WINAPI CNetFolder::EnumObjects(HWND hwndOwner, DWORD dwFlags, LPENUMIDLI
HRESULT WINAPI CNetFolder::BindToObject(LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut)
{
TRACE ("(%p)->(pidl=%p,%p,%s,%p)\n", this,
pidl, pbcReserved, shdebugstr_guid (&riid), ppvOut);
pidl, pbcReserved, shdebugstr_guid (&riid), ppvOut);
return SHELL32_BindToChild (pidlRoot, NULL, pidl, riid, ppvOut);
}
@ -115,7 +115,7 @@ HRESULT WINAPI CNetFolder::BindToObject(LPCITEMIDLIST pidl, LPBC pbcReserved, RE
HRESULT WINAPI CNetFolder::BindToStorage(LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut)
{
FIXME ("(%p)->(pidl=%p,%p,%s,%p) stub\n", this,
pidl, pbcReserved, shdebugstr_guid (&riid), ppvOut);
pidl, pbcReserved, shdebugstr_guid (&riid), ppvOut);
*ppvOut = NULL;
return E_NOTIMPL;
@ -180,12 +180,12 @@ HRESULT WINAPI CNetFolder::CreateViewObject(HWND hwndOwner, REFIID riid, LPVOID
HRESULT WINAPI CNetFolder::GetAttributesOf(UINT cidl, LPCITEMIDLIST *apidl, DWORD *rgfInOut)
{
static const DWORD dwNethoodAttributes =
SFGAO_STORAGE | SFGAO_HASPROPSHEET | SFGAO_STORAGEANCESTOR |
SFGAO_STORAGE | SFGAO_HASPROPSHEET | SFGAO_STORAGEANCESTOR |
SFGAO_FILESYSANCESTOR | SFGAO_FOLDER | SFGAO_FILESYSTEM | SFGAO_HASSUBFOLDER | SFGAO_CANRENAME | SFGAO_CANDELETE;
HRESULT hr = S_OK;
TRACE ("(%p)->(cidl=%d apidl=%p mask=%p (0x%08x))\n", this,
cidl, apidl, rgfInOut, rgfInOut ? *rgfInOut : 0);
cidl, apidl, rgfInOut, rgfInOut ? *rgfInOut : 0);
if (!rgfInOut)
return E_INVALIDARG;
@ -229,14 +229,14 @@ HRESULT WINAPI CNetFolder::GetAttributesOf(UINT cidl, LPCITEMIDLIST *apidl, DWOR
*
*/
HRESULT WINAPI CNetFolder::GetUIObjectOf(HWND hwndOwner, UINT cidl, LPCITEMIDLIST *apidl, REFIID riid,
UINT * prgfInOut, LPVOID * ppvOut)
UINT * prgfInOut, LPVOID * ppvOut)
{
LPITEMIDLIST pidl;
IUnknown *pObj = NULL;
HRESULT hr = E_INVALIDARG;
TRACE ("(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n", this,
hwndOwner, cidl, apidl, shdebugstr_guid (&riid), prgfInOut, ppvOut);
hwndOwner, cidl, apidl, shdebugstr_guid (&riid), prgfInOut, ppvOut);
if (!ppvOut)
return hr;
@ -308,10 +308,10 @@ HRESULT WINAPI CNetFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlags, L
* ppidlOut [out] simple pidl returned
*/
HRESULT WINAPI CNetFolder::SetNameOf (HWND hwndOwner, LPCITEMIDLIST pidl, /*simple pidl */
LPCOLESTR lpName, DWORD dwFlags, LPITEMIDLIST * pPidlOut)
LPCOLESTR lpName, DWORD dwFlags, LPITEMIDLIST * pPidlOut)
{
FIXME ("(%p)->(%p,pidl=%p,%s,%u,%p)\n", this,
hwndOwner, pidl, debugstr_w (lpName), dwFlags, pPidlOut);
hwndOwner, pidl, debugstr_w (lpName), dwFlags, pPidlOut);
return E_FAIL;
}

View file

@ -33,25 +33,25 @@ class IExtractIconWImpl :
public IExtractIconW,
public IExtractIconA
{
private:
LPITEMIDLIST pidl;
public:
IExtractIconWImpl();
~IExtractIconWImpl();
HRESULT WINAPI Initialize(LPCITEMIDLIST pidl);
private:
LPITEMIDLIST pidl;
public:
IExtractIconWImpl();
~IExtractIconWImpl();
HRESULT WINAPI Initialize(LPCITEMIDLIST pidl);
// IExtractIconW
virtual HRESULT STDMETHODCALLTYPE GetIconLocation(UINT uFlags, LPWSTR szIconFile, UINT cchMax, int *piIndex, UINT *pwFlags);
virtual HRESULT STDMETHODCALLTYPE Extract(LPCWSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize);
// IExtractIconW
virtual HRESULT STDMETHODCALLTYPE GetIconLocation(UINT uFlags, LPWSTR szIconFile, UINT cchMax, int *piIndex, UINT *pwFlags);
virtual HRESULT STDMETHODCALLTYPE Extract(LPCWSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize);
// IExtractIconA
virtual HRESULT STDMETHODCALLTYPE GetIconLocation(UINT uFlags, LPSTR szIconFile, UINT cchMax, int *piIndex, UINT *pwFlags);
virtual HRESULT STDMETHODCALLTYPE Extract(LPCSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize);
// IExtractIconA
virtual HRESULT STDMETHODCALLTYPE GetIconLocation(UINT uFlags, LPSTR szIconFile, UINT cchMax, int *piIndex, UINT *pwFlags);
virtual HRESULT STDMETHODCALLTYPE Extract(LPCSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize);
BEGIN_COM_MAP(IExtractIconWImpl)
COM_INTERFACE_ENTRY_IID(IID_IExtractIconW, IExtractIconW)
COM_INTERFACE_ENTRY_IID(IID_IExtractIconA, IExtractIconA)
END_COM_MAP()
BEGIN_COM_MAP(IExtractIconWImpl)
COM_INTERFACE_ENTRY_IID(IID_IExtractIconW, IExtractIconW)
COM_INTERFACE_ENTRY_IID(IID_IExtractIconA, IExtractIconA)
END_COM_MAP()
};
static shvheader PrinterSFHeader[] = {
@ -119,8 +119,8 @@ HRESULT WINAPI IExtractIconWImpl::GetIconLocation(UINT uFlags, /* GIL_ fl
* IExtractIconW_Extract
*/
HRESULT WINAPI IExtractIconWImpl::Extract(LPCWSTR pszFile,
UINT nIconIndex, HICON *phiconLarge,
HICON *phiconSmall, UINT nIconSize)
UINT nIconIndex, HICON *phiconLarge,
HICON *phiconSmall, UINT nIconSize)
{
int index;
@ -142,10 +142,10 @@ HRESULT WINAPI IExtractIconWImpl::Extract(LPCWSTR pszFile,
* IExtractIconA_GetIconLocation
*/
HRESULT WINAPI IExtractIconWImpl::GetIconLocation(UINT uFlags,
LPSTR szIconFile,
UINT cchMax,
int * piIndex,
UINT * pwFlags)
LPSTR szIconFile,
UINT cchMax,
int * piIndex,
UINT * pwFlags)
{
HRESULT ret;
LPWSTR lpwstrFile = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, cchMax * sizeof(WCHAR));
@ -163,8 +163,8 @@ HRESULT WINAPI IExtractIconWImpl::GetIconLocation(UINT uFlags,
* IExtractIconA_Extract
*/
HRESULT WINAPI IExtractIconWImpl::Extract(LPCSTR pszFile,
UINT nIconIndex, HICON *phiconLarge,
HICON *phiconSmall, UINT nIconSize)
UINT nIconIndex, HICON *phiconLarge,
HICON *phiconSmall, UINT nIconSize)
{
HRESULT ret;
INT len = MultiByteToWideChar(CP_ACP, 0, pszFile, -1, NULL, 0);
@ -213,16 +213,16 @@ static HRESULT WINAPI IEI_Printers_Constructor(LPCITEMIDLIST pidl, REFIID riid,
class CPrintersEnum :
public IEnumIDListImpl
{
private:
public:
CPrintersEnum();
~CPrintersEnum();
HRESULT WINAPI Initialize(HWND hwndOwner, DWORD dwFlags);
BOOL CreatePrintersEnumList(DWORD dwFlags);
private:
public:
CPrintersEnum();
~CPrintersEnum();
HRESULT WINAPI Initialize(HWND hwndOwner, DWORD dwFlags);
BOOL CreatePrintersEnumList(DWORD dwFlags);
BEGIN_COM_MAP(CPrintersEnum)
COM_INTERFACE_ENTRY_IID(IID_IEnumIDList, IEnumIDList)
END_COM_MAP()
BEGIN_COM_MAP(CPrintersEnum)
COM_INTERFACE_ENTRY_IID(IID_IEnumIDList, IEnumIDList)
END_COM_MAP()
};
CPrintersEnum::CPrintersEnum()
@ -245,7 +245,7 @@ static LPITEMIDLIST _ILCreatePrinterItem(PRINTER_INFO_4W *pi)
PIDLDATA tmp;
LPITEMIDLIST pidl;
PIDLPrinterStruct * p;
int size0 = (char*)&tmp.u.cprinter.szName-(char*)&tmp.u.cprinter;
int size0 = (char*)&tmp.u.cprinter.szName - (char*)&tmp.u.cprinter;
int size = size0;
tmp.type = 0x00;
@ -265,8 +265,8 @@ static LPITEMIDLIST _ILCreatePrinterItem(PRINTER_INFO_4W *pi)
if (!pidl)
return pidl;
pidl->mkid.cb = size+2;
memcpy(pidl->mkid.abID, &tmp, 2+size0);
pidl->mkid.cb = size + 2;
memcpy(pidl->mkid.abID, &tmp, 2 + size0);
p = &((PIDLDATA*)pidl->mkid.abID)->u.cprinter;
@ -281,7 +281,7 @@ static LPITEMIDLIST _ILCreatePrinterItem(PRINTER_INFO_4W *pi)
else
p->szName[p->offsServer] = L'\0';
*(WORD*)((char*)pidl+(size+2)) = 0;
*(WORD*)((char*)pidl + (size + 2)) = 0;
return pidl;
}
@ -351,11 +351,11 @@ HRESULT WINAPI CPrinterFolder::FinalConstruct()
* This is E_NOTIMPL in Windows too.
*/
HRESULT WINAPI CPrinterFolder::ParseDisplayName(HWND hwndOwner, LPBC pbc, LPOLESTR lpszDisplayName,
DWORD * pchEaten, LPITEMIDLIST * ppidl, DWORD * pdwAttributes)
DWORD * pchEaten, LPITEMIDLIST * ppidl, DWORD * pdwAttributes)
{
TRACE("(%p)->(HWND=%p,%p,%p=%s,%p,pidl=%p,%p)\n",
this, hwndOwner, pbc, lpszDisplayName, debugstr_w(lpszDisplayName),
pchEaten, ppidl, pdwAttributes);
this, hwndOwner, pbc, lpszDisplayName, debugstr_w(lpszDisplayName),
pchEaten, ppidl, pdwAttributes);
*ppidl = 0;
if (pchEaten)
@ -368,8 +368,8 @@ static PIDLPrinterStruct * _ILGetPrinterStruct(LPCITEMIDLIST pidl)
{
LPPIDLDATA pdata = _ILGetDataPointer(pidl);
if (pdata && pdata->type==0x00)
return (PIDLPrinterStruct*)&(pdata->u.cfont);
if (pdata && pdata->type == 0x00)
return (PIDLPrinterStruct*) & (pdata->u.cfont);
return NULL;
}
@ -413,7 +413,7 @@ HRESULT WINAPI CPrinterFolder::EnumObjects(HWND hwndOwner, DWORD dwFlags, LPENUM
HRESULT WINAPI CPrinterFolder::BindToObject(LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, LPVOID * ppvOut)
{
TRACE ("(%p)->(pidl=%p,%p,%s,%p)\n", this,
pidl, pbcReserved, shdebugstr_guid (&riid), ppvOut);
pidl, pbcReserved, shdebugstr_guid (&riid), ppvOut);
return SHELL32_BindToChild (pidlRoot, NULL, pidl, riid, ppvOut);
}
@ -452,7 +452,7 @@ HRESULT WINAPI CPrinterFolder::CreateViewObject(HWND hwndOwner, REFIID riid, LPV
HRESULT hr = E_INVALIDARG;
TRACE ("(%p)->(hwnd=%p,%s,%p)\n", this,
hwndOwner, shdebugstr_guid (&riid), ppvOut);
hwndOwner, shdebugstr_guid (&riid), ppvOut);
if (!ppvOut)
return hr;
@ -515,13 +515,13 @@ HRESULT WINAPI CPrinterFolder::GetAttributesOf(UINT cidl, LPCITEMIDLIST *apidl,
*
*/
HRESULT WINAPI CPrinterFolder::GetUIObjectOf(HWND hwndOwner, UINT cidl, LPCITEMIDLIST *apidl,
REFIID riid, UINT * prgfInOut, LPVOID * ppvOut)
REFIID riid, UINT * prgfInOut, LPVOID * ppvOut)
{
IUnknown *pObj = NULL;
HRESULT hr = E_INVALIDARG;
TRACE ("(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n",
this, hwndOwner, cidl, apidl, shdebugstr_guid (&riid), prgfInOut, ppvOut);
this, hwndOwner, cidl, apidl, shdebugstr_guid (&riid), prgfInOut, ppvOut);
if (!ppvOut)
return hr;
@ -607,7 +607,7 @@ HRESULT WINAPI CPrinterFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlag
* LPITEMIDLIST* ppidlOut) //[out] simple pidl returned
*/
HRESULT WINAPI CPrinterFolder::SetNameOf(HWND hwndOwner, LPCITEMIDLIST pidl, /* simple pidl */
LPCOLESTR lpName, DWORD dwFlags, LPITEMIDLIST * pPidlOut)
LPCOLESTR lpName, DWORD dwFlags, LPITEMIDLIST * pPidlOut)
{
FIXME ("(%p)->(%p,pidl=%p,%s,%lu,%p)\n", this, hwndOwner, pidl,
debugstr_w (lpName), dwFlags, pPidlOut);

File diff suppressed because it is too large Load diff

View file

@ -1,21 +0,0 @@
/*
* UNIXFS - Shell namespace extension for the unix filesystem
*
* Copyright (C) 2005 Michael Jung
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/* Placeholder in ReactOS, we don't need this */

View file

@ -26,14 +26,14 @@ typedef struct _DynamicShellEntry_
CLSID ClassID;
IContextMenu * CMenu;
struct _DynamicShellEntry_ * Next;
}DynamicShellEntry, *PDynamicShellEntry;
} DynamicShellEntry, *PDynamicShellEntry;
typedef struct _StaticShellEntry_
{
LPWSTR szVerb;
LPWSTR szClass;
struct _StaticShellEntry_ * Next;
}StaticShellEntry, *PStaticShellEntry;
LPWSTR szVerb;
LPWSTR szClass;
struct _StaticShellEntry_ * Next;
} StaticShellEntry, *PStaticShellEntry;
WCHAR *build_paths_list(LPCWSTR wszBasePath, int cidl, LPCITEMIDLIST *pidls);
@ -41,53 +41,53 @@ class IDefaultContextMenuImpl :
public CComObjectRootEx<CComMultiThreadModelNoCS>,
public IContextMenu2
{
private:
DEFCONTEXTMENU dcm;
IDataObject * pDataObj;
DWORD bGroupPolicyActive;
PDynamicShellEntry dhead; /* first dynamic shell extension entry */
UINT iIdSHEFirst; /* first used id */
UINT iIdSHELast; /* last used id */
PStaticShellEntry shead; /* first static shell extension entry */
UINT iIdSCMFirst; /* first static used id */
UINT iIdSCMLast; /* last static used id */
public:
IDefaultContextMenuImpl();
~IDefaultContextMenuImpl();
HRESULT WINAPI Initialize(const DEFCONTEXTMENU *pdcm);
void SH_AddStaticEntry(const WCHAR *szVerb, const WCHAR *szClass);
void SH_AddStaticEntryForKey(HKEY hKey, const WCHAR *szClass);
void SH_AddStaticEntryForFileClass(const WCHAR *szExt);
BOOL IsShellExtensionAlreadyLoaded(const CLSID *szClass);
HRESULT SH_LoadDynamicContextMenuHandler(HKEY hKey, const CLSID *szClass, BOOL bExternalInit);
UINT EnumerateDynamicContextHandlerForKey(HKEY hRootKey);
UINT InsertMenuItemsOfDynamicContextMenuExtension(HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast);
UINT BuildBackgroundContextMenu(HMENU hMenu, UINT iIdCmdFirst, UINT iIdCmdLast, UINT uFlags);
UINT AddStaticContextMenusToMenu(HMENU hMenu, UINT indexMenu);
UINT BuildShellItemContextMenu(HMENU hMenu, UINT iIdCmdFirst, UINT iIdCmdLast, UINT uFlags);
HRESULT DoPaste(LPCMINVOKECOMMANDINFO lpcmi);
HRESULT DoOpenOrExplore(LPCMINVOKECOMMANDINFO lpcmi);
HRESULT DoCreateLink(LPCMINVOKECOMMANDINFO lpcmi);
HRESULT DoDelete(LPCMINVOKECOMMANDINFO lpcmi);
HRESULT DoCopyOrCut(LPCMINVOKECOMMANDINFO lpcmi, BOOL bCopy);
HRESULT DoRename(LPCMINVOKECOMMANDINFO lpcmi);
HRESULT DoProperties(LPCMINVOKECOMMANDINFO lpcmi);
HRESULT DoFormat(LPCMINVOKECOMMANDINFO lpcmi);
HRESULT DoDynamicShellExtensions(LPCMINVOKECOMMANDINFO lpcmi);
HRESULT DoStaticShellExtensions(LPCMINVOKECOMMANDINFO lpcmi);
private:
DEFCONTEXTMENU dcm;
IDataObject * pDataObj;
DWORD bGroupPolicyActive;
PDynamicShellEntry dhead; /* first dynamic shell extension entry */
UINT iIdSHEFirst; /* first used id */
UINT iIdSHELast; /* last used id */
PStaticShellEntry shead; /* first static shell extension entry */
UINT iIdSCMFirst; /* first static used id */
UINT iIdSCMLast; /* last static used id */
public:
IDefaultContextMenuImpl();
~IDefaultContextMenuImpl();
HRESULT WINAPI Initialize(const DEFCONTEXTMENU *pdcm);
void SH_AddStaticEntry(const WCHAR *szVerb, const WCHAR *szClass);
void SH_AddStaticEntryForKey(HKEY hKey, const WCHAR *szClass);
void SH_AddStaticEntryForFileClass(const WCHAR *szExt);
BOOL IsShellExtensionAlreadyLoaded(const CLSID *szClass);
HRESULT SH_LoadDynamicContextMenuHandler(HKEY hKey, const CLSID *szClass, BOOL bExternalInit);
UINT EnumerateDynamicContextHandlerForKey(HKEY hRootKey);
UINT InsertMenuItemsOfDynamicContextMenuExtension(HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast);
UINT BuildBackgroundContextMenu(HMENU hMenu, UINT iIdCmdFirst, UINT iIdCmdLast, UINT uFlags);
UINT AddStaticContextMenusToMenu(HMENU hMenu, UINT indexMenu);
UINT BuildShellItemContextMenu(HMENU hMenu, UINT iIdCmdFirst, UINT iIdCmdLast, UINT uFlags);
HRESULT DoPaste(LPCMINVOKECOMMANDINFO lpcmi);
HRESULT DoOpenOrExplore(LPCMINVOKECOMMANDINFO lpcmi);
HRESULT DoCreateLink(LPCMINVOKECOMMANDINFO lpcmi);
HRESULT DoDelete(LPCMINVOKECOMMANDINFO lpcmi);
HRESULT DoCopyOrCut(LPCMINVOKECOMMANDINFO lpcmi, BOOL bCopy);
HRESULT DoRename(LPCMINVOKECOMMANDINFO lpcmi);
HRESULT DoProperties(LPCMINVOKECOMMANDINFO lpcmi);
HRESULT DoFormat(LPCMINVOKECOMMANDINFO lpcmi);
HRESULT DoDynamicShellExtensions(LPCMINVOKECOMMANDINFO lpcmi);
HRESULT DoStaticShellExtensions(LPCMINVOKECOMMANDINFO lpcmi);
// IContextMenu
virtual HRESULT WINAPI QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
virtual HRESULT WINAPI InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi);
virtual HRESULT WINAPI GetCommandString(UINT_PTR idCommand,UINT uFlags, UINT *lpReserved, LPSTR lpszName, UINT uMaxNameLen);
// IContextMenu
virtual HRESULT WINAPI QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
virtual HRESULT WINAPI InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi);
virtual HRESULT WINAPI GetCommandString(UINT_PTR idCommand, UINT uFlags, UINT *lpReserved, LPSTR lpszName, UINT uMaxNameLen);
// IContextMenu2
virtual HRESULT WINAPI HandleMenuMsg(UINT uMsg, WPARAM wParam, LPARAM lParam);
// IContextMenu2
virtual HRESULT WINAPI HandleMenuMsg(UINT uMsg, WPARAM wParam, LPARAM lParam);
BEGIN_COM_MAP(IDefaultContextMenuImpl)
COM_INTERFACE_ENTRY_IID(IID_IContextMenu, IContextMenu)
COM_INTERFACE_ENTRY_IID(IID_IContextMenu2, IContextMenu2)
END_COM_MAP()
BEGIN_COM_MAP(IDefaultContextMenuImpl)
COM_INTERFACE_ENTRY_IID(IID_IContextMenu, IContextMenu)
COM_INTERFACE_ENTRY_IID(IID_IContextMenu2, IContextMenu2)
END_COM_MAP()
};
IDefaultContextMenuImpl::IDefaultContextMenuImpl()
@ -126,18 +126,18 @@ IDefaultContextMenuImpl::~IDefaultContextMenuImpl()
HeapFree(GetProcessHeap(), 0, sEntry->szVerb);
HeapFree(GetProcessHeap(), 0, sEntry);
sEntry = sNext;
}
}
}
HRESULT WINAPI IDefaultContextMenuImpl::Initialize(const DEFCONTEXTMENU *pdcm)
{
IDataObject *newDataObj;
IDataObject *newDataObj;
TRACE("cidl %u\n", dcm.cidl);
if (SUCCEEDED(SHCreateDataObject(pdcm->pidlFolder, pdcm->cidl, pdcm->apidl, NULL, IID_IDataObject, (void**)&newDataObj)))
TRACE("cidl %u\n", dcm.cidl);
if (SUCCEEDED(SHCreateDataObject(pdcm->pidlFolder, pdcm->cidl, pdcm->apidl, NULL, IID_IDataObject, (void**)&newDataObj)))
pDataObj = newDataObj;
CopyMemory(&dcm, pdcm, sizeof(DEFCONTEXTMENU));
return S_OK;
CopyMemory(&dcm, pdcm, sizeof(DEFCONTEXTMENU));
return S_OK;
}
void
@ -157,17 +157,17 @@ IDefaultContextMenuImpl::SH_AddStaticEntry(const WCHAR *szVerb, const WCHAR * sz
lastEntry = curEntry;
curEntry = curEntry->Next;
}
TRACE("adding verb %s szClass %s\n", debugstr_w(szVerb), debugstr_w(szClass));
curEntry = (StaticShellEntry *)HeapAlloc(GetProcessHeap(), 0, sizeof(StaticShellEntry));
if (curEntry)
{
curEntry->Next = NULL;
curEntry->szVerb = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, (wcslen(szVerb)+1) * sizeof(WCHAR));
curEntry->szVerb = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, (wcslen(szVerb) + 1) * sizeof(WCHAR));
if (curEntry->szVerb)
wcscpy(curEntry->szVerb, szVerb);
curEntry->szClass = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, (wcslen(szClass)+1) * sizeof(WCHAR));
curEntry->szClass = (LPWSTR)HeapAlloc(GetProcessHeap(), 0, (wcslen(szClass) + 1) * sizeof(WCHAR));
if (curEntry->szClass)
wcscpy(curEntry->szClass, szClass);
}
@ -212,7 +212,7 @@ IDefaultContextMenuImpl::SH_AddStaticEntryForKey(HKEY hKey, const WCHAR * szClas
SH_AddStaticEntry(szName, szClass);
}
dwIndex++;
}while(result == ERROR_SUCCESS);
} while(result == ERROR_SUCCESS);
}
void
@ -229,7 +229,7 @@ IDefaultContextMenuImpl::SH_AddStaticEntryForFileClass(const WCHAR * szExt)
TRACE("SH_AddStaticEntryForFileClass entered with %s\n", debugstr_w(szExt));
Length = wcslen(szExt);
if (Length + (sizeof(szShell)/sizeof(WCHAR)) + 1 < sizeof(szBuffer)/sizeof(WCHAR))
if (Length + (sizeof(szShell) / sizeof(WCHAR)) + 1 < sizeof(szBuffer) / sizeof(WCHAR))
{
wcscpy(szBuffer, szExt);
wcscpy(&szBuffer[Length], szShell);
@ -247,7 +247,7 @@ IDefaultContextMenuImpl::SH_AddStaticEntryForFileClass(const WCHAR * szExt)
if (result == ERROR_SUCCESS)
{
Length = wcslen(szBuffer);
if (Length + (sizeof(szShell)/sizeof(WCHAR)) + 1 < sizeof(szBuffer)/sizeof(WCHAR))
if (Length + (sizeof(szShell) / sizeof(WCHAR)) + 1 < sizeof(szBuffer) / sizeof(WCHAR))
{
wcscpy(&szBuffer[Length], szShell);
TRACE("szBuffer %s\n", debugstr_w(szBuffer));
@ -274,15 +274,15 @@ IDefaultContextMenuImpl::SH_AddStaticEntryForFileClass(const WCHAR * szExt)
result = RegOpenKeyExW(HKEY_CLASSES_ROOT, szBuffer, 0, KEY_READ | KEY_QUERY_VALUE, &hKey);
if (result == ERROR_SUCCESS)
{
szBuffer[Length] = 0;
SH_AddStaticEntryForKey(hKey, szBuffer);
RegCloseKey(hKey);
szBuffer[Length] = 0;
SH_AddStaticEntryForKey(hKey, szBuffer);
RegCloseKey(hKey);
}
}
}
static
BOOL
BOOL
HasClipboardData()
{
BOOL ret = FALSE;
@ -290,20 +290,20 @@ HasClipboardData()
if(SUCCEEDED(OleGetClipboard(&pda)))
{
STGMEDIUM medium;
FORMATETC formatetc;
STGMEDIUM medium;
FORMATETC formatetc;
TRACE("pda=%p\n", pda);
TRACE("pda=%p\n", pda);
/* Set the FORMATETC structure*/
InitFormatEtc(formatetc, RegisterClipboardFormatW(CFSTR_SHELLIDLIST), TYMED_HGLOBAL);
if(SUCCEEDED(pda->GetData(&formatetc,&medium)))
{
ret = TRUE;
ReleaseStgMedium(&medium);
}
/* Set the FORMATETC structure*/
InitFormatEtc(formatetc, RegisterClipboardFormatW(CFSTR_SHELLIDLIST), TYMED_HGLOBAL);
if(SUCCEEDED(pda->GetData(&formatetc, &medium)))
{
ret = TRUE;
ReleaseStgMedium(&medium);
}
pda->Release();
pda->Release();
}
return ret;
@ -341,140 +341,140 @@ IDefaultContextMenuImpl::IsShellExtensionAlreadyLoaded(const CLSID * szClass)
HRESULT
IDefaultContextMenuImpl::SH_LoadDynamicContextMenuHandler(HKEY hKey, const CLSID * pClass, BOOL bExternalInit)
{
HRESULT hr;
IContextMenu * cmobj;
IShellExtInit *shext;
PDynamicShellEntry curEntry;
LPOLESTR pstr;
HRESULT hr;
IContextMenu * cmobj;
IShellExtInit *shext;
PDynamicShellEntry curEntry;
LPOLESTR pstr;
StringFromCLSID(*pClass, &pstr);
StringFromCLSID(*pClass, &pstr);
TRACE("SH_LoadDynamicContextMenuHandler entered with This %p hKey %p pClass %s bExternalInit %u\n", this, hKey, wine_dbgstr_guid(pClass), bExternalInit);
TRACE("SH_LoadDynamicContextMenuHandler entered with This %p hKey %p pClass %s bExternalInit %u\n", this, hKey, wine_dbgstr_guid(pClass), bExternalInit);
if (IsShellExtensionAlreadyLoaded(pClass))
return S_OK;
if (IsShellExtensionAlreadyLoaded(pClass))
return S_OK;
hr = SHCoCreateInstance(NULL, pClass, NULL, IID_IContextMenu, (void**)&cmobj);
if (hr != S_OK)
{
ERR("SHCoCreateInstance failed %x\n", GetLastError());
return hr;
}
if (bExternalInit)
{
hr = cmobj->QueryInterface(IID_IShellExtInit, (void**)&shext);
if (hr != S_OK)
{
ERR("Failed to query for interface IID_IShellExtInit hr %x pClass %s\n", hr, wine_dbgstr_guid(pClass));
cmobj->Release();
return FALSE;
}
hr = shext->Initialize(NULL, pDataObj, hKey);
shext->Release();
if (hr != S_OK)
{
TRACE("Failed to initialize shell extension error %x pClass %s\n", hr, wine_dbgstr_guid(pClass));
cmobj->Release();
hr = SHCoCreateInstance(NULL, pClass, NULL, IID_IContextMenu, (void**)&cmobj);
if (hr != S_OK)
{
ERR("SHCoCreateInstance failed %x\n", GetLastError());
return hr;
}
}
}
curEntry = (DynamicShellEntry *)HeapAlloc(GetProcessHeap(), 0, sizeof(DynamicShellEntry));
if(!curEntry)
{
cmobj->Release();
return E_OUTOFMEMORY;
}
if (bExternalInit)
{
hr = cmobj->QueryInterface(IID_IShellExtInit, (void**)&shext);
if (hr != S_OK)
{
ERR("Failed to query for interface IID_IShellExtInit hr %x pClass %s\n", hr, wine_dbgstr_guid(pClass));
cmobj->Release();
return FALSE;
}
hr = shext->Initialize(NULL, pDataObj, hKey);
shext->Release();
if (hr != S_OK)
{
TRACE("Failed to initialize shell extension error %x pClass %s\n", hr, wine_dbgstr_guid(pClass));
cmobj->Release();
return hr;
}
}
curEntry->iIdCmdFirst = 0;
curEntry->Next = NULL;
curEntry->NumIds = 0;
curEntry->CMenu = cmobj;
memcpy(&curEntry->ClassID, pClass, sizeof(CLSID));
curEntry = (DynamicShellEntry *)HeapAlloc(GetProcessHeap(), 0, sizeof(DynamicShellEntry));
if(!curEntry)
{
cmobj->Release();
return E_OUTOFMEMORY;
}
if (dhead)
{
PDynamicShellEntry pEntry = dhead;
curEntry->iIdCmdFirst = 0;
curEntry->Next = NULL;
curEntry->NumIds = 0;
curEntry->CMenu = cmobj;
memcpy(&curEntry->ClassID, pClass, sizeof(CLSID));
while(pEntry->Next)
{
pEntry = pEntry->Next;
}
if (dhead)
{
PDynamicShellEntry pEntry = dhead;
pEntry->Next = curEntry;
}
else
{
dhead = curEntry;
}
while(pEntry->Next)
{
pEntry = pEntry->Next;
}
return hr;
pEntry->Next = curEntry;
}
else
{
dhead = curEntry;
}
return hr;
}
UINT
IDefaultContextMenuImpl::EnumerateDynamicContextHandlerForKey(HKEY hRootKey)
{
WCHAR szKey[MAX_PATH] = {0};
WCHAR szName[MAX_PATH] = {0};
DWORD dwIndex, dwName;
LONG res;
HRESULT hResult;
UINT index;
CLSID clsid;
HKEY hKey;
WCHAR szKey[MAX_PATH] = {0};
WCHAR szName[MAX_PATH] = {0};
DWORD dwIndex, dwName;
LONG res;
HRESULT hResult;
UINT index;
CLSID clsid;
HKEY hKey;
static const WCHAR szShellEx[] = { 's','h','e','l','l','e','x','\\','C','o','n','t','e','x','t','M','e','n','u','H','a','n','d','l','e','r','s',0 };
static const WCHAR szShellEx[] = { 's', 'h', 'e', 'l', 'l', 'e', 'x', '\\', 'C', 'o', 'n', 't', 'e', 'x', 't', 'M', 'e', 'n', 'u', 'H', 'a', 'n', 'd', 'l', 'e', 'r', 's', 0 };
if (RegOpenKeyExW(hRootKey, szShellEx, 0, KEY_READ, &hKey) != ERROR_SUCCESS)
{
TRACE("RegOpenKeyExW failed for key %s\n", debugstr_w(szKey));
return 0;
}
if (RegOpenKeyExW(hRootKey, szShellEx, 0, KEY_READ, &hKey) != ERROR_SUCCESS)
{
TRACE("RegOpenKeyExW failed for key %s\n", debugstr_w(szKey));
return 0;
}
dwIndex = 0;
index = 0;
do
{
dwName = MAX_PATH;
res = RegEnumKeyExW(hKey, dwIndex, szName, &dwName, NULL, NULL, NULL, NULL);
if (res == ERROR_SUCCESS)
{
hResult = CLSIDFromString(szName, &clsid);
if (hResult != S_OK)
{
dwName = MAX_PATH;
if (RegGetValueW(hKey, szName, NULL, RRF_RT_REG_SZ, NULL, szKey, &dwName) == ERROR_SUCCESS)
{
hResult = CLSIDFromString(szKey, &clsid);
}
}
if (SUCCEEDED(hResult))
{
if (bGroupPolicyActive)
{
if (RegGetValueW(HKEY_LOCAL_MACHINE,
L"Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved",
szKey,
RRF_RT_REG_SZ,
NULL,
NULL,
&dwName) == ERROR_SUCCESS)
{
SH_LoadDynamicContextMenuHandler(hKey, &clsid, TRUE);
}
}
else
{
SH_LoadDynamicContextMenuHandler(hKey, &clsid, TRUE);
}
}
}
dwIndex++;
}while(res == ERROR_SUCCESS);
dwIndex = 0;
index = 0;
do
{
dwName = MAX_PATH;
res = RegEnumKeyExW(hKey, dwIndex, szName, &dwName, NULL, NULL, NULL, NULL);
if (res == ERROR_SUCCESS)
{
hResult = CLSIDFromString(szName, &clsid);
if (hResult != S_OK)
{
dwName = MAX_PATH;
if (RegGetValueW(hKey, szName, NULL, RRF_RT_REG_SZ, NULL, szKey, &dwName) == ERROR_SUCCESS)
{
hResult = CLSIDFromString(szKey, &clsid);
}
}
if (SUCCEEDED(hResult))
{
if (bGroupPolicyActive)
{
if (RegGetValueW(HKEY_LOCAL_MACHINE,
L"Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved",
szKey,
RRF_RT_REG_SZ,
NULL,
NULL,
&dwName) == ERROR_SUCCESS)
{
SH_LoadDynamicContextMenuHandler(hKey, &clsid, TRUE);
}
}
else
{
SH_LoadDynamicContextMenuHandler(hKey, &clsid, TRUE);
}
}
}
dwIndex++;
} while(res == ERROR_SUCCESS);
RegCloseKey(hKey);
return index;
RegCloseKey(hKey);
return index;
}
UINT
@ -506,7 +506,7 @@ IDefaultContextMenuImpl::InsertMenuItemsOfDynamicContextMenuExtension(HMENU hMen
}
TRACE("curEntry %p hresult %x contextmenu %p cmdfirst %x num ids %x\n", curEntry, hResult, curEntry->CMenu, curEntry->iIdCmdFirst, curEntry->NumIds);
curEntry = curEntry->Next;
}while(curEntry);
} while(curEntry);
iIdSHELast = idCmdFirst;
TRACE("SH_LoadContextMenuHandlers first %x last %x\n", iIdSHEFirst, iIdSHELast);
@ -539,7 +539,7 @@ IDefaultContextMenuImpl::BuildBackgroundContextMenu(
szBuffer[0] = 0;
LoadStringW(shell32_hInstance, FCIDM_SHVIEW_VIEW, szBuffer, MAX_PATH);
szBuffer[MAX_PATH-1] = 0;
TRACE("szBuffer %s\n", debugstr_w(szBuffer));
mii.cbSize = sizeof(mii);
@ -569,10 +569,10 @@ IDefaultContextMenuImpl::BuildBackgroundContextMenu(
}
/* load extensions from HKCR\* key */
if (RegOpenKeyExW(HKEY_CLASSES_ROOT,
L"*",
0,
KEY_READ,
&hKey) == ERROR_SUCCESS)
L"*",
0,
KEY_READ,
&hKey) == ERROR_SUCCESS)
{
EnumerateDynamicContextHandlerForKey(hKey);
RegCloseKey(hKey);
@ -580,19 +580,19 @@ IDefaultContextMenuImpl::BuildBackgroundContextMenu(
/* load create new shell extension */
if (RegOpenKeyExW(HKEY_CLASSES_ROOT,
L"CLSID\\{D969A300-E7FF-11d0-A93B-00A0C90F2719}",
0,
KEY_READ,
&hKey) == ERROR_SUCCESS)
L"CLSID\\{D969A300-E7FF-11d0-A93B-00A0C90F2719}",
0,
KEY_READ,
&hKey) == ERROR_SUCCESS)
{
SH_LoadDynamicContextMenuHandler(hKey, &CLSID_NewMenu, TRUE);
RegCloseKey(hKey);
}
if (InsertMenuItemsOfDynamicContextMenuExtension(hMenu, GetMenuItemCount(hMenu)-1, iIdCmdFirst, iIdCmdLast))
if (InsertMenuItemsOfDynamicContextMenuExtension(hMenu, GetMenuItemCount(hMenu) - 1, iIdCmdFirst, iIdCmdLast))
{
/* seperate dynamic context menu items */
_InsertMenuItemW(hMenu, GetMenuItemCount(hMenu)-1, TRUE, -1, MFT_SEPARATOR, NULL, MFS_ENABLED);
_InsertMenuItemW(hMenu, GetMenuItemCount(hMenu) - 1, TRUE, -1, MFT_SEPARATOR, NULL, MFS_ENABLED);
}
return iIdCmdLast;
@ -627,30 +627,30 @@ IDefaultContextMenuImpl::AddStaticContextMenusToMenu(
fState = MFS_ENABLED;
if (!wcsicmp(curEntry->szVerb, L"open"))
{
fState |= MFS_DEFAULT;
idResource = IDS_OPEN_VERB;
fState |= MFS_DEFAULT;
idResource = IDS_OPEN_VERB;
}
else if (!wcsicmp(curEntry->szVerb, L"explore"))
idResource = IDS_EXPLORE_VERB;
idResource = IDS_EXPLORE_VERB;
else if (!wcsicmp(curEntry->szVerb, L"runas"))
idResource = IDS_RUNAS_VERB;
idResource = IDS_RUNAS_VERB;
else if (!wcsicmp(curEntry->szVerb, L"edit"))
idResource = IDS_EDIT_VERB;
idResource = IDS_EDIT_VERB;
else if (!wcsicmp(curEntry->szVerb, L"find"))
idResource = IDS_FIND_VERB;
idResource = IDS_FIND_VERB;
else if (!wcsicmp(curEntry->szVerb, L"print"))
idResource = IDS_PRINT_VERB;
idResource = IDS_PRINT_VERB;
else if (!wcsicmp(curEntry->szVerb, L"printto"))
{
curEntry = curEntry->Next;
continue;
}
else
idResource = 0;
idResource = 0;
if (idResource > 0)
{
if (LoadStringW(shell32_hInstance, idResource, szVerb, sizeof(szVerb)/sizeof(WCHAR)))
if (LoadStringW(shell32_hInstance, idResource, szVerb, sizeof(szVerb) / sizeof(WCHAR)))
{
/* use translated verb */
szVerb[(sizeof(szVerb)/sizeof(WCHAR))-1] = L'\0';
@ -664,7 +664,7 @@ IDefaultContextMenuImpl::AddStaticContextMenusToMenu(
else
{
Length = wcslen(curEntry->szClass) + wcslen(curEntry->szVerb) + 8;
if (Length < sizeof(szTemp)/sizeof(WCHAR))
if (Length < sizeof(szTemp) / sizeof(WCHAR))
{
wcscpy(szTemp, curEntry->szClass);
wcscat(szTemp, L"\\shell\\");
@ -682,7 +682,7 @@ IDefaultContextMenuImpl::AddStaticContextMenusToMenu(
mii.dwTypeData = curEntry->szVerb;
}
}
}
mii.cch = wcslen(mii.dwTypeData);
@ -691,9 +691,9 @@ IDefaultContextMenuImpl::AddStaticContextMenusToMenu(
mii.wID++;
curEntry = curEntry->Next;
}
iIdSCMLast = mii.wID - 1;
return indexMenu;
}
iIdSCMLast = mii.wID - 1;
return indexMenu;
}
void WINAPI _InsertMenuItemW (
@ -719,7 +719,7 @@ void WINAPI _InsertMenuItemW (
mii.fMask = MIIM_ID | MIIM_TYPE | MIIM_STATE;
if ((ULONG_PTR)HIWORD((ULONG_PTR)dwTypeData) == 0)
{
if (LoadStringW(shell32_hInstance, LOWORD((ULONG_PTR)dwTypeData), szText, sizeof(szText)/sizeof(WCHAR)))
if (LoadStringW(shell32_hInstance, LOWORD((ULONG_PTR)dwTypeData), szText, sizeof(szText) / sizeof(WCHAR)))
{
szText[(sizeof(szText)/sizeof(WCHAR))-1] = 0;
mii.dwTypeData = szText;
@ -792,7 +792,7 @@ IDefaultContextMenuImpl::BuildShellItemContextMenu(
/* load dynamic extensions from progid key */
EnumerateDynamicContextHandlerForKey(hKey);
RegCloseKey(hKey);
}
}
}
}
if (RegOpenKeyExW(HKEY_CLASSES_ROOT, L"*", 0, KEY_READ, &hKey) == ERROR_SUCCESS)
@ -885,8 +885,8 @@ IDefaultContextMenuImpl::BuildShellItemContextMenu(
if (_ILIsDrive(dcm.apidl[0]))
{
/* The 'Format' option must be always available,
* thus it is not registered as a static shell extension
/* The 'Format' option must be always available,
* thus it is not registered as a static shell extension
*/
_InsertMenuItemW(hMenu, indexMenu++, TRUE, 0, MFT_SEPARATOR, NULL, 0);
_InsertMenuItemW(hMenu, indexMenu++, TRUE, 0x7ABC, MFT_STRING, MAKEINTRESOURCEW(IDS_FORMATDRIVE), MFS_ENABLED);
@ -896,15 +896,15 @@ IDefaultContextMenuImpl::BuildShellItemContextMenu(
bClipboardData = (HasClipboardData() && (rfg & SFGAO_FILESYSTEM));
if (rfg & (SFGAO_CANCOPY | SFGAO_CANMOVE) || bClipboardData)
{
_InsertMenuItemW(hMenu, indexMenu++, TRUE, 0, MFT_SEPARATOR, NULL, 0);
if (rfg & SFGAO_CANMOVE)
_InsertMenuItemW(hMenu, indexMenu++, TRUE, FCIDM_SHVIEW_CUT, MFT_STRING, MAKEINTRESOURCEW(IDS_CUT), MFS_ENABLED);
if (rfg & SFGAO_CANCOPY)
_InsertMenuItemW(hMenu, indexMenu++, TRUE, FCIDM_SHVIEW_COPY, MFT_STRING, MAKEINTRESOURCEW(IDS_COPY), MFS_ENABLED);
if (bClipboardData)
_InsertMenuItemW(hMenu, indexMenu++, TRUE, FCIDM_SHVIEW_INSERT, MFT_STRING, MAKEINTRESOURCEW(IDS_INSERT), MFS_ENABLED);
_InsertMenuItemW(hMenu, indexMenu++, TRUE, 0, MFT_SEPARATOR, NULL, 0);
if (rfg & SFGAO_CANMOVE)
_InsertMenuItemW(hMenu, indexMenu++, TRUE, FCIDM_SHVIEW_CUT, MFT_STRING, MAKEINTRESOURCEW(IDS_CUT), MFS_ENABLED);
if (rfg & SFGAO_CANCOPY)
_InsertMenuItemW(hMenu, indexMenu++, TRUE, FCIDM_SHVIEW_COPY, MFT_STRING, MAKEINTRESOURCEW(IDS_COPY), MFS_ENABLED);
if (bClipboardData)
_InsertMenuItemW(hMenu, indexMenu++, TRUE, FCIDM_SHVIEW_INSERT, MFT_STRING, MAKEINTRESOURCEW(IDS_INSERT), MFS_ENABLED);
bAddSep = TRUE;
bAddSep = TRUE;
}
@ -974,7 +974,7 @@ NotifyShellViewWindow(LPCMINVOKECOMMANDINFO lpcmi, BOOL bRefresh)
LPSHELLVIEW lpSV = NULL;
HWND hwndSV = NULL;
if((lpSB = (LPSHELLBROWSER)SendMessageA(lpcmi->hwnd, CWM_GETISHELLBROWSER,0,0)))
if((lpSB = (LPSHELLBROWSER)SendMessageA(lpcmi->hwnd, CWM_GETISHELLBROWSER, 0, 0)))
{
if(SUCCEEDED(lpSB->QueryActiveShellView(&lpSV)))
{
@ -1013,7 +1013,7 @@ IDefaultContextMenuImpl::DoPaste(
return E_FAIL;
InitFormatEtc(formatetc, RegisterClipboardFormatW(CFSTR_SHELLIDLIST), TYMED_HGLOBAL);
hr = pda->GetData(&formatetc,&medium);
hr = pda->GetData(&formatetc, &medium);
if (FAILED(hr))
{
@ -1149,11 +1149,11 @@ IDefaultContextMenuImpl::DoPaste(
psfhlpsrc->Release();
psfFrom->Release();
psfTarget->Release();
SHFree(pidl);
SHFree(pidl);
_ILFreeaPidl(apidl, lpcida->cidl);
ReleaseStgMedium(&medium);
pda->Release();
TRACE("CP result %x\n",hr);
TRACE("CP result %x\n", hr);
return S_OK;
}
@ -1174,7 +1174,7 @@ GetUniqueFileName(LPWSTR szBasePath, LPWSTR szExt, LPWSTR szTarget, BOOL bShortc
if (!bShortcut)
{
Length = LoadStringW(shell32_hInstance, IDS_LNK_FILE, szLnk, sizeof(szLnk)/sizeof(WCHAR));
Length = LoadStringW(shell32_hInstance, IDS_LNK_FILE, szLnk, sizeof(szLnk) / sizeof(WCHAR));
}
do
@ -1201,7 +1201,7 @@ GetUniqueFileName(LPWSTR szBasePath, LPWSTR szExt, LPWSTR szTarget, BOOL bShortc
return TRUE;
}
}while(RetryCount++ < 100);
} while(RetryCount++ < 100);
return FALSE;
@ -1263,7 +1263,7 @@ IDefaultContextMenuImpl::DoCreateLink(
if (pszFile) pszFile[0] = 0;
if (SUCCEEDED(nLink->SetPath(szPath)) &&
SUCCEEDED(nLink->SetWorkingDirectory(szDirPath)))
SUCCEEDED(nLink->SetWorkingDirectory(szDirPath)))
{
if (SUCCEEDED(nLink->QueryInterface(IID_IPersistFile, (LPVOID*)&ipf)))
{
@ -1294,8 +1294,8 @@ IDefaultContextMenuImpl::DoDelete(
hr = dcm.psf->GetDisplayNameOf(dcm.apidl[0], SHGDN_FORPARSING, &strTemp);
if(hr != S_OK)
{
ERR("IShellFolder_GetDisplayNameOf failed with %x\n", hr);
return hr;
ERR("IShellFolder_GetDisplayNameOf failed with %x\n", hr);
return hr;
}
ZeroMemory(szPath, sizeof(szPath));
hr = StrRetToBufW(&strTemp, dcm.apidl[0], szPath, MAX_PATH);
@ -1328,7 +1328,7 @@ IDefaultContextMenuImpl::DoDelete(
}
/* get the active IShellView */
if ((lpSB = (LPSHELLBROWSER)SendMessageA(lpcmi->hwnd, CWM_GETISHELLBROWSER,0,0)))
if ((lpSB = (LPSHELLBROWSER)SendMessageA(lpcmi->hwnd, CWM_GETISHELLBROWSER, 0, 0)))
{
/* is the treeview focused */
if (SUCCEEDED(lpSB->GetControlWindow(FCW_TREE, &hwnd)))
@ -1364,7 +1364,7 @@ IDefaultContextMenuImpl::DoCopyOrCut(
return hr;
}
lpSB = (LPSHELLBROWSER)SendMessageA(lpcmi->hwnd, CWM_GETISHELLBROWSER,0,0);
lpSB = (LPSHELLBROWSER)SendMessageA(lpcmi->hwnd, CWM_GETISHELLBROWSER, 0, 0);
if (!lpSB)
{
TRACE("failed to get shellbrowser\n");
@ -1404,7 +1404,7 @@ IDefaultContextMenuImpl::DoRename(
HWND hwnd;
/* get the active IShellView */
if ((lpSB = (LPSHELLBROWSER)SendMessageA(lpcmi->hwnd, CWM_GETISHELLBROWSER,0,0)))
if ((lpSB = (LPSHELLBROWSER)SendMessageA(lpcmi->hwnd, CWM_GETISHELLBROWSER, 0, 0)))
{
/* is the treeview focused */
if (SUCCEEDED(lpSB->GetControlWindow(FCW_TREE, &hwnd)))
@ -1419,7 +1419,7 @@ IDefaultContextMenuImpl::DoRename(
if(SUCCEEDED(lpSB->QueryActiveShellView(&lpSV)))
{
lpSV->SelectItem(dcm.apidl[0],
SVSI_DESELECTOTHERS|SVSI_EDIT|SVSI_ENSUREVISIBLE|SVSI_FOCUSED|SVSI_SELECT);
SVSI_DESELECTOTHERS | SVSI_EDIT | SVSI_ENSUREVISIBLE | SVSI_FOCUSED | SVSI_SELECT);
lpSV->Release();
return S_OK;
}
@ -1434,10 +1434,10 @@ IDefaultContextMenuImpl::DoProperties(
WCHAR szDrive[MAX_PATH];
STRRET strFile;
if (dcm.cidl &&_ILIsMyComputer(dcm.apidl[0]))
if (dcm.cidl && _ILIsMyComputer(dcm.apidl[0]))
{
ShellExecuteW(lpcmi->hwnd, L"open", L"rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl", NULL, NULL, SW_SHOWNORMAL);
return S_OK;
ShellExecuteW(lpcmi->hwnd, L"open", L"rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl", NULL, NULL, SW_SHOWNORMAL);
return S_OK;
}
else if (dcm.cidl == 0 && dcm.pidlFolder != NULL && _ILIsDesktop(dcm.pidlFolder))
{
@ -1454,7 +1454,7 @@ IDefaultContextMenuImpl::DoProperties(
{
//FIXME path!
ShellExecuteW(NULL, L"open", L"explorer.exe",
L"::{7007ACC7-3202-11D1-AAD2-00805FC1270E}",
L"::{7007ACC7-3202-11D1-AAD2-00805FC1270E}",
NULL, SW_SHOWDEFAULT);
return S_OK;
}
@ -1464,8 +1464,8 @@ IDefaultContextMenuImpl::DoProperties(
* detect the drive path of bitbucket if appropiate
*/
SH_ShowRecycleBinProperties(L'C');
return S_OK;
SH_ShowRecycleBinProperties(L'C');
return S_OK;
}
if (dcm.cidl > 1)
@ -1536,9 +1536,9 @@ IDefaultContextMenuImpl::DoStaticShellExtensions(
PStaticShellEntry pCurrent = shead;
int verb = LOWORD(lpcmi->lpVerb) - iIdSCMFirst;
while(pCurrent && verb-- > 0)
pCurrent = pCurrent->Next;
pCurrent = pCurrent->Next;
if (verb > 0)
return E_FAIL;
@ -1626,7 +1626,7 @@ IDefaultContextMenuImpl::InvokeCommand(
}
}
FIXME("Unhandled Verb %xl\n",LOWORD(lpcmi->lpVerb));
FIXME("Unhandled Verb %xl\n", LOWORD(lpcmi->lpVerb));
return E_UNEXPECTED;
}
@ -1654,9 +1654,9 @@ IDefaultContextMenuImpl::HandleMenuMsg(
return S_OK;
}
static
static
HRESULT
IDefaultContextMenu_Constructor(
IDefaultContextMenu_Constructor(
const DEFCONTEXTMENU *pdcm,
REFIID riid,
void **ppv)
@ -1697,13 +1697,13 @@ SHCreateDefaultContextMenu(
REFIID riid,
void **ppv)
{
HRESULT hr = E_FAIL;
HRESULT hr = E_FAIL;
*ppv = NULL;
hr = IDefaultContextMenu_Constructor( pdcm, riid, ppv );
if (FAILED(hr)) WARN("IDefaultContextMenu_Constructor failed: %x\n", hr);
TRACE("pcm %p hr %x\n", pdcm, hr);
return hr;
*ppv = NULL;
hr = IDefaultContextMenu_Constructor( pdcm, riid, ppv );
if (FAILED(hr)) WARN("IDefaultContextMenu_Constructor failed: %x\n", hr);
TRACE("pcm %p hr %x\n", pdcm, hr);
return hr;
}
/*************************************************************************
@ -1724,20 +1724,20 @@ CDefFolderMenu_Create2(
const HKEY *ahkeyClsKeys,
IContextMenu **ppcm)
{
DEFCONTEXTMENU pdcm;
HRESULT hr;
DEFCONTEXTMENU pdcm;
HRESULT hr;
pdcm.hwnd = hwnd;
pdcm.pcmcb = NULL;
pdcm.pidlFolder = pidlFolder;
pdcm.psf = psf;
pdcm.cidl = cidl;
pdcm.apidl = apidl;
pdcm.punkAssociationInfo = NULL;
pdcm.cKeys = nKeys;
pdcm.aKeys = ahkeyClsKeys;
pdcm.hwnd = hwnd;
pdcm.pcmcb = NULL;
pdcm.pidlFolder = pidlFolder;
pdcm.psf = psf;
pdcm.cidl = cidl;
pdcm.apidl = apidl;
pdcm.punkAssociationInfo = NULL;
pdcm.cKeys = nKeys;
pdcm.aKeys = ahkeyClsKeys;
hr = SHCreateDefaultContextMenu(&pdcm, IID_IContextMenu, (void**)ppcm);
return hr;
hr = SHCreateDefaultContextMenu(&pdcm, IID_IContextMenu, (void**)ppcm);
return hr;
}