forked from Mirrors/wine-wine
- new interface declaration for IShellfolder2
- added this interface to all shell folders - small fixes to shellview (crash with native comdlg32)oldstable
parent
38eae846bb
commit
15602ccf40
|
@ -69,7 +69,7 @@ static LPCWSTR GetNextElementW(LPCWSTR pszNext,LPWSTR pszOut,DWORD dwOut)
|
||||||
|
|
||||||
static HRESULT SHELL32_ParseNextElement(
|
static HRESULT SHELL32_ParseNextElement(
|
||||||
HWND hwndOwner,
|
HWND hwndOwner,
|
||||||
IShellFolder * psf,
|
IShellFolder2 * psf,
|
||||||
LPITEMIDLIST * pidlInOut,
|
LPITEMIDLIST * pidlInOut,
|
||||||
LPOLESTR szNext,
|
LPOLESTR szNext,
|
||||||
DWORD *pEaten,
|
DWORD *pEaten,
|
||||||
|
@ -117,7 +117,7 @@ static HRESULT SHELL32_CoCreateInitSF (
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
LPITEMIDLIST absPidl;
|
LPITEMIDLIST absPidl;
|
||||||
IShellFolder *pShellFolder;
|
IShellFolder2 *pShellFolder;
|
||||||
IPersistFolder *pPersistFolder;
|
IPersistFolder *pPersistFolder;
|
||||||
|
|
||||||
TRACE("%p %p\n", pidlRoot, pidlChild);
|
TRACE("%p %p\n", pidlRoot, pidlChild);
|
||||||
|
@ -144,14 +144,14 @@ static HRESULT SHELL32_CoCreateInitSF (
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT SHELL32_GetDisplayNameOfChild(
|
static HRESULT SHELL32_GetDisplayNameOfChild(
|
||||||
IShellFolder * psf,
|
IShellFolder2 * psf,
|
||||||
LPCITEMIDLIST pidl,
|
LPCITEMIDLIST pidl,
|
||||||
DWORD dwFlags,
|
DWORD dwFlags,
|
||||||
LPSTR szOut,
|
LPSTR szOut,
|
||||||
DWORD dwOutLen)
|
DWORD dwOutLen)
|
||||||
{
|
{
|
||||||
LPITEMIDLIST pidlFirst, pidlNext;
|
LPITEMIDLIST pidlFirst, pidlNext;
|
||||||
IShellFolder * psfChild;
|
IShellFolder2 * psfChild;
|
||||||
HRESULT hr = E_OUTOFMEMORY;
|
HRESULT hr = E_OUTOFMEMORY;
|
||||||
STRRET strTemp;
|
STRRET strTemp;
|
||||||
|
|
||||||
|
@ -187,7 +187,7 @@ static HRESULT SHELL32_GetDisplayNameOfChild(
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
ICOM_VFIELD(IShellFolder);
|
ICOM_VFIELD(IShellFolder2);
|
||||||
DWORD ref;
|
DWORD ref;
|
||||||
|
|
||||||
ICOM_VTABLE(IPersistFolder)* lpvtblPersistFolder;
|
ICOM_VTABLE(IPersistFolder)* lpvtblPersistFolder;
|
||||||
|
@ -202,7 +202,7 @@ typedef struct
|
||||||
BOOL fAcceptFmt; /* flag for pending Drop */
|
BOOL fAcceptFmt; /* flag for pending Drop */
|
||||||
} IGenericSFImpl;
|
} IGenericSFImpl;
|
||||||
|
|
||||||
static struct ICOM_VTABLE(IShellFolder) sfvt;
|
static struct ICOM_VTABLE(IShellFolder2) sfvt;
|
||||||
static struct ICOM_VTABLE(IPersistFolder) psfvt;
|
static struct ICOM_VTABLE(IPersistFolder) psfvt;
|
||||||
static struct ICOM_VTABLE(IDropTarget) dtvt;
|
static struct ICOM_VTABLE(IDropTarget) dtvt;
|
||||||
|
|
||||||
|
@ -218,7 +218,7 @@ static struct ICOM_VTABLE(IDropTarget) dtvt;
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* registers clipboardformat once
|
* registers clipboardformat once
|
||||||
*/
|
*/
|
||||||
static void SF_RegisterClipFmt (IShellFolder * iface)
|
static void SF_RegisterClipFmt (IShellFolder2 * iface)
|
||||||
{
|
{
|
||||||
ICOM_THIS(IGenericSFImpl, iface);
|
ICOM_THIS(IGenericSFImpl, iface);
|
||||||
|
|
||||||
|
@ -302,7 +302,7 @@ static IShellFolder * IShellFolder_Constructor(
|
||||||
* LPVOID* ppvObject [out] Interface* to hold the result
|
* LPVOID* ppvObject [out] Interface* to hold the result
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI IShellFolder_fnQueryInterface(
|
static HRESULT WINAPI IShellFolder_fnQueryInterface(
|
||||||
IShellFolder * iface,
|
IShellFolder2 * iface,
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
LPVOID *ppvObj)
|
LPVOID *ppvObj)
|
||||||
{
|
{
|
||||||
|
@ -321,6 +321,10 @@ static HRESULT WINAPI IShellFolder_fnQueryInterface(
|
||||||
{
|
{
|
||||||
*ppvObj = (IShellFolder*)This;
|
*ppvObj = (IShellFolder*)This;
|
||||||
}
|
}
|
||||||
|
else if(IsEqualIID(riid, &IID_IShellFolder2))
|
||||||
|
{
|
||||||
|
*ppvObj = (IShellFolder2*)This;
|
||||||
|
}
|
||||||
else if(IsEqualIID(riid, &IID_IPersist))
|
else if(IsEqualIID(riid, &IID_IPersist))
|
||||||
{
|
{
|
||||||
*ppvObj = (IPersistFolder*)&(This->lpvtblPersistFolder);
|
*ppvObj = (IPersistFolder*)&(This->lpvtblPersistFolder);
|
||||||
|
@ -332,7 +336,7 @@ static HRESULT WINAPI IShellFolder_fnQueryInterface(
|
||||||
else if(IsEqualIID(riid, &IID_IDropTarget))
|
else if(IsEqualIID(riid, &IID_IDropTarget))
|
||||||
{
|
{
|
||||||
*ppvObj = (IDropTarget*)&(This->lpvtblDropTarget);
|
*ppvObj = (IDropTarget*)&(This->lpvtblDropTarget);
|
||||||
SF_RegisterClipFmt((IShellFolder*)This);
|
SF_RegisterClipFmt((IShellFolder2*)This);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(*ppvObj)
|
if(*ppvObj)
|
||||||
|
@ -349,7 +353,7 @@ static HRESULT WINAPI IShellFolder_fnQueryInterface(
|
||||||
* IShellFolder_AddRef
|
* IShellFolder_AddRef
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static ULONG WINAPI IShellFolder_fnAddRef(IShellFolder * iface)
|
static ULONG WINAPI IShellFolder_fnAddRef(IShellFolder2 * iface)
|
||||||
{
|
{
|
||||||
ICOM_THIS(IGenericSFImpl, iface);
|
ICOM_THIS(IGenericSFImpl, iface);
|
||||||
|
|
||||||
|
@ -365,7 +369,7 @@ static ULONG WINAPI IShellFolder_fnAddRef(IShellFolder * iface)
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* IShellFolder_fnRelease
|
* IShellFolder_fnRelease
|
||||||
*/
|
*/
|
||||||
static ULONG WINAPI IShellFolder_fnRelease(IShellFolder * iface)
|
static ULONG WINAPI IShellFolder_fnRelease(IShellFolder2 * iface)
|
||||||
{
|
{
|
||||||
ICOM_THIS(IGenericSFImpl, iface);
|
ICOM_THIS(IGenericSFImpl, iface);
|
||||||
|
|
||||||
|
@ -378,7 +382,7 @@ static ULONG WINAPI IShellFolder_fnRelease(IShellFolder * iface)
|
||||||
if (!--(This->ref))
|
if (!--(This->ref))
|
||||||
{ TRACE("-- destroying IShellFolder(%p)\n",This);
|
{ TRACE("-- destroying IShellFolder(%p)\n",This);
|
||||||
|
|
||||||
if (pdesktopfolder == iface)
|
if (pdesktopfolder == (IShellFolder*) iface)
|
||||||
{ pdesktopfolder=NULL;
|
{ pdesktopfolder=NULL;
|
||||||
TRACE("-- destroyed IShellFolder(%p) was Desktopfolder\n",This);
|
TRACE("-- destroyed IShellFolder(%p) was Desktopfolder\n",This);
|
||||||
}
|
}
|
||||||
|
@ -418,7 +422,7 @@ static ULONG WINAPI IShellFolder_fnRelease(IShellFolder * iface)
|
||||||
* pchEaten: not set like in windows
|
* pchEaten: not set like in windows
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI IShellFolder_fnParseDisplayName(
|
static HRESULT WINAPI IShellFolder_fnParseDisplayName(
|
||||||
IShellFolder * iface,
|
IShellFolder2 * iface,
|
||||||
HWND hwndOwner,
|
HWND hwndOwner,
|
||||||
LPBC pbcReserved,
|
LPBC pbcReserved,
|
||||||
LPOLESTR lpszDisplayName,
|
LPOLESTR lpszDisplayName,
|
||||||
|
@ -461,7 +465,7 @@ static HRESULT WINAPI IShellFolder_fnParseDisplayName(
|
||||||
/* try to analyse the next element */
|
/* try to analyse the next element */
|
||||||
if (szNext && *szNext)
|
if (szNext && *szNext)
|
||||||
{
|
{
|
||||||
hr = SHELL32_ParseNextElement(hwndOwner, (IShellFolder*)This, &pidlTemp, (LPOLESTR)szNext, pchEaten, pdwAttributes);
|
hr = SHELL32_ParseNextElement(hwndOwner, (IShellFolder2*)This, &pidlTemp, (LPOLESTR)szNext, pchEaten, pdwAttributes);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -485,7 +489,7 @@ static HRESULT WINAPI IShellFolder_fnParseDisplayName(
|
||||||
* LPENUMIDLIST* ppenumIDList //[out] IEnumIDList interface
|
* LPENUMIDLIST* ppenumIDList //[out] IEnumIDList interface
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI IShellFolder_fnEnumObjects(
|
static HRESULT WINAPI IShellFolder_fnEnumObjects(
|
||||||
IShellFolder * iface,
|
IShellFolder2 * iface,
|
||||||
HWND hwndOwner,
|
HWND hwndOwner,
|
||||||
DWORD dwFlags,
|
DWORD dwFlags,
|
||||||
LPENUMIDLIST* ppEnumIDList)
|
LPENUMIDLIST* ppEnumIDList)
|
||||||
|
@ -512,7 +516,7 @@ static HRESULT WINAPI IShellFolder_fnEnumObjects(
|
||||||
* REFIID riid, //[in ] Initial Interface
|
* REFIID riid, //[in ] Initial Interface
|
||||||
* LPVOID* ppvObject //[out] Interface*
|
* LPVOID* ppvObject //[out] Interface*
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI IShellFolder_fnBindToObject( IShellFolder * iface, LPCITEMIDLIST pidl,
|
static HRESULT WINAPI IShellFolder_fnBindToObject( IShellFolder2 * iface, LPCITEMIDLIST pidl,
|
||||||
LPBC pbcReserved, REFIID riid, LPVOID * ppvOut)
|
LPBC pbcReserved, REFIID riid, LPVOID * ppvOut)
|
||||||
{
|
{
|
||||||
ICOM_THIS(IGenericSFImpl, iface);
|
ICOM_THIS(IGenericSFImpl, iface);
|
||||||
|
@ -578,7 +582,7 @@ static HRESULT WINAPI IShellFolder_fnBindToObject( IShellFolder * iface, LPCITEM
|
||||||
* LPVOID* ppvObject //[out] Interface* returned
|
* LPVOID* ppvObject //[out] Interface* returned
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI IShellFolder_fnBindToStorage(
|
static HRESULT WINAPI IShellFolder_fnBindToStorage(
|
||||||
IShellFolder * iface,
|
IShellFolder2 * iface,
|
||||||
LPCITEMIDLIST pidl,
|
LPCITEMIDLIST pidl,
|
||||||
LPBC pbcReserved,
|
LPBC pbcReserved,
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
|
@ -612,7 +616,7 @@ static HRESULT WINAPI IShellFolder_fnBindToStorage(
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static HRESULT WINAPI IShellFolder_fnCompareIDs(
|
static HRESULT WINAPI IShellFolder_fnCompareIDs(
|
||||||
IShellFolder * iface,
|
IShellFolder2 * iface,
|
||||||
LPARAM lParam,
|
LPARAM lParam,
|
||||||
LPCITEMIDLIST pidl1,
|
LPCITEMIDLIST pidl1,
|
||||||
LPCITEMIDLIST pidl2)
|
LPCITEMIDLIST pidl2)
|
||||||
|
@ -700,7 +704,7 @@ static HRESULT WINAPI IShellFolder_fnCompareIDs(
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* IShellFolder_fnCreateViewObject
|
* IShellFolder_fnCreateViewObject
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI IShellFolder_fnCreateViewObject( IShellFolder * iface,
|
static HRESULT WINAPI IShellFolder_fnCreateViewObject( IShellFolder2 * iface,
|
||||||
HWND hwndOwner, REFIID riid, LPVOID *ppvOut)
|
HWND hwndOwner, REFIID riid, LPVOID *ppvOut)
|
||||||
{
|
{
|
||||||
ICOM_THIS(IGenericSFImpl, iface);
|
ICOM_THIS(IGenericSFImpl, iface);
|
||||||
|
@ -748,7 +752,7 @@ static HRESULT WINAPI IShellFolder_fnCreateViewObject( IShellFolder * iface,
|
||||||
* ULONG* rgfInOut) //[out] result array
|
* ULONG* rgfInOut) //[out] result array
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI IShellFolder_fnGetAttributesOf(IShellFolder * iface,UINT cidl,LPCITEMIDLIST *apidl,DWORD *rgfInOut)
|
static HRESULT WINAPI IShellFolder_fnGetAttributesOf(IShellFolder2 * iface,UINT cidl,LPCITEMIDLIST *apidl,DWORD *rgfInOut)
|
||||||
{
|
{
|
||||||
ICOM_THIS(IGenericSFImpl, iface);
|
ICOM_THIS(IGenericSFImpl, iface);
|
||||||
|
|
||||||
|
@ -804,7 +808,7 @@ next: apidl++;
|
||||||
* and GetData's it if the drop is in another explorer window that needs the positions.
|
* and GetData's it if the drop is in another explorer window that needs the positions.
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI IShellFolder_fnGetUIObjectOf(
|
static HRESULT WINAPI IShellFolder_fnGetUIObjectOf(
|
||||||
IShellFolder * iface,
|
IShellFolder2 * iface,
|
||||||
HWND hwndOwner,
|
HWND hwndOwner,
|
||||||
UINT cidl,
|
UINT cidl,
|
||||||
LPCITEMIDLIST * apidl,
|
LPCITEMIDLIST * apidl,
|
||||||
|
@ -879,7 +883,7 @@ static HRESULT WINAPI IShellFolder_fnGetUIObjectOf(
|
||||||
#define GET_SHGDN_RELATION(dwFlags) ((DWORD)dwFlags & (DWORD)0x000000FF)
|
#define GET_SHGDN_RELATION(dwFlags) ((DWORD)dwFlags & (DWORD)0x000000FF)
|
||||||
|
|
||||||
static HRESULT WINAPI IShellFolder_fnGetDisplayNameOf(
|
static HRESULT WINAPI IShellFolder_fnGetDisplayNameOf(
|
||||||
IShellFolder * iface,
|
IShellFolder2 * iface,
|
||||||
LPCITEMIDLIST pidl,
|
LPCITEMIDLIST pidl,
|
||||||
DWORD dwFlags,
|
DWORD dwFlags,
|
||||||
LPSTRRET strRet)
|
LPSTRRET strRet)
|
||||||
|
@ -921,7 +925,7 @@ static HRESULT WINAPI IShellFolder_fnGetDisplayNameOf(
|
||||||
PathAddBackslashA(szPath);
|
PathAddBackslashA(szPath);
|
||||||
len = strlen(szPath);
|
len = strlen(szPath);
|
||||||
|
|
||||||
if (!SUCCEEDED(SHELL32_GetDisplayNameOfChild((IShellFolder*)This, pidl, dwFlags, szPath + len, MAX_PATH - len)))
|
if (!SUCCEEDED(SHELL32_GetDisplayNameOfChild((IShellFolder2*)This, pidl, dwFlags, szPath + len, MAX_PATH - len)))
|
||||||
return E_OUTOFMEMORY;
|
return E_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
strRet->uType = STRRET_CSTRA;
|
strRet->uType = STRRET_CSTRA;
|
||||||
|
@ -944,7 +948,7 @@ static HRESULT WINAPI IShellFolder_fnGetDisplayNameOf(
|
||||||
* LPITEMIDLIST* ppidlOut) //[out] simple pidl returned
|
* LPITEMIDLIST* ppidlOut) //[out] simple pidl returned
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI IShellFolder_fnSetNameOf(
|
static HRESULT WINAPI IShellFolder_fnSetNameOf(
|
||||||
IShellFolder * iface,
|
IShellFolder2 * iface,
|
||||||
HWND hwndOwner,
|
HWND hwndOwner,
|
||||||
LPCITEMIDLIST pidl, /*simple pidl*/
|
LPCITEMIDLIST pidl, /*simple pidl*/
|
||||||
LPCOLESTR lpName,
|
LPCOLESTR lpName,
|
||||||
|
@ -962,7 +966,7 @@ static HRESULT WINAPI IShellFolder_fnSetNameOf(
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* IShellFolder_fnGetFolderPath
|
* IShellFolder_fnGetFolderPath
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI IShellFolder_fnGetFolderPath(IShellFolder * iface, LPSTR lpszOut, DWORD dwOutSize)
|
static HRESULT WINAPI IShellFolder_fnGetFolderPath(IShellFolder2 * iface, LPSTR lpszOut, DWORD dwOutSize)
|
||||||
{
|
{
|
||||||
ICOM_THIS(IGenericSFImpl, iface);
|
ICOM_THIS(IGenericSFImpl, iface);
|
||||||
|
|
||||||
|
@ -980,7 +984,72 @@ static HRESULT WINAPI IShellFolder_fnGetFolderPath(IShellFolder * iface, LPSTR l
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ICOM_VTABLE(IShellFolder) sfvt =
|
static HRESULT WINAPI IShellFolder_fnGetDefaultSearchGUID(
|
||||||
|
IShellFolder2 * iface,
|
||||||
|
GUID *pguid)
|
||||||
|
{
|
||||||
|
ICOM_THIS(IGenericSFImpl, iface);
|
||||||
|
TRACE("(%p)\n",This);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
static HRESULT WINAPI IShellFolder_fnEnumSearches(
|
||||||
|
IShellFolder2 * iface,
|
||||||
|
IEnumExtraSearch **ppenum)
|
||||||
|
{
|
||||||
|
ICOM_THIS(IGenericSFImpl, iface);
|
||||||
|
TRACE("(%p)\n",This);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
static HRESULT WINAPI IShellFolder_fnGetDefaultColumn(
|
||||||
|
IShellFolder2 * iface,
|
||||||
|
DWORD dwRes,
|
||||||
|
ULONG *pSort,
|
||||||
|
ULONG *pDisplay)
|
||||||
|
{
|
||||||
|
ICOM_THIS(IGenericSFImpl, iface);
|
||||||
|
TRACE("(%p)\n",This);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
static HRESULT WINAPI IShellFolder_fnGetDefaultColumnState(
|
||||||
|
IShellFolder2 * iface,
|
||||||
|
UINT iColumn,
|
||||||
|
DWORD *pcsFlags)
|
||||||
|
{
|
||||||
|
ICOM_THIS(IGenericSFImpl, iface);
|
||||||
|
TRACE("(%p)\n",This);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
static HRESULT WINAPI IShellFolder_fnGetDetailsEx(
|
||||||
|
IShellFolder2 * iface,
|
||||||
|
LPCITEMIDLIST pidl,
|
||||||
|
const SHCOLUMNID *pscid,
|
||||||
|
VARIANT *pv)
|
||||||
|
{
|
||||||
|
ICOM_THIS(IGenericSFImpl, iface);
|
||||||
|
TRACE("(%p)\n",This);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
static HRESULT WINAPI IShellFolder_fnGetDetailsOf(
|
||||||
|
IShellFolder2 * iface,
|
||||||
|
LPCITEMIDLIST pidl,
|
||||||
|
UINT iColumn,
|
||||||
|
SHELLDETAILS *psd)
|
||||||
|
{
|
||||||
|
ICOM_THIS(IGenericSFImpl, iface);
|
||||||
|
TRACE("(%p)\n",This);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
static HRESULT WINAPI IShellFolder_fnMapNameToSCID(
|
||||||
|
IShellFolder2 * iface,
|
||||||
|
LPCWSTR pwszName,
|
||||||
|
SHCOLUMNID *pscid)
|
||||||
|
{
|
||||||
|
ICOM_THIS(IGenericSFImpl, iface);
|
||||||
|
TRACE("(%p)\n",This);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static ICOM_VTABLE(IShellFolder2) sfvt =
|
||||||
{
|
{
|
||||||
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
|
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
|
||||||
IShellFolder_fnQueryInterface,
|
IShellFolder_fnQueryInterface,
|
||||||
|
@ -996,13 +1065,21 @@ static ICOM_VTABLE(IShellFolder) sfvt =
|
||||||
IShellFolder_fnGetUIObjectOf,
|
IShellFolder_fnGetUIObjectOf,
|
||||||
IShellFolder_fnGetDisplayNameOf,
|
IShellFolder_fnGetDisplayNameOf,
|
||||||
IShellFolder_fnSetNameOf,
|
IShellFolder_fnSetNameOf,
|
||||||
IShellFolder_fnGetFolderPath
|
|
||||||
|
/* ShellFolder2 */
|
||||||
|
IShellFolder_fnGetDefaultSearchGUID,
|
||||||
|
IShellFolder_fnEnumSearches,
|
||||||
|
IShellFolder_fnGetDefaultColumn,
|
||||||
|
IShellFolder_fnGetDefaultColumnState,
|
||||||
|
IShellFolder_fnGetDetailsEx,
|
||||||
|
IShellFolder_fnGetDetailsOf,
|
||||||
|
IShellFolder_fnMapNameToSCID
|
||||||
};
|
};
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* [Desktopfolder] IShellFolder implementation
|
* [Desktopfolder] IShellFolder implementation
|
||||||
*/
|
*/
|
||||||
static struct ICOM_VTABLE(IShellFolder) sfdvt;
|
static struct ICOM_VTABLE(IShellFolder2) sfdvt;
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* ISF_Desktop_Constructor
|
* ISF_Desktop_Constructor
|
||||||
|
@ -1029,7 +1106,7 @@ IShellFolder * ISF_Desktop_Constructor()
|
||||||
* NOTES supports not IPersist/IPersistFolder
|
* NOTES supports not IPersist/IPersistFolder
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI ISF_Desktop_fnQueryInterface(
|
static HRESULT WINAPI ISF_Desktop_fnQueryInterface(
|
||||||
IShellFolder * iface,
|
IShellFolder2 * iface,
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
LPVOID *ppvObj)
|
LPVOID *ppvObj)
|
||||||
{
|
{
|
||||||
|
@ -1047,6 +1124,9 @@ static HRESULT WINAPI ISF_Desktop_fnQueryInterface(
|
||||||
else if(IsEqualIID(riid, &IID_IShellFolder)) /*IShellFolder*/
|
else if(IsEqualIID(riid, &IID_IShellFolder)) /*IShellFolder*/
|
||||||
{ *ppvObj = (IShellFolder*)This;
|
{ *ppvObj = (IShellFolder*)This;
|
||||||
}
|
}
|
||||||
|
else if(IsEqualIID(riid, &IID_IShellFolder2)) /*IShellFolder2*/
|
||||||
|
{ *ppvObj = (IShellFolder2*)This;
|
||||||
|
}
|
||||||
|
|
||||||
if(*ppvObj)
|
if(*ppvObj)
|
||||||
{
|
{
|
||||||
|
@ -1066,7 +1146,7 @@ static HRESULT WINAPI ISF_Desktop_fnQueryInterface(
|
||||||
* to MyComputer
|
* to MyComputer
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI ISF_Desktop_fnParseDisplayName(
|
static HRESULT WINAPI ISF_Desktop_fnParseDisplayName(
|
||||||
IShellFolder * iface,
|
IShellFolder2 * iface,
|
||||||
HWND hwndOwner,
|
HWND hwndOwner,
|
||||||
LPBC pbcReserved,
|
LPBC pbcReserved,
|
||||||
LPOLESTR lpszDisplayName,
|
LPOLESTR lpszDisplayName,
|
||||||
|
@ -1093,7 +1173,7 @@ static HRESULT WINAPI ISF_Desktop_fnParseDisplayName(
|
||||||
|
|
||||||
if (szNext && *szNext)
|
if (szNext && *szNext)
|
||||||
{
|
{
|
||||||
hr = SHELL32_ParseNextElement(hwndOwner, (IShellFolder*)This, &pidlTemp, (LPOLESTR)szNext, pchEaten, pdwAttributes);
|
hr = SHELL32_ParseNextElement(hwndOwner, (IShellFolder2*)This, &pidlTemp, (LPOLESTR)szNext, pchEaten, pdwAttributes);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1111,7 +1191,7 @@ static HRESULT WINAPI ISF_Desktop_fnParseDisplayName(
|
||||||
* ISF_Desktop_fnEnumObjects
|
* ISF_Desktop_fnEnumObjects
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI ISF_Desktop_fnEnumObjects(
|
static HRESULT WINAPI ISF_Desktop_fnEnumObjects(
|
||||||
IShellFolder * iface,
|
IShellFolder2 * iface,
|
||||||
HWND hwndOwner,
|
HWND hwndOwner,
|
||||||
DWORD dwFlags,
|
DWORD dwFlags,
|
||||||
LPENUMIDLIST* ppEnumIDList)
|
LPENUMIDLIST* ppEnumIDList)
|
||||||
|
@ -1133,7 +1213,7 @@ static HRESULT WINAPI ISF_Desktop_fnEnumObjects(
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* ISF_Desktop_fnBindToObject
|
* ISF_Desktop_fnBindToObject
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI ISF_Desktop_fnBindToObject( IShellFolder * iface, LPCITEMIDLIST pidl,
|
static HRESULT WINAPI ISF_Desktop_fnBindToObject( IShellFolder2 * iface, LPCITEMIDLIST pidl,
|
||||||
LPBC pbcReserved, REFIID riid, LPVOID * ppvOut)
|
LPBC pbcReserved, REFIID riid, LPVOID * ppvOut)
|
||||||
{
|
{
|
||||||
ICOM_THIS(IGenericSFImpl, iface);
|
ICOM_THIS(IGenericSFImpl, iface);
|
||||||
|
@ -1189,7 +1269,7 @@ static HRESULT WINAPI ISF_Desktop_fnBindToObject( IShellFolder * iface, LPCITEMI
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* ISF_Desktop_fnCreateViewObject
|
* ISF_Desktop_fnCreateViewObject
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI ISF_Desktop_fnCreateViewObject( IShellFolder * iface,
|
static HRESULT WINAPI ISF_Desktop_fnCreateViewObject( IShellFolder2 * iface,
|
||||||
HWND hwndOwner, REFIID riid, LPVOID *ppvOut)
|
HWND hwndOwner, REFIID riid, LPVOID *ppvOut)
|
||||||
{
|
{
|
||||||
ICOM_THIS(IGenericSFImpl, iface);
|
ICOM_THIS(IGenericSFImpl, iface);
|
||||||
|
@ -1232,7 +1312,7 @@ static HRESULT WINAPI ISF_Desktop_fnCreateViewObject( IShellFolder * iface,
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* ISF_Desktop_fnGetAttributesOf
|
* ISF_Desktop_fnGetAttributesOf
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI ISF_Desktop_fnGetAttributesOf(IShellFolder * iface,UINT cidl,LPCITEMIDLIST *apidl,DWORD *rgfInOut)
|
static HRESULT WINAPI ISF_Desktop_fnGetAttributesOf(IShellFolder2 * iface,UINT cidl,LPCITEMIDLIST *apidl,DWORD *rgfInOut)
|
||||||
{
|
{
|
||||||
ICOM_THIS(IGenericSFImpl, iface);
|
ICOM_THIS(IGenericSFImpl, iface);
|
||||||
|
|
||||||
|
@ -1294,7 +1374,7 @@ next: apidl++;
|
||||||
* special case: pidl = null gives desktop-name back
|
* special case: pidl = null gives desktop-name back
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI ISF_Desktop_fnGetDisplayNameOf(
|
static HRESULT WINAPI ISF_Desktop_fnGetDisplayNameOf(
|
||||||
IShellFolder * iface,
|
IShellFolder2 * iface,
|
||||||
LPCITEMIDLIST pidl,
|
LPCITEMIDLIST pidl,
|
||||||
DWORD dwFlags,
|
DWORD dwFlags,
|
||||||
LPSTRRET strRet)
|
LPSTRRET strRet)
|
||||||
|
@ -1318,7 +1398,7 @@ static HRESULT WINAPI ISF_Desktop_fnGetDisplayNameOf(
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!SUCCEEDED(SHELL32_GetDisplayNameOfChild((IShellFolder*)This, pidl, dwFlags, szPath, MAX_PATH)))
|
if (!SUCCEEDED(SHELL32_GetDisplayNameOfChild((IShellFolder2*)This, pidl, dwFlags, szPath, MAX_PATH)))
|
||||||
return E_OUTOFMEMORY;
|
return E_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
strRet->uType = STRRET_CSTRA;
|
strRet->uType = STRRET_CSTRA;
|
||||||
|
@ -1329,7 +1409,7 @@ static HRESULT WINAPI ISF_Desktop_fnGetDisplayNameOf(
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ICOM_VTABLE(IShellFolder) sfdvt =
|
static ICOM_VTABLE(IShellFolder2) sfdvt =
|
||||||
{
|
{
|
||||||
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
|
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
|
||||||
ISF_Desktop_fnQueryInterface,
|
ISF_Desktop_fnQueryInterface,
|
||||||
|
@ -1345,7 +1425,15 @@ static ICOM_VTABLE(IShellFolder) sfdvt =
|
||||||
IShellFolder_fnGetUIObjectOf,
|
IShellFolder_fnGetUIObjectOf,
|
||||||
ISF_Desktop_fnGetDisplayNameOf,
|
ISF_Desktop_fnGetDisplayNameOf,
|
||||||
IShellFolder_fnSetNameOf,
|
IShellFolder_fnSetNameOf,
|
||||||
IShellFolder_fnGetFolderPath
|
|
||||||
|
/* ShellFolder2 */
|
||||||
|
IShellFolder_fnGetDefaultSearchGUID,
|
||||||
|
IShellFolder_fnEnumSearches,
|
||||||
|
IShellFolder_fnGetDefaultColumn,
|
||||||
|
IShellFolder_fnGetDefaultColumnState,
|
||||||
|
IShellFolder_fnGetDetailsEx,
|
||||||
|
IShellFolder_fnGetDetailsOf,
|
||||||
|
IShellFolder_fnMapNameToSCID
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1353,7 +1441,7 @@ static ICOM_VTABLE(IShellFolder) sfdvt =
|
||||||
* IShellFolder [MyComputer] implementation
|
* IShellFolder [MyComputer] implementation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static struct ICOM_VTABLE(IShellFolder) sfmcvt;
|
static struct ICOM_VTABLE(IShellFolder2) sfmcvt;
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* ISF_MyComputer_Constructor
|
* ISF_MyComputer_Constructor
|
||||||
|
@ -1380,7 +1468,7 @@ static IShellFolder * ISF_MyComputer_Constructor(void)
|
||||||
* ISF_MyComputer_fnParseDisplayName
|
* ISF_MyComputer_fnParseDisplayName
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI ISF_MyComputer_fnParseDisplayName(
|
static HRESULT WINAPI ISF_MyComputer_fnParseDisplayName(
|
||||||
IShellFolder * iface,
|
IShellFolder2 * iface,
|
||||||
HWND hwndOwner,
|
HWND hwndOwner,
|
||||||
LPBC pbcReserved,
|
LPBC pbcReserved,
|
||||||
LPOLESTR lpszDisplayName,
|
LPOLESTR lpszDisplayName,
|
||||||
|
@ -1411,7 +1499,7 @@ static HRESULT WINAPI ISF_MyComputer_fnParseDisplayName(
|
||||||
|
|
||||||
if (szNext && *szNext)
|
if (szNext && *szNext)
|
||||||
{
|
{
|
||||||
hr = SHELL32_ParseNextElement(hwndOwner, (IShellFolder*)This, &pidlTemp, (LPOLESTR)szNext, pchEaten, pdwAttributes);
|
hr = SHELL32_ParseNextElement(hwndOwner, (IShellFolder2*)This, &pidlTemp, (LPOLESTR)szNext, pchEaten, pdwAttributes);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1429,7 +1517,7 @@ static HRESULT WINAPI ISF_MyComputer_fnParseDisplayName(
|
||||||
* ISF_MyComputer_fnEnumObjects
|
* ISF_MyComputer_fnEnumObjects
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI ISF_MyComputer_fnEnumObjects(
|
static HRESULT WINAPI ISF_MyComputer_fnEnumObjects(
|
||||||
IShellFolder * iface,
|
IShellFolder2 * iface,
|
||||||
HWND hwndOwner,
|
HWND hwndOwner,
|
||||||
DWORD dwFlags,
|
DWORD dwFlags,
|
||||||
LPENUMIDLIST* ppEnumIDList)
|
LPENUMIDLIST* ppEnumIDList)
|
||||||
|
@ -1451,7 +1539,7 @@ static HRESULT WINAPI ISF_MyComputer_fnEnumObjects(
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* ISF_MyComputer_fnBindToObject
|
* ISF_MyComputer_fnBindToObject
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI ISF_MyComputer_fnBindToObject( IShellFolder * iface, LPCITEMIDLIST pidl,
|
static HRESULT WINAPI ISF_MyComputer_fnBindToObject( IShellFolder2 * iface, LPCITEMIDLIST pidl,
|
||||||
LPBC pbcReserved, REFIID riid, LPVOID * ppvOut)
|
LPBC pbcReserved, REFIID riid, LPVOID * ppvOut)
|
||||||
{
|
{
|
||||||
ICOM_THIS(IGenericSFImpl, iface);
|
ICOM_THIS(IGenericSFImpl, iface);
|
||||||
|
@ -1503,7 +1591,7 @@ static HRESULT WINAPI ISF_MyComputer_fnBindToObject( IShellFolder * iface, LPCIT
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* ISF_MyComputer_fnCreateViewObject
|
* ISF_MyComputer_fnCreateViewObject
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI ISF_MyComputer_fnCreateViewObject( IShellFolder * iface,
|
static HRESULT WINAPI ISF_MyComputer_fnCreateViewObject( IShellFolder2 * iface,
|
||||||
HWND hwndOwner, REFIID riid, LPVOID *ppvOut)
|
HWND hwndOwner, REFIID riid, LPVOID *ppvOut)
|
||||||
{
|
{
|
||||||
ICOM_THIS(IGenericSFImpl, iface);
|
ICOM_THIS(IGenericSFImpl, iface);
|
||||||
|
@ -1546,7 +1634,7 @@ static HRESULT WINAPI ISF_MyComputer_fnCreateViewObject( IShellFolder * iface,
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* ISF_MyComputer_fnGetAttributesOf
|
* ISF_MyComputer_fnGetAttributesOf
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI ISF_MyComputer_fnGetAttributesOf(IShellFolder * iface,UINT cidl,LPCITEMIDLIST *apidl,DWORD *rgfInOut)
|
static HRESULT WINAPI ISF_MyComputer_fnGetAttributesOf(IShellFolder2 * iface,UINT cidl,LPCITEMIDLIST *apidl,DWORD *rgfInOut)
|
||||||
{
|
{
|
||||||
ICOM_THIS(IGenericSFImpl, iface);
|
ICOM_THIS(IGenericSFImpl, iface);
|
||||||
|
|
||||||
|
@ -1596,7 +1684,7 @@ next: apidl++;
|
||||||
* SHGDN_INFOLDER makes no sense.
|
* SHGDN_INFOLDER makes no sense.
|
||||||
*/
|
*/
|
||||||
static HRESULT WINAPI ISF_MyComputer_fnGetDisplayNameOf(
|
static HRESULT WINAPI ISF_MyComputer_fnGetDisplayNameOf(
|
||||||
IShellFolder * iface,
|
IShellFolder2 * iface,
|
||||||
LPCITEMIDLIST pidl,
|
LPCITEMIDLIST pidl,
|
||||||
DWORD dwFlags,
|
DWORD dwFlags,
|
||||||
LPSTRRET strRet)
|
LPSTRRET strRet)
|
||||||
|
@ -1653,7 +1741,7 @@ static HRESULT WINAPI ISF_MyComputer_fnGetDisplayNameOf(
|
||||||
PathAddBackslashA(szPath);
|
PathAddBackslashA(szPath);
|
||||||
len = strlen(szPath);
|
len = strlen(szPath);
|
||||||
|
|
||||||
if (!SUCCEEDED(SHELL32_GetDisplayNameOfChild((IShellFolder*)This, pidl, dwFlags | SHGDN_FORPARSING, szPath + len, MAX_PATH - len)))
|
if (!SUCCEEDED(SHELL32_GetDisplayNameOfChild((IShellFolder2*)This, pidl, dwFlags | SHGDN_FORPARSING, szPath + len, MAX_PATH - len)))
|
||||||
return E_OUTOFMEMORY;
|
return E_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
strRet->uType = STRRET_CSTRA;
|
strRet->uType = STRRET_CSTRA;
|
||||||
|
@ -1664,7 +1752,7 @@ static HRESULT WINAPI ISF_MyComputer_fnGetDisplayNameOf(
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ICOM_VTABLE(IShellFolder) sfmcvt =
|
static ICOM_VTABLE(IShellFolder2) sfmcvt =
|
||||||
{
|
{
|
||||||
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
|
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
|
||||||
IShellFolder_fnQueryInterface,
|
IShellFolder_fnQueryInterface,
|
||||||
|
@ -1680,7 +1768,15 @@ static ICOM_VTABLE(IShellFolder) sfmcvt =
|
||||||
IShellFolder_fnGetUIObjectOf,
|
IShellFolder_fnGetUIObjectOf,
|
||||||
ISF_MyComputer_fnGetDisplayNameOf,
|
ISF_MyComputer_fnGetDisplayNameOf,
|
||||||
IShellFolder_fnSetNameOf,
|
IShellFolder_fnSetNameOf,
|
||||||
IShellFolder_fnGetFolderPath
|
|
||||||
|
/* ShellFolder2 */
|
||||||
|
IShellFolder_fnGetDefaultSearchGUID,
|
||||||
|
IShellFolder_fnEnumSearches,
|
||||||
|
IShellFolder_fnGetDefaultColumn,
|
||||||
|
IShellFolder_fnGetDefaultColumnState,
|
||||||
|
IShellFolder_fnGetDetailsEx,
|
||||||
|
IShellFolder_fnGetDetailsOf,
|
||||||
|
IShellFolder_fnMapNameToSCID
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,23 @@
|
||||||
/*
|
/*
|
||||||
* ShellView
|
* ShellView
|
||||||
*
|
*
|
||||||
* Copyright 1998,1999 <juergen.schmied@metronet.de>
|
* Copyright 1998,1999 <juergen.schmied@debitel.net>
|
||||||
*
|
*
|
||||||
* FIXME: when the ShellView_WndProc gets a WM_NCDESTROY should we do a
|
* FIXME: when the ShellView_WndProc gets a WM_NCDESTROY should we do a
|
||||||
* Release() ???
|
* Release() ???
|
||||||
*
|
*
|
||||||
|
* FIXME: There is still a design problem in this implementation.
|
||||||
|
* This implementation is more or less ok for file system folders
|
||||||
|
* but there are many more kinds of folders.
|
||||||
|
* The shellview is not supposed to know much about the colums
|
||||||
|
* appearing in the view. To fix this it should use the IShellFolder2
|
||||||
|
* interface when possible to get the informations dynamically
|
||||||
|
* this will take a lot of work to implemet and wont likely not
|
||||||
|
* be done in near future
|
||||||
|
* Please considder this when code new features. Mail me if you
|
||||||
|
* are in doubt how to do things. (jsch 25/10/99)
|
||||||
|
*
|
||||||
|
* FIXME: Set the buttons in the filedialog according to the view state
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -220,7 +232,6 @@ static void CheckToolbar(IShellViewImpl * This)
|
||||||
/**********************************************************
|
/**********************************************************
|
||||||
* change the style of the listview control
|
* change the style of the listview control
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void SetStyle(IShellViewImpl * This, DWORD dwAdd, DWORD dwRemove)
|
static void SetStyle(IShellViewImpl * This, DWORD dwAdd, DWORD dwRemove)
|
||||||
{
|
{
|
||||||
DWORD tmpstyle;
|
DWORD tmpstyle;
|
||||||
|
@ -278,6 +289,11 @@ static BOOL ShellView_CreateList (IShellViewImpl * This)
|
||||||
}
|
}
|
||||||
/**********************************************************
|
/**********************************************************
|
||||||
* ShellView_InitList()
|
* ShellView_InitList()
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* FIXME: the headers should depend on the kind of shellfolder
|
||||||
|
* thats creating the shellview. this hack implements only the
|
||||||
|
* correct headers for a filesystem folder (jsch 25/10/99)
|
||||||
*/
|
*/
|
||||||
static BOOL ShellView_InitList(IShellViewImpl * This)
|
static BOOL ShellView_InitList(IShellViewImpl * This)
|
||||||
{
|
{
|
||||||
|
@ -297,11 +313,11 @@ static BOOL ShellView_InitList(IShellViewImpl * This)
|
||||||
LoadStringA(shell32_hInstance, IDS_SHV_COLUMN1, szString, sizeof(szString));
|
LoadStringA(shell32_hInstance, IDS_SHV_COLUMN1, szString, sizeof(szString));
|
||||||
ListView_InsertColumnA(This->hWndList, 0, &lvColumn);
|
ListView_InsertColumnA(This->hWndList, 0, &lvColumn);
|
||||||
|
|
||||||
lvColumn.cx = 80;
|
lvColumn.cx = 60;
|
||||||
LoadStringA(shell32_hInstance, IDS_SHV_COLUMN2, szString, sizeof(szString));
|
LoadStringA(shell32_hInstance, IDS_SHV_COLUMN2, szString, sizeof(szString));
|
||||||
ListView_InsertColumnA(This->hWndList, 1, &lvColumn);
|
ListView_InsertColumnA(This->hWndList, 1, &lvColumn);
|
||||||
|
|
||||||
lvColumn.cx = 170;
|
lvColumn.cx = 120;
|
||||||
LoadStringA(shell32_hInstance, IDS_SHV_COLUMN3, szString, sizeof(szString));
|
LoadStringA(shell32_hInstance, IDS_SHV_COLUMN3, szString, sizeof(szString));
|
||||||
ListView_InsertColumnA(This->hWndList, 2, &lvColumn);
|
ListView_InsertColumnA(This->hWndList, 2, &lvColumn);
|
||||||
|
|
||||||
|
@ -332,7 +348,6 @@ static INT CALLBACK ShellView_CompareItems(LPVOID lParam1, LPVOID lParam2, LPARA
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* ShellView_ListViewCompareItems
|
* ShellView_ListViewCompareItems
|
||||||
*
|
*
|
||||||
|
@ -349,7 +364,13 @@ static INT CALLBACK ShellView_CompareItems(LPVOID lParam1, LPVOID lParam2, LPARA
|
||||||
* or zero if the two items are equivalent
|
* or zero if the two items are equivalent
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
*
|
* FIXME: function does what ShellView_CompareItems is supposed to do.
|
||||||
|
* unify it and figure out how to use the undocumented first parameter
|
||||||
|
* of IShellFolder_CompareIDs to do the job this function does and
|
||||||
|
* move this code to IShellFolder.
|
||||||
|
* make LISTVIEW_SORT_INFO obsolete
|
||||||
|
* the way this function works is only usable if we had only
|
||||||
|
* filesystemfolders (25/10/99 jsch)
|
||||||
*/
|
*/
|
||||||
static INT CALLBACK ShellView_ListViewCompareItems(LPVOID lParam1, LPVOID lParam2, LPARAM lpData)
|
static INT CALLBACK ShellView_ListViewCompareItems(LPVOID lParam1, LPVOID lParam2, LPARAM lpData)
|
||||||
{
|
{
|
||||||
|
@ -961,7 +982,11 @@ static LRESULT ShellView_OnCommand(IShellViewImpl * This,DWORD dwCmdID, DWORD dw
|
||||||
case 0x31:
|
case 0x31:
|
||||||
case 0x32:
|
case 0x32:
|
||||||
case 0x33:
|
case 0x33:
|
||||||
ListView_SortItems(This->hWndList, ShellView_ListViewCompareItems, (LPARAM) (dwCmdID - 0x30));
|
This->ListViewSortInfo.nHeaderID = (LPARAM) (dwCmdID - 0x30);
|
||||||
|
This->ListViewSortInfo.bIsAscending = TRUE;
|
||||||
|
This->ListViewSortInfo.nLastHeaderID = This->ListViewSortInfo.nHeaderID;
|
||||||
|
ListView_SortItems(This->hWndList, ShellView_ListViewCompareItems, (LPARAM) (&(This->ListViewSortInfo)));
|
||||||
|
CheckToolbar(This);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -1014,23 +1039,20 @@ static LRESULT ShellView_OnNotify(IShellViewImpl * This, UINT CtlID, LPNMHDR lpn
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LVN_COLUMNCLICK:
|
case LVN_COLUMNCLICK:
|
||||||
{
|
This->ListViewSortInfo.nHeaderID = lpnmlv->iSubItem;
|
||||||
This->ListViewSortInfo.nHeaderID = lpnmlv->iSubItem;
|
if(This->ListViewSortInfo.nLastHeaderID == This->ListViewSortInfo.nHeaderID)
|
||||||
if(This->ListViewSortInfo.nLastHeaderID == This->ListViewSortInfo.nHeaderID)
|
{
|
||||||
{
|
This->ListViewSortInfo.bIsAscending = !This->ListViewSortInfo.bIsAscending;
|
||||||
This->ListViewSortInfo.bIsAscending = !This->ListViewSortInfo.bIsAscending;
|
}
|
||||||
}
|
else
|
||||||
else
|
{
|
||||||
{
|
This->ListViewSortInfo.bIsAscending = TRUE;
|
||||||
This->ListViewSortInfo.bIsAscending = TRUE;
|
}
|
||||||
}
|
This->ListViewSortInfo.nLastHeaderID = This->ListViewSortInfo.nHeaderID;
|
||||||
This->ListViewSortInfo.nLastHeaderID = This->ListViewSortInfo.nHeaderID;
|
|
||||||
|
|
||||||
ListView_SortItems(lpnmlv->hdr.hwndFrom, ShellView_ListViewCompareItems, (LPARAM) (&(This->ListViewSortInfo)));
|
ListView_SortItems(lpnmlv->hdr.hwndFrom, ShellView_ListViewCompareItems, (LPARAM) (&(This->ListViewSortInfo)));
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
|
|
||||||
case LVN_GETDISPINFOA:
|
case LVN_GETDISPINFOA:
|
||||||
TRACE("-- LVN_GETDISPINFOA %p\n",This);
|
TRACE("-- LVN_GETDISPINFOA %p\n",This);
|
||||||
pidl = (LPITEMIDLIST)lpdi->item.lParam;
|
pidl = (LPITEMIDLIST)lpdi->item.lParam;
|
||||||
|
@ -1319,13 +1341,15 @@ static HRESULT WINAPI IShellView_fnTranslateAccelerator(IShellView * iface,LPMSG
|
||||||
{
|
{
|
||||||
ICOM_THIS(IShellViewImpl, iface);
|
ICOM_THIS(IShellViewImpl, iface);
|
||||||
|
|
||||||
|
#if 0
|
||||||
FIXME("(%p)->(%p: hwnd=%x msg=%x lp=%lx wp=%x) stub\n",This,lpmsg, lpmsg->hwnd, lpmsg->message, lpmsg->lParam, lpmsg->wParam);
|
FIXME("(%p)->(%p: hwnd=%x msg=%x lp=%lx wp=%x) stub\n",This,lpmsg, lpmsg->hwnd, lpmsg->message, lpmsg->lParam, lpmsg->wParam);
|
||||||
|
#endif
|
||||||
|
|
||||||
switch (lpmsg->message)
|
if ((lpmsg->message>=WM_KEYFIRST) && (lpmsg->message>=WM_KEYLAST))
|
||||||
{ case WM_KEYDOWN: TRACE("-- key=0x04%x",lpmsg->wParam) ;
|
{
|
||||||
|
TRACE("-- key=0x04%x",lpmsg->wParam) ;
|
||||||
}
|
}
|
||||||
return NOERROR;
|
return S_FALSE; /* not handled */
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI IShellView_fnEnableModeless(IShellView * iface,BOOL fEnable)
|
static HRESULT WINAPI IShellView_fnEnableModeless(IShellView * iface,BOOL fEnable)
|
||||||
|
@ -1341,7 +1365,9 @@ static HRESULT WINAPI IShellView_fnUIActivate(IShellView * iface,UINT uState)
|
||||||
{
|
{
|
||||||
ICOM_THIS(IShellViewImpl, iface);
|
ICOM_THIS(IShellViewImpl, iface);
|
||||||
|
|
||||||
|
/*
|
||||||
CHAR szName[MAX_PATH];
|
CHAR szName[MAX_PATH];
|
||||||
|
*/
|
||||||
LRESULT lResult;
|
LRESULT lResult;
|
||||||
int nPartArray[1] = {-1};
|
int nPartArray[1] = {-1};
|
||||||
|
|
||||||
|
@ -1360,15 +1386,19 @@ static HRESULT WINAPI IShellView_fnUIActivate(IShellView * iface,UINT uState)
|
||||||
if(uState != SVUIA_DEACTIVATE)
|
if(uState != SVUIA_DEACTIVATE)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/*
|
||||||
|
GetFolderPath is not a method of IShellFolder
|
||||||
IShellFolder_GetFolderPath( This->pSFParent, szName, sizeof(szName) );
|
IShellFolder_GetFolderPath( This->pSFParent, szName, sizeof(szName) );
|
||||||
|
*/
|
||||||
/* set the number of parts */
|
/* set the number of parts */
|
||||||
IShellBrowser_SendControlMsg(This->pShellBrowser, FCW_STATUS, SB_SETPARTS, 1,
|
IShellBrowser_SendControlMsg(This->pShellBrowser, FCW_STATUS, SB_SETPARTS, 1,
|
||||||
(LPARAM)nPartArray, &lResult);
|
(LPARAM)nPartArray, &lResult);
|
||||||
|
|
||||||
/* set the text for the parts */
|
/* set the text for the parts */
|
||||||
|
/*
|
||||||
IShellBrowser_SendControlMsg(This->pShellBrowser, FCW_STATUS, SB_SETTEXTA,
|
IShellBrowser_SendControlMsg(This->pShellBrowser, FCW_STATUS, SB_SETTEXTA,
|
||||||
0, (LPARAM)szName, &lResult);
|
0, (LPARAM)szName, &lResult);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include "wine/obj_base.h"
|
#include "wine/obj_base.h"
|
||||||
#include "wine/obj_moniker.h" /* for LPBC */
|
#include "wine/obj_moniker.h" /* for LPBC */
|
||||||
#include "wine/obj_enumidlist.h"
|
#include "wine/obj_enumidlist.h"
|
||||||
|
#include "wine/obj_oleaut.h"
|
||||||
#include "winbase.h"
|
#include "winbase.h"
|
||||||
#include "shell.h"
|
#include "shell.h"
|
||||||
|
|
||||||
|
@ -48,6 +49,49 @@ typedef struct IShellFolder IShellFolder, *LPSHELLFOLDER;
|
||||||
DEFINE_SHLGUID(IID_IPersistFolder, 0x000214EAL, 0, 0);
|
DEFINE_SHLGUID(IID_IPersistFolder, 0x000214EAL, 0, 0);
|
||||||
typedef struct IPersistFolder IPersistFolder, *LPPERSISTFOLDER;
|
typedef struct IPersistFolder IPersistFolder, *LPPERSISTFOLDER;
|
||||||
|
|
||||||
|
DEFINE_GUID(IID_IShellFolder2, 0xB82C5AA8, 0xA41B, 0x11D2, 0xBE, 0x32, 0x0, 0xc0, 0x4F, 0xB9, 0x36, 0x61);
|
||||||
|
typedef struct IShellFolder2 IShellFolder2, *LPSHELLFOLDER2;
|
||||||
|
|
||||||
|
DEFINE_GUID(IID_IEnumExtraSearch, 0xE700BE1, 0x9DB6, 0x11D1, 0xA1, 0xCE, 0x0, 0xc0, 0x4F, 0xD7, 0x5D, 0x13);
|
||||||
|
typedef struct IEnumExtraSearch IEnumExtraSearch, *LPENUMEXTRASEARCH;
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* IEnumExtraSearch interface
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
GUID guidSearch;
|
||||||
|
WCHAR wszFriendlyName[80];
|
||||||
|
WCHAR wszMenuText[80];
|
||||||
|
WCHAR wszHelpText[MAX_PATH];
|
||||||
|
WCHAR wszUrl[2084];
|
||||||
|
WCHAR wszIcon[MAX_PATH+10];
|
||||||
|
WCHAR wszGreyIcon[MAX_PATH+10];
|
||||||
|
WCHAR wszClrIcon[MAX_PATH+10];
|
||||||
|
} EXTRASEARCH,* LPEXTRASEARCH;
|
||||||
|
|
||||||
|
#define ICOM_INTERFACE IEnumExtraSearch
|
||||||
|
#define IEnumExtraSearch_METHODS \
|
||||||
|
ICOM_METHOD3(HRESULT, Next, ULONG, celt, LPEXTRASEARCH*, rgelt, ULONG*, pceltFetched) \
|
||||||
|
ICOM_METHOD1(HRESULT, Skip, ULONG, celt) \
|
||||||
|
ICOM_METHOD (HRESULT, Reset) \
|
||||||
|
ICOM_METHOD1(HRESULT, Clone, IEnumExtraSearch**, ppenum)
|
||||||
|
#define IEnumExtraSearch_IMETHODS \
|
||||||
|
IUnknown_IMETHODS \
|
||||||
|
IEnumExtraSearch_METHODS
|
||||||
|
ICOM_DEFINE(IEnumExtraSearch,IUnknown)
|
||||||
|
#undef ICOM_INTERFACE
|
||||||
|
|
||||||
|
/*** IUnknown methods ***/
|
||||||
|
#define IEnumIDList_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
|
||||||
|
#define IEnumIDList_AddRef(p) ICOM_CALL (AddRef,p)
|
||||||
|
#define IEnumIDList_Release(p) ICOM_CALL (Release,p)
|
||||||
|
/*** IEnumIDList methods ***/
|
||||||
|
#define IEnumIDList_Next(p,a,b,c) ICOM_CALL3(Next,p,a,b,c)
|
||||||
|
#define IEnumIDList_Skip(p,a) ICOM_CALL1(Skip,p,a)
|
||||||
|
#define IEnumIDList_Reset(p) ICOM_CALL(Reset,p)
|
||||||
|
#define IEnumIDList_Clone(p,a) ICOM_CALL1(Clone,p,a)
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* IShellFolder::GetDisplayNameOf/SetNameOf uFlags
|
* IShellFolder::GetDisplayNameOf/SetNameOf uFlags
|
||||||
|
@ -156,8 +200,7 @@ DWORD WINAPI SHGetDesktopFolder(IShellFolder * *);
|
||||||
ICOM_METHOD3( HRESULT, GetAttributesOf, UINT, cidl, LPCITEMIDLIST *, apidl, ULONG *, rgfInOut)\
|
ICOM_METHOD3( HRESULT, GetAttributesOf, UINT, cidl, LPCITEMIDLIST *, apidl, ULONG *, rgfInOut)\
|
||||||
ICOM_METHOD6( HRESULT, GetUIObjectOf, HWND, hwndOwner, UINT, cidl, LPCITEMIDLIST *, apidl, REFIID, riid, UINT *, prgfInOut, LPVOID *, ppvOut)\
|
ICOM_METHOD6( HRESULT, GetUIObjectOf, HWND, hwndOwner, UINT, cidl, LPCITEMIDLIST *, apidl, REFIID, riid, UINT *, prgfInOut, LPVOID *, ppvOut)\
|
||||||
ICOM_METHOD3( HRESULT, GetDisplayNameOf, LPCITEMIDLIST, pidl, DWORD, uFlags, LPSTRRET, lpName)\
|
ICOM_METHOD3( HRESULT, GetDisplayNameOf, LPCITEMIDLIST, pidl, DWORD, uFlags, LPSTRRET, lpName)\
|
||||||
ICOM_METHOD5( HRESULT, SetNameOf, HWND, hwndOwner, LPCITEMIDLIST, pidl,LPCOLESTR, lpszName, DWORD, uFlags,LPITEMIDLIST *, ppidlOut)\
|
ICOM_METHOD5( HRESULT, SetNameOf, HWND, hwndOwner, LPCITEMIDLIST, pidl,LPCOLESTR, lpszName, DWORD, uFlags,LPITEMIDLIST *, ppidlOut)
|
||||||
ICOM_METHOD2( HRESULT, GetFolderPath, LPSTR, lpszOut, DWORD, dwOutSize)
|
|
||||||
#define IShellFolder_IMETHODS \
|
#define IShellFolder_IMETHODS \
|
||||||
IUnknown_IMETHODS \
|
IUnknown_IMETHODS \
|
||||||
IShellFolder_METHODS
|
IShellFolder_METHODS
|
||||||
|
@ -179,12 +222,89 @@ ICOM_DEFINE(IShellFolder,IUnknown)
|
||||||
#define IShellFolder_GetUIObjectOf(p,a,b,c,d,e,f) ICOM_CALL6(GetUIObjectOf,p,a,b,c,d,e,f)
|
#define IShellFolder_GetUIObjectOf(p,a,b,c,d,e,f) ICOM_CALL6(GetUIObjectOf,p,a,b,c,d,e,f)
|
||||||
#define IShellFolder_GetDisplayNameOf(p,a,b,c) ICOM_CALL3(GetDisplayNameOf,p,a,b,c)
|
#define IShellFolder_GetDisplayNameOf(p,a,b,c) ICOM_CALL3(GetDisplayNameOf,p,a,b,c)
|
||||||
#define IShellFolder_SetNameOf(p,a,b,c,d,e) ICOM_CALL5(SetNameOf,p,a,b,c,d,e)
|
#define IShellFolder_SetNameOf(p,a,b,c,d,e) ICOM_CALL5(SetNameOf,p,a,b,c,d,e)
|
||||||
#define IShellFolder_GetFolderPath(p,a,b) ICOM_CALL2(GetFolderPath,p,a,b)
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* IShellFolder2 interface
|
||||||
|
*/
|
||||||
|
/* IShellFolder2 */
|
||||||
|
|
||||||
|
/* GetDefaultColumnState */
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
SHCOLSTATE_TYPE_STR = 0x00000001,
|
||||||
|
SHCOLSTATE_TYPE_INT = 0x00000002,
|
||||||
|
SHCOLSTATE_TYPE_DATE = 0x00000003,
|
||||||
|
SHCOLSTATE_TYPEMASK = 0x0000000F,
|
||||||
|
SHCOLSTATE_ONBYDEFAULT = 0x00000010,
|
||||||
|
SHCOLSTATE_SLOW = 0x00000020,
|
||||||
|
SHCOLSTATE_EXTENDED = 0x00000040,
|
||||||
|
SHCOLSTATE_SECONDARYUI = 0x00000080,
|
||||||
|
SHCOLSTATE_HIDDEN = 0x00000100,
|
||||||
|
} SHCOLSTATE;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
GUID fmtid;
|
||||||
|
DWORD pid;
|
||||||
|
} SHCOLUMNID, *LPSHCOLUMNID;
|
||||||
|
typedef const SHCOLUMNID* LPCSHCOLUMNID;
|
||||||
|
|
||||||
|
/* GetDetailsEx */
|
||||||
|
#define PID_FINDDATA 0
|
||||||
|
#define PID_NETRESOURCE 1
|
||||||
|
#define PID_DESCRIPTIONID 2
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
int fmt;
|
||||||
|
int cxChar;
|
||||||
|
STRRET str;
|
||||||
|
} SHELLDETAILS, *LPSHELLDETAILS;
|
||||||
|
|
||||||
|
#define ICOM_INTERFACE IShellFolder2
|
||||||
|
#define IShellFolder2_METHODS \
|
||||||
|
ICOM_METHOD1( HRESULT, GetDefaultSearchGUID, LPGUID, lpguid)\
|
||||||
|
ICOM_METHOD1( HRESULT, EnumSearches, LPENUMEXTRASEARCH *, ppEnum) \
|
||||||
|
ICOM_METHOD3( HRESULT, GetDefaultColumn, DWORD, dwReserved, ULONG *, pSort, ULONG *, pDisplay)\
|
||||||
|
ICOM_METHOD2( HRESULT, GetDefaultColumnState, UINT, iColumn, DWORD *, pcsFlags)\
|
||||||
|
ICOM_METHOD3( HRESULT, GetDetailsEx, LPCITEMIDLIST, pidl, const SHCOLUMNID *, pscid, VARIANT *, pv)\
|
||||||
|
ICOM_METHOD3( HRESULT, GetDetailsOf, LPCITEMIDLIST, pidl, UINT, iColumn, LPSHELLDETAILS, pDetails)\
|
||||||
|
ICOM_METHOD2( HRESULT, MapNameToSCID, LPCWSTR, pwszName, SHCOLUMNID *, pscid)
|
||||||
|
#define IShellFolder2_IMETHODS \
|
||||||
|
IShellFolder_METHODS \
|
||||||
|
IShellFolder2_METHODS
|
||||||
|
ICOM_DEFINE(IShellFolder2, IShellFolder)
|
||||||
|
#undef ICOM_INTERFACE
|
||||||
|
|
||||||
|
/*** IUnknown methods ***/
|
||||||
|
#define IShellFolder2_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
|
||||||
|
#define IShellFolder2_AddRef(p) ICOM_CALL (AddRef,p)
|
||||||
|
#define IShellFolder2_Release(p) ICOM_CALL (Release,p)
|
||||||
|
/*** IShellFolder methods ***/
|
||||||
|
#define IShellFolder2_ParseDisplayName(p,a,b,c,d,e,f) ICOM_CALL6(ParseDisplayName,p,a,b,c,d,e,f)
|
||||||
|
#define IShellFolder2_EnumObjects(p,a,b,c) ICOM_CALL3(EnumObjects,p,a,b,c)
|
||||||
|
#define IShellFolder2_BindToObject(p,a,b,c,d) ICOM_CALL4(BindToObject,p,a,b,c,d)
|
||||||
|
#define IShellFolder2_BindToStorage(p,a,b,c,d) ICOM_CALL4(BindToStorage,p,a,b,c,d)
|
||||||
|
#define IShellFolder2_CompareIDs(p,a,b,c) ICOM_CALL3(CompareIDs,p,a,b,c)
|
||||||
|
#define IShellFolder2_CreateViewObject(p,a,b,c) ICOM_CALL3(CreateViewObject,p,a,b,c)
|
||||||
|
#define IShellFolder2_GetAttributesOf(p,a,b,c) ICOM_CALL3(GetAttributesOf,p,a,b,c)
|
||||||
|
#define IShellFolder2_GetUIObjectOf(p,a,b,c,d,e,f) ICOM_CALL6(GetUIObjectOf,p,a,b,c,d,e,f)
|
||||||
|
#define IShellFolder2_GetDisplayNameOf(p,a,b,c) ICOM_CALL3(GetDisplayNameOf,p,a,b,c)
|
||||||
|
#define IShellFolder2_SetNameOf(p,a,b,c,d,e) ICOM_CALL5(SetNameOf,p,a,b,c,d,e)
|
||||||
|
/*** IShellFolder2 methods ***/
|
||||||
|
#define IShellFolder2_GetDefaultSearchGUID(p,a) ICOM_CALL1(GetDefaultSearchGUID,p,a)
|
||||||
|
#define IShellFolder2_EnumSearches(p,a) ICOM_CALL1(EnumSearches,p,a)
|
||||||
|
#define IShellFolder2_GetDefaultColumn(p,a,b,c) ICOM_CALL3(GetDefaultColumn,p,a,b,c)
|
||||||
|
#define IShellFolder2_GetDefaultColumnState(p,a,b) ICOM_CALL2(GetDefaultColumnState,p,a,b)
|
||||||
|
#define IShellFolder2_GetDetailsEx(p,a,b,c) ICOM_CALL3(GetDetailsEx,p,a,b,c)
|
||||||
|
#define IShellFolder2_GetDetailsOf(p,a,b,c) ICOM_CALL3(GetDetailsOf,p,a,b,c)
|
||||||
|
#define IShellFolder2_MapNameToSCID(p,a,b) ICOM_CALL2(MapNameToSCID,p,a,b)
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* IPersistFolder interface
|
* IPersistFolder interface
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* ClassID's */
|
||||||
DEFINE_GUID (CLSID_SFMyComp,0x20D04FE0,0x3AEA,0x1069,0xA2,0xD8,0x08,0x00,0x2B,0x30,0x30,0x9D);
|
DEFINE_GUID (CLSID_SFMyComp,0x20D04FE0,0x3AEA,0x1069,0xA2,0xD8,0x08,0x00,0x2B,0x30,0x30,0x9D);
|
||||||
DEFINE_GUID (CLSID_SFINet, 0x871C5380,0x42A0,0x1069,0xA2,0xEA,0x08,0x00,0x2B,0x30,0x30,0x9D);
|
DEFINE_GUID (CLSID_SFINet, 0x871C5380,0x42A0,0x1069,0xA2,0xEA,0x08,0x00,0x2B,0x30,0x30,0x9D);
|
||||||
DEFINE_GUID (CLSID_SFFile, 0xF3364BA0,0x65B9,0x11CE,0xA9,0xBA,0x00,0xAA,0x00,0x4A,0xE8,0x37);
|
DEFINE_GUID (CLSID_SFFile, 0xF3364BA0,0x65B9,0x11CE,0xA9,0xBA,0x00,0xAA,0x00,0x4A,0xE8,0x37);
|
||||||
|
|
Loading…
Reference in New Issue