Changed pidl structure to match the pidl's used in lnk-files.
This commit is contained in:
parent
671c8846d1
commit
b791a5211d
|
@ -258,13 +258,12 @@ static BOOL32 WINAPI IEnumIDList_CreateEnumList(LPENUMIDLIST this, LPCSTR lpszPa
|
||||||
if ( hFile != INVALID_HANDLE_VALUE32 )
|
if ( hFile != INVALID_HANDLE_VALUE32 )
|
||||||
{ do
|
{ do
|
||||||
{ if ( (stffile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && strcmp (stffile.cFileName, ".") && strcmp (stffile.cFileName, ".."))
|
{ if ( (stffile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && strcmp (stffile.cFileName, ".") && strcmp (stffile.cFileName, ".."))
|
||||||
{ pidl = _ILCreateFolder( stffile.cFileName);
|
{ pidl = _ILCreateFolder( stffile.cAlternateFileName, stffile.cFileName);
|
||||||
if(pidl)
|
if(pidl)
|
||||||
{ pData = _ILGetDataPointer(pidl);
|
{ pData = _ILGetDataPointer(pidl);
|
||||||
FileTimeToDosDateTime(&stffile.ftLastWriteTime,&pData->u.folder.uFileDate,&pData->u.folder.uFileTime);
|
FileTimeToDosDateTime(&stffile.ftLastWriteTime,&pData->u.folder.uFileDate,&pData->u.folder.uFileTime);
|
||||||
pData->u.folder.dwFileSize = stffile.nFileSizeLow;
|
pData->u.folder.dwFileSize = stffile.nFileSizeLow;
|
||||||
pData->u.folder.uFileAttribs=stffile.dwFileAttributes;
|
pData->u.folder.uFileAttribs=stffile.dwFileAttributes;
|
||||||
strncpy (pData->u.folder.szAlternateName, stffile.cAlternateFileName,14);
|
|
||||||
if(!IEnumIDList_AddToEnumList(this, pidl))
|
if(!IEnumIDList_AddToEnumList(this, pidl))
|
||||||
{ return FALSE;
|
{ return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -286,13 +285,12 @@ static BOOL32 WINAPI IEnumIDList_CreateEnumList(LPENUMIDLIST this, LPCSTR lpszPa
|
||||||
if ( hFile != INVALID_HANDLE_VALUE32 )
|
if ( hFile != INVALID_HANDLE_VALUE32 )
|
||||||
{ do
|
{ do
|
||||||
{ if (! (stffile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) )
|
{ if (! (stffile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) )
|
||||||
{ pidl = _ILCreateValue( stffile.cFileName);
|
{ pidl = _ILCreateValue( stffile.cAlternateFileName, stffile.cFileName);
|
||||||
if(pidl)
|
if(pidl)
|
||||||
{ pData = _ILGetDataPointer(pidl);
|
{ pData = _ILGetDataPointer(pidl);
|
||||||
FileTimeToDosDateTime(&stffile.ftLastWriteTime,&pData->u.file.uFileDate,&pData->u.file.uFileTime);
|
FileTimeToDosDateTime(&stffile.ftLastWriteTime,&pData->u.file.uFileDate,&pData->u.file.uFileTime);
|
||||||
pData->u.file.dwFileSize = stffile.nFileSizeLow;
|
pData->u.file.dwFileSize = stffile.nFileSizeLow;
|
||||||
pData->u.file.uFileAttribs=stffile.dwFileAttributes;
|
pData->u.file.uFileAttribs=stffile.dwFileAttributes;
|
||||||
strncpy (pData->u.file.szAlternateName, stffile.cAlternateFileName,14);
|
|
||||||
if(!IEnumIDList_AddToEnumList(this, pidl))
|
if(!IEnumIDList_AddToEnumList(this, pidl))
|
||||||
{ return FALSE;
|
{ return FALSE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
void pdump (LPCITEMIDLIST pidl)
|
void pdump (LPCITEMIDLIST pidl)
|
||||||
{ DWORD type;
|
{ DWORD type;
|
||||||
CHAR * szData;
|
CHAR * szData;
|
||||||
|
CHAR * szShortName;
|
||||||
LPITEMIDLIST pidltemp = pidl;
|
LPITEMIDLIST pidltemp = pidl;
|
||||||
if (! pidltemp)
|
if (! pidltemp)
|
||||||
{ TRACE(pidl,"-------- pidl = NULL (Root)\n");
|
{ TRACE(pidl,"-------- pidl = NULL (Root)\n");
|
||||||
|
@ -38,8 +39,10 @@ void pdump (LPCITEMIDLIST pidl)
|
||||||
{ do
|
{ do
|
||||||
{ type = _ILGetDataPointer(pidltemp)->type;
|
{ type = _ILGetDataPointer(pidltemp)->type;
|
||||||
szData = _ILGetTextPointer(type, _ILGetDataPointer(pidltemp));
|
szData = _ILGetTextPointer(type, _ILGetDataPointer(pidltemp));
|
||||||
|
szShortName = _ILGetSTextPointer(type, _ILGetDataPointer(pidltemp));
|
||||||
|
|
||||||
TRACE(pidl,"---- pidl=%p size=%u type=%lx %s\n",pidltemp, pidltemp->mkid.cb,type,debugstr_a(szData));
|
TRACE(pidl,"---- pidl=%p size=%u type=%lx %s, (%s)\n",
|
||||||
|
pidltemp, pidltemp->mkid.cb,type,debugstr_a(szData), debugstr_a(szShortName));
|
||||||
|
|
||||||
pidltemp = ILGetNext(pidltemp);
|
pidltemp = ILGetNext(pidltemp);
|
||||||
} while (pidltemp->mkid.cb);
|
} while (pidltemp->mkid.cb);
|
||||||
|
@ -509,9 +512,9 @@ LPITEMIDLIST WINAPI SHSimpleIDListFromPath32AW (LPVOID lpszPath)
|
||||||
|
|
||||||
lpszElement = PathFindFilename32A(lpszTemp);
|
lpszElement = PathFindFilename32A(lpszTemp);
|
||||||
if( GetFileAttributes32A(lpszTemp) & FILE_ATTRIBUTE_DIRECTORY )
|
if( GetFileAttributes32A(lpszTemp) & FILE_ATTRIBUTE_DIRECTORY )
|
||||||
{ return _ILCreateFolder(lpszElement);
|
{ return _ILCreateFolder(NULL, lpszElement); /*FIXME: fill shortname */
|
||||||
}
|
}
|
||||||
return _ILCreateValue(lpszElement);
|
return _ILCreateValue(NULL, lpszElement); /*FIXME: fill shortname */
|
||||||
}
|
}
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* SHGetDataFromIDListA [SHELL32.247]
|
* SHGetDataFromIDListA [SHELL32.247]
|
||||||
|
@ -565,13 +568,47 @@ LPITEMIDLIST WINAPI _ILCreateDrive( LPCSTR lpszNew)
|
||||||
TRACE(pidl,"(%s)\n",sTemp);
|
TRACE(pidl,"(%s)\n",sTemp);
|
||||||
return _ILCreate(PT_DRIVE,(LPVOID)&sTemp[0],4);
|
return _ILCreate(PT_DRIVE,(LPVOID)&sTemp[0],4);
|
||||||
}
|
}
|
||||||
LPITEMIDLIST WINAPI _ILCreateFolder( LPCSTR lpszNew)
|
LPITEMIDLIST WINAPI _ILCreateFolder( LPCSTR lpszShortName, LPCSTR lpszName)
|
||||||
{ TRACE(pidl,"(%s)\n",lpszNew);
|
{ char buff[MAX_PATH];
|
||||||
return _ILCreate(PT_FOLDER, (LPVOID)lpszNew, strlen(lpszNew)+1);
|
char * pbuff = buff;
|
||||||
|
ULONG len, len1;
|
||||||
|
|
||||||
|
TRACE(pidl,"(%s, %s)\n",lpszShortName, lpszName);
|
||||||
|
|
||||||
|
len = strlen (lpszName)+1;
|
||||||
|
memcpy (pbuff, lpszName, len);
|
||||||
|
pbuff += len;
|
||||||
|
|
||||||
|
if (lpszShortName)
|
||||||
|
{ len1 = strlen (lpszShortName)+1;
|
||||||
|
memcpy (pbuff, lpszShortName, len1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ len1 = 1;
|
||||||
|
*pbuff = 0x00;
|
||||||
|
}
|
||||||
|
return _ILCreate(PT_FOLDER, (LPVOID)buff, len + len1);
|
||||||
}
|
}
|
||||||
LPITEMIDLIST WINAPI _ILCreateValue(LPCSTR lpszNew)
|
LPITEMIDLIST WINAPI _ILCreateValue(LPCSTR lpszShortName, LPCSTR lpszName)
|
||||||
{ TRACE(pidl,"(%s)\n",lpszNew);
|
{ char buff[MAX_PATH];
|
||||||
return _ILCreate(PT_VALUE, (LPVOID)lpszNew, strlen(lpszNew)+1);
|
char * pbuff = buff;
|
||||||
|
ULONG len, len1;
|
||||||
|
|
||||||
|
TRACE(pidl,"(%s, %s)\n", lpszShortName, lpszName);
|
||||||
|
|
||||||
|
len = strlen (lpszName)+1;
|
||||||
|
memcpy (pbuff, lpszName, len);
|
||||||
|
pbuff += len;
|
||||||
|
|
||||||
|
if (lpszShortName)
|
||||||
|
{ len1 = strlen (lpszShortName)+1;
|
||||||
|
memcpy (pbuff, lpszShortName, len1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ len1 = 1;
|
||||||
|
*pbuff = 0x00;
|
||||||
|
}
|
||||||
|
return _ILCreate(PT_VALUE, (LPVOID)buff, len + len1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
|
@ -926,7 +963,7 @@ LPPIDLDATA WINAPI _ILGetDataPointer(LPITEMIDLIST pidl)
|
||||||
}
|
}
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* _ILGetTextPointer()
|
* _ILGetTextPointer()
|
||||||
* gets a pointer to the string stored in the pidl
|
* gets a pointer to the long filename string stored in the pidl
|
||||||
*/
|
*/
|
||||||
LPSTR WINAPI _ILGetTextPointer(PIDLTYPE type, LPPIDLDATA pidldata)
|
LPSTR WINAPI _ILGetTextPointer(PIDLTYPE type, LPPIDLDATA pidldata)
|
||||||
{/* TRACE(pidl,"(type=%x data=%p)\n", type, pidldata);*/
|
{/* TRACE(pidl,"(type=%x data=%p)\n", type, pidldata);*/
|
||||||
|
@ -940,7 +977,27 @@ LPSTR WINAPI _ILGetTextPointer(PIDLTYPE type, LPPIDLDATA pidldata)
|
||||||
case PT_MYCOMP:
|
case PT_MYCOMP:
|
||||||
case PT_FOLDER:
|
case PT_FOLDER:
|
||||||
case PT_VALUE:
|
case PT_VALUE:
|
||||||
return (LPSTR)&(pidldata->u.file.szText);
|
return (LPSTR)&(pidldata->u.file.szNames);
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
/**************************************************************************
|
||||||
|
* _ILGetSTextPointer()
|
||||||
|
* gets a pointer to the long filename string stored in the pidl
|
||||||
|
*/
|
||||||
|
LPSTR WINAPI _ILGetSTextPointer(PIDLTYPE type, LPPIDLDATA pidldata)
|
||||||
|
{/* TRACE(pidl,"(type=%x data=%p)\n", type, pidldata);*/
|
||||||
|
|
||||||
|
if(!pidldata)
|
||||||
|
{ return NULL;
|
||||||
|
}
|
||||||
|
switch (type)
|
||||||
|
{ case PT_MYCOMP:
|
||||||
|
case PT_DRIVE:
|
||||||
|
return NULL;
|
||||||
|
case PT_FOLDER:
|
||||||
|
case PT_VALUE:
|
||||||
|
return (LPSTR)(pidldata->u.file.szNames + strlen (pidldata->u.file.szNames) + 1);
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,11 +60,9 @@ typedef struct tagPIDLDATA
|
||||||
WORD uFileDate; /*06*/
|
WORD uFileDate; /*06*/
|
||||||
WORD uFileTime; /*08*/
|
WORD uFileTime; /*08*/
|
||||||
WORD uFileAttribs; /*10*/
|
WORD uFileAttribs; /*10*/
|
||||||
/* end of MS compatible. Here are comming just one or two
|
CHAR szNames[1]; /*12*/
|
||||||
strings. The first is the long name. The second the dos name
|
/* Here are comming two strings. The first is the long name.
|
||||||
when needed. */
|
The second the dos name when needed or just 0x00 */
|
||||||
CHAR szAlternateName[14]; /* the 8.3 Name*/
|
|
||||||
CHAR szText[1]; /* last entry, variable size */
|
|
||||||
} file, folder, generic;
|
} file, folder, generic;
|
||||||
}u;
|
}u;
|
||||||
} PIDLDATA, *LPPIDLDATA;
|
} PIDLDATA, *LPPIDLDATA;
|
||||||
|
@ -104,8 +102,8 @@ BOOL32 WINAPI _ILIsValue(LPCITEMIDLIST);
|
||||||
LPITEMIDLIST WINAPI _ILCreateDesktop(void);
|
LPITEMIDLIST WINAPI _ILCreateDesktop(void);
|
||||||
LPITEMIDLIST WINAPI _ILCreateMyComputer(void);
|
LPITEMIDLIST WINAPI _ILCreateMyComputer(void);
|
||||||
LPITEMIDLIST WINAPI _ILCreateDrive(LPCSTR);
|
LPITEMIDLIST WINAPI _ILCreateDrive(LPCSTR);
|
||||||
LPITEMIDLIST WINAPI _ILCreateFolder(LPCSTR);
|
LPITEMIDLIST WINAPI _ILCreateFolder(LPCSTR, LPCSTR);
|
||||||
LPITEMIDLIST WINAPI _ILCreateValue(LPCSTR);
|
LPITEMIDLIST WINAPI _ILCreateValue(LPCSTR, LPCSTR);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* raw pidl handling (binary)
|
* raw pidl handling (binary)
|
||||||
|
@ -120,6 +118,7 @@ LPITEMIDLIST WINAPI _ILCreate(PIDLTYPE,LPVOID,UINT16);
|
||||||
*/
|
*/
|
||||||
LPPIDLDATA WINAPI _ILGetDataPointer(LPCITEMIDLIST);
|
LPPIDLDATA WINAPI _ILGetDataPointer(LPCITEMIDLIST);
|
||||||
LPSTR WINAPI _ILGetTextPointer(PIDLTYPE type, LPPIDLDATA pidldata);
|
LPSTR WINAPI _ILGetTextPointer(PIDLTYPE type, LPPIDLDATA pidldata);
|
||||||
|
LPSTR WINAPI _ILGetSTextPointer(PIDLTYPE type, LPPIDLDATA pidldata);
|
||||||
|
|
||||||
void pdump (LPCITEMIDLIST pidl);
|
void pdump (LPCITEMIDLIST pidl);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -424,10 +424,10 @@ static HRESULT WINAPI IShellFolder_ParseDisplayName(
|
||||||
if(pidlFull)
|
if(pidlFull)
|
||||||
{ while((pszNext=GetNextElement(pszNext, szElement, MAX_PATH)))
|
{ while((pszNext=GetNextElement(pszNext, szElement, MAX_PATH)))
|
||||||
{ if(!*pszNext && bIsFile)
|
{ if(!*pszNext && bIsFile)
|
||||||
{ pidlTemp = _ILCreateValue(szElement);
|
{ pidlTemp = _ILCreateValue(NULL, szElement); /* FIXME: shortname */
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ pidlTemp = _ILCreateFolder(szElement);
|
{ pidlTemp = _ILCreateFolder(NULL, szElement); /* FIXME: shortname */
|
||||||
}
|
}
|
||||||
pidlOld = pidlFull;
|
pidlOld = pidlFull;
|
||||||
pidlFull = ILCombine(pidlFull,pidlTemp);
|
pidlFull = ILCombine(pidlFull,pidlTemp);
|
||||||
|
|
117
include/shlobj.h
117
include/shlobj.h
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#include "wintypes.h"
|
#include "wintypes.h"
|
||||||
#include "wine/obj_base.h"
|
#include "wine/obj_base.h"
|
||||||
|
#include "wine/obj_shelllink.h"
|
||||||
#include "shell.h"
|
#include "shell.h"
|
||||||
#include "oleobj.h"
|
#include "oleobj.h"
|
||||||
#include "commctrl.h"
|
#include "commctrl.h"
|
||||||
|
@ -687,122 +688,6 @@ struct tagCOMMDLGBROWSER
|
||||||
{ LPCOMMDLGBROWSER_VTABLE lpvtbl;
|
{ LPCOMMDLGBROWSER_VTABLE lpvtbl;
|
||||||
DWORD ref;
|
DWORD ref;
|
||||||
};
|
};
|
||||||
#undef THIS
|
|
||||||
/****************************************************************************
|
|
||||||
* IShellLink interface
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define THIS LPSHELLLINK this
|
|
||||||
/* IShellLink::Resolve fFlags */
|
|
||||||
typedef enum {
|
|
||||||
SLR_NO_UI = 0x0001,
|
|
||||||
SLR_ANY_MATCH = 0x0002,
|
|
||||||
SLR_UPDATE = 0x0004
|
|
||||||
} SLR_FLAGS;
|
|
||||||
|
|
||||||
/* IShellLink::GetPath fFlags */
|
|
||||||
typedef enum {
|
|
||||||
SLGP_SHORTPATH = 0x0001,
|
|
||||||
SLGP_UNCPRIORITY = 0x0002
|
|
||||||
} SLGP_FLAGS;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct IShellLink IShellLink,*LPSHELLLINK;
|
|
||||||
typedef struct IShellLink_VTable
|
|
||||||
{
|
|
||||||
/* *** IUnknown methods *** */
|
|
||||||
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
|
|
||||||
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
|
||||||
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
|
||||||
|
|
||||||
STDMETHOD(GetPath)(THIS_ LPSTR pszFile,INT32 cchMaxPath, WIN32_FIND_DATA32A *pfd, DWORD fFlags) PURE;
|
|
||||||
|
|
||||||
STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST * ppidl) PURE;
|
|
||||||
STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST pidl) PURE;
|
|
||||||
|
|
||||||
STDMETHOD(GetDescription)(THIS_ LPSTR pszName,INT32 cchMaxName) PURE;
|
|
||||||
STDMETHOD(SetDescription)(THIS_ LPCSTR pszName) PURE;
|
|
||||||
|
|
||||||
STDMETHOD(GetWorkingDirectory)(THIS_ LPSTR pszDir,INT32 cchMaxPath) PURE;
|
|
||||||
STDMETHOD(SetWorkingDirectory)(THIS_ LPCSTR pszDir) PURE;
|
|
||||||
|
|
||||||
STDMETHOD(GetArguments)(THIS_ LPSTR pszArgs,INT32 cchMaxPath) PURE;
|
|
||||||
STDMETHOD(SetArguments)(THIS_ LPCSTR pszArgs) PURE;
|
|
||||||
|
|
||||||
STDMETHOD(GetHotkey)(THIS_ WORD *pwHotkey) PURE;
|
|
||||||
STDMETHOD(SetHotkey)(THIS_ WORD wHotkey) PURE;
|
|
||||||
|
|
||||||
STDMETHOD(GetShowCmd)(THIS_ INT32 *piShowCmd) PURE;
|
|
||||||
STDMETHOD(SetShowCmd)(THIS_ INT32 iShowCmd) PURE;
|
|
||||||
|
|
||||||
STDMETHOD(GetIconLocation)(THIS_ LPSTR pszIconPath,INT32 cchIconPath,INT32 *piIcon) PURE;
|
|
||||||
STDMETHOD(SetIconLocation)(THIS_ LPCSTR pszIconPath,INT32 iIcon) PURE;
|
|
||||||
|
|
||||||
STDMETHOD(SetRelativePath)(THIS_ LPCSTR pszPathRel, DWORD dwReserved) PURE;
|
|
||||||
|
|
||||||
STDMETHOD(Resolve)(THIS_ HWND32 hwnd, DWORD fFlags) PURE;
|
|
||||||
|
|
||||||
STDMETHOD(SetPath)(THIS_ LPCSTR pszFile) PURE;
|
|
||||||
} IShellLink_VTable,*LPSHELLLINK_VTABLE;
|
|
||||||
|
|
||||||
struct IShellLink {
|
|
||||||
LPSHELLLINK_VTABLE lpvtbl;
|
|
||||||
DWORD ref;
|
|
||||||
/* IPersistfile interface */
|
|
||||||
LPPERSISTFILE lppf;
|
|
||||||
};
|
|
||||||
#define IShellLinkA IShellLink
|
|
||||||
|
|
||||||
#undef THIS
|
|
||||||
|
|
||||||
#define THIS LPSHELLLINKW this
|
|
||||||
|
|
||||||
typedef struct IShellLinkW IShellLinkW,*LPSHELLLINKW;
|
|
||||||
typedef struct IShellLinkW_VTable
|
|
||||||
{
|
|
||||||
/* *** IUnknown methods *** */
|
|
||||||
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
|
|
||||||
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
|
||||||
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
|
||||||
|
|
||||||
STDMETHOD(GetPath)(THIS_ LPWSTR pszFile,INT32 cchMaxPath, WIN32_FIND_DATA32A *pfd, DWORD fFlags) PURE;
|
|
||||||
|
|
||||||
STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST * ppidl) PURE;
|
|
||||||
STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST pidl) PURE;
|
|
||||||
|
|
||||||
STDMETHOD(GetDescription)(THIS_ LPWSTR pszName,INT32 cchMaxName) PURE;
|
|
||||||
STDMETHOD(SetDescription)(THIS_ LPCWSTR pszName) PURE;
|
|
||||||
|
|
||||||
STDMETHOD(GetWorkingDirectory)(THIS_ LPWSTR pszDir,INT32 cchMaxPath) PURE;
|
|
||||||
STDMETHOD(SetWorkingDirectory)(THIS_ LPCWSTR pszDir) PURE;
|
|
||||||
|
|
||||||
STDMETHOD(GetArguments)(THIS_ LPWSTR pszArgs,INT32 cchMaxPath) PURE;
|
|
||||||
STDMETHOD(SetArguments)(THIS_ LPCWSTR pszArgs) PURE;
|
|
||||||
|
|
||||||
STDMETHOD(GetHotkey)(THIS_ WORD *pwHotkey) PURE;
|
|
||||||
STDMETHOD(SetHotkey)(THIS_ WORD wHotkey) PURE;
|
|
||||||
|
|
||||||
STDMETHOD(GetShowCmd)(THIS_ INT32 *piShowCmd) PURE;
|
|
||||||
STDMETHOD(SetShowCmd)(THIS_ INT32 iShowCmd) PURE;
|
|
||||||
|
|
||||||
STDMETHOD(GetIconLocation)(THIS_ LPWSTR pszIconPath,INT32 cchIconPath,INT32 *piIcon) PURE;
|
|
||||||
STDMETHOD(SetIconLocation)(THIS_ LPCWSTR pszIconPath,INT32 iIcon) PURE;
|
|
||||||
|
|
||||||
STDMETHOD(SetRelativePath)(THIS_ LPCWSTR pszPathRel, DWORD dwReserved) PURE;
|
|
||||||
|
|
||||||
STDMETHOD(Resolve)(THIS_ HWND32 hwnd, DWORD fFlags) PURE;
|
|
||||||
|
|
||||||
STDMETHOD(SetPath)(THIS_ LPCWSTR pszFile) PURE;
|
|
||||||
} IShellLinkW_VTable,*LPSHELLLINKW_VTABLE;
|
|
||||||
|
|
||||||
struct IShellLinkW {
|
|
||||||
LPSHELLLINKW_VTABLE lpvtbl;
|
|
||||||
DWORD ref;
|
|
||||||
/* IPersistfile interface */
|
|
||||||
LPPERSISTFILE lppf;
|
|
||||||
};
|
|
||||||
|
|
||||||
#undef THIS
|
#undef THIS
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
|
Loading…
Reference in New Issue