- Timestamp:
- Aug 18, 2000, 4:01:27 AM (25 years ago)
- Location:
- trunk/src/shell32
- Files:
-
- 8 added
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/shell32/brsfolder.cpp
r3243 r4032 1 /* $Id: brsfolder.cpp,v 1. 4 2000-03-26 16:34:38 cbratschiExp $ */1 /* $Id: brsfolder.cpp,v 1.5 2000-08-18 02:01:14 phaller Exp $ */ 2 2 3 3 /* … … 46 46 #include "shell32_main.h" 47 47 #include "shellapi.h" 48 #include "shlguid.h" 48 49 49 50 #include <misc.h> -
trunk/src/shell32/iconcache.cpp
r3551 r4032 1 /* $Id: iconcache.cpp,v 1. 8 2000-05-18 14:16:02 sandervlExp $ */1 /* $Id: iconcache.cpp,v 1.9 2000-08-18 02:01:15 phaller Exp $ */ 2 2 3 3 /* … … 36 36 37 37 #include "shellapi.h" 38 #include "shlguid.h" 39 #include "shlwapi.h" 38 40 #include "pidl.h" 39 41 #include "shell32_main.h" 42 #include "wine/undocshell.h" 40 43 41 44 #include <heapstring.h> … … 765 768 * 766 769 */ 767 BOOL PidlToSicIndex (IShellFolder * sh, LPITEMIDLIST pidl, BOOL bBigIcon, UINT * pIndex) 770 BOOL PidlToSicIndex (IShellFolder * sh, 771 LPITEMIDLIST pidl, 772 BOOL bBigIcon, 773 UINT uFlags, 774 UINT * pIndex) 768 775 { 769 776 IExtractIcon *ei; … … 777 784 if (SUCCEEDED (IShellFolder_GetUIObjectOf(sh, 0, 1, &pidl, &IID_IExtractIconA, 0, (void **)&ei))) 778 785 { 779 if (NOERROR==IExtractIconA_GetIconLocation(ei, 0, szIconFile, MAX_PATH, &iSourceIndex, &dwFlags))786 if (NOERROR==IExtractIconA_GetIconLocation(ei, uFlags, szIconFile, MAX_PATH, &iSourceIndex, &dwFlags)) 780 787 { *pIndex = SIC_GetIconIndex(szIconFile, iSourceIndex); 781 788 ret = TRUE; … … 801 808 */ 802 809 803 ODINFUNCTION3(UINT,SHMapPIDLToSystemImageListIndex,LPSHELLFOLDER, sh, 804 LPITEMIDLIST, pidl, 805 UINT*, pIndex) 810 ODINFUNCTION3(int,SHMapPIDLToSystemImageListIndex, 811 LPSHELLFOLDER, sh, 812 LPITEMIDLIST, pidl, 813 UINT*, pIndex) 806 814 { 807 815 UINT Index; … … 810 818 811 819 if (pIndex) 812 PidlToSicIndex ( sh, pidl, 1, pIndex);813 PidlToSicIndex ( sh, pidl, 0, &Index);820 PidlToSicIndex ( sh, pidl, 1, 0, pIndex); 821 PidlToSicIndex ( sh, pidl, 0, 0, &Index); 814 822 return Index; 815 823 } -
trunk/src/shell32/makefile
r3864 r4032 1 # $Id: makefile,v 1.2 6 2000-07-19 19:05:22 sandervlExp $1 # $Id: makefile,v 1.27 2000-08-18 02:01:16 phaller Exp $ 2 2 3 3 # … … 27 27 $(OBJDIR)\initterm.obj \ 28 28 $(OBJDIR)\brsfolder.obj \ 29 $(OBJDIR)\changenotify.obj \ 29 30 $(OBJDIR)\classes.obj \ 31 $(OBJDIR)\clipboard.obj \ 30 32 $(OBJDIR)\contmenu.obj \ 31 33 $(OBJDIR)\dataobject.obj \ 34 $(OBJDIR)\dialogs.obj \ 32 35 $(OBJDIR)\enumidlist.obj \ 33 36 $(OBJDIR)\folders.obj \ … … 42 45 $(OBJDIR)\shellpath.obj \ 43 46 $(OBJDIR)\shellole.obj \ 47 $(OBJDIR)\shellreg.obj \ 48 $(OBJDIR)\shellstring.obj \ 44 49 $(OBJDIR)\shellstub.obj \ 45 50 $(OBJDIR)\shellord.obj \ 46 $(OBJDIR)\sh v_bg_cmenu.obj \51 $(OBJDIR)\shlfileop.obj \ 47 52 $(OBJDIR)\shlfolder.obj \ 48 53 $(OBJDIR)\shlview.obj \ 49 54 $(OBJDIR)\shell.obj \ 55 $(OBJDIR)\shv_bg_cmenu.obj \ 56 $(OBJDIR)\shv_item_cmenu.obj \ 50 57 $(OBJDIR)\unknown.obj \ 51 58 $(OBJDIR)\misc.obj \ -
trunk/src/shell32/misc.cpp
r3561 r4032 1 /* $Id: misc.cpp,v 1. 7 2000-05-19 12:09:24 sandervlExp $ */1 /* $Id: misc.cpp,v 1.8 2000-08-18 02:01:16 phaller Exp $ */ 2 2 3 3 /* … … 28 28 #include <winnls.h> 29 29 #include "shell32_main.h" 30 #include "wine/undocshell.h" 30 31 #include <misc.h> 31 32 //#include <string.h> -
trunk/src/shell32/pidl.cpp
r3469 r4032 1 /* $Id: pidl.cpp,v 1. 8 2000-05-01 01:33:25phaller Exp $ */1 /* $Id: pidl.cpp,v 1.9 2000-08-18 02:01:17 phaller Exp $ */ 2 2 3 3 /* … … 748 748 return FALSE; 749 749 750 return SHFree(pidl); 750 SHFree(pidl); 751 return TRUE; 751 752 } 752 753 /************************************************************************* … … 755 756 */ 756 757 757 ODINFUNCTION1(DWORD,ILGlobalFree,LPITEMIDLIST, pidl) 758 ODINPROCEDURE1(ILGlobalFree, 759 LPITEMIDLIST, pidl) 758 760 { 759 761 TRACE_(pidl)("%p\n",pidl); 760 762 761 if (!pidl) 762 return FALSE; 763 764 return pCOMCTL32_Free (pidl); 763 if (pidl) 764 pCOMCTL32_Free (pidl); 765 765 } 766 766 /************************************************************************* … … 803 803 */ 804 804 805 ODINFUNCTION1(LPITEMIDLIST,SHSimpleIDListFromPathA,LP STR, lpszPath)805 ODINFUNCTION1(LPITEMIDLIST,SHSimpleIDListFromPathA,LPCSTR, lpszPath) 806 806 { 807 807 LPITEMIDLIST pidl=NULL; … … 828 828 } 829 829 830 ODINFUNCTION1(LPITEMIDLIST,SHSimpleIDListFromPathW,LP WSTR, lpszPath)830 ODINFUNCTION1(LPITEMIDLIST,SHSimpleIDListFromPathW,LPCWSTR, lpszPath) 831 831 { 832 832 char lpszTemp[MAX_PATH]; 833 833 834 WideCharToLocal(lpszTemp, lpszPath, MAX_PATH);834 WideCharToLocal(lpszTemp, (LPWSTR)lpszPath, MAX_PATH); 835 835 836 836 return SHSimpleIDListFromPathA (lpszTemp); 837 837 } 838 838 839 ODINFUNCTION1(LPITEMIDLIST,SHSimpleIDListFromPathAW,LP VOID, lpszPath)839 ODINFUNCTION1(LPITEMIDLIST,SHSimpleIDListFromPathAW,LPCVOID, lpszPath) 840 840 { 841 841 if ( VERSION_OsIsUnicode()) … … 1878 1878 WORD wAttrib = 0; 1879 1879 int i; 1880 1880 1881 if (! pData) return 0; 1882 1881 1883 switch(pData->type) 1882 1884 { … … 1888 1890 break; 1889 1891 } 1892 1890 1893 if(uOutSize >= 6) 1891 1894 { … … 1916 1919 } 1917 1920 1921 1922 /************************************************************************* 1923 * ILFreeaPidl 1924 * 1925 * free a aPidl struct 1926 */ 1927 ODINPROCEDURE2(_ILFreeaPidl, 1928 LPITEMIDLIST *, apidl, 1929 UINT, cidl) 1930 { 1931 int i; 1932 1933 if(apidl) 1934 { 1935 for(i = 0; i < cidl; i++) SHFree(apidl[i]); 1936 SHFree(apidl); 1937 } 1938 } 1939 1940 /************************************************************************* 1941 * ILCopyaPidl 1942 * 1943 * copys a aPidl struct 1944 */ 1945 ODINFUNCTION2(LPITEMIDLIST *,_ILCopyaPidl, 1946 LPITEMIDLIST *,apidlsrc, 1947 UINT, cidl) 1948 { 1949 int i; 1950 LPITEMIDLIST * apidldest = (LPITEMIDLIST*)SHAlloc(cidl * sizeof(LPITEMIDLIST)); 1951 if(!apidlsrc) return NULL; 1952 1953 for(i = 0; i < cidl; i++) 1954 apidldest[i] = ILClone(apidlsrc[i]); 1955 1956 return apidldest; 1957 } 1958 1959 /************************************************************************* 1960 * _ILCopyCidaToaPidl 1961 * 1962 * creates aPidl from CIDA 1963 */ 1964 ODINFUNCTION2(LPITEMIDLIST*, _ILCopyCidaToaPidl, 1965 LPITEMIDLIST*, pidl, 1966 LPCIDA, cida) 1967 { 1968 int i; 1969 LPITEMIDLIST * dst = (LPITEMIDLIST*)SHAlloc(cida->cidl * sizeof(LPITEMIDLIST)); 1970 1971 if(!dst) return NULL; 1972 1973 if (pidl) 1974 *pidl = ILClone((LPITEMIDLIST)(&((LPBYTE)cida)[cida->aoffset[0]])); 1975 1976 for(i = 0; i < cida->cidl; i++) 1977 dst[i] = ILClone((LPITEMIDLIST)(&((LPBYTE)cida)[cida->aoffset[i + 1]])); 1978 1979 return dst; 1980 } -
trunk/src/shell32/pidl.h
r3257 r4032 1 /* $Id: pidl.h,v 1. 4 2000-03-28 15:28:45 cbratschiExp $ */1 /* $Id: pidl.h,v 1.5 2000-08-18 02:01:18 phaller Exp $ */ 2 2 3 3 /* … … 190 190 BOOL pcheck (LPCITEMIDLIST pidl); 191 191 192 /* 193 * aPidl helper 194 */ 195 void WINAPI _ILFreeaPidl(LPITEMIDLIST * apidl, UINT cidl); 196 LPITEMIDLIST * WINAPI _ILCopyaPidl(LPITEMIDLIST * apidlsrc, UINT cidl); 197 LPITEMIDLIST * WINAPI _ILCopyCidaToaPidl(LPITEMIDLIST* pidl, LPCIDA cida); 198 192 199 #endif -
trunk/src/shell32/sh.cpp
r1353 r4032 1 /* $Id: sh.cpp,v 1.1 0 1999-10-19 10:23:26phaller Exp $ */1 /* $Id: sh.cpp,v 1.11 2000-08-18 02:01:18 phaller Exp $ */ 2 2 3 3 /* … … 322 322 323 323 /***************************************************************************** 324 * Name : HRESULT SHRegDeleteKeyW325 * Purpose :326 * Parameters:327 * Variables :328 * Result :329 * Remark : SHELL32.512330 * Status : UNTESTED STUB331 *332 * Author : Patrick Haller [Tue, 1999/06/09 20:02]333 *****************************************************************************/334 335 ODINFUNCTION2(HRESULT, SHRegDeleteKeyW,336 HKEY, hkey,337 LPWSTR, lpszKey)338 {339 return RegDeleteKeyW(hkey,340 lpszKey);341 }342 343 344 /*****************************************************************************345 324 * Name : HRESULT SHRegDeleteKeyA 346 325 * Purpose : -
trunk/src/shell32/shell32.def
r3561 r4032 1 ; $Id: shell32.def,v 1.2 6 2000-05-19 12:09:25 sandervlExp $1 ; $Id: shell32.def,v 1.27 2000-08-18 02:01:19 phaller Exp $ 2 2 3 3 ;Created by BLAST for IBM's compiler … … 97 97 SHRegisterDragDrop = _SHRegisterDragDrop@8 @86 98 98 SHRevokeDragDrop = _SHRevokeDragDrop@4 @87 99 SHDoDragDrop = _SHDoDragDrop@2 4@8899 SHDoDragDrop = _SHDoDragDrop@20 @88 100 100 SHCloneSpecialIDList = _SHCloneSpecialIDList@12 @89 101 101 SHFindFiles = _SHFindFiles@8 @90 … … 349 349 SHRegDeleteKeyA = _SHRegDeleteKeyA@8 @513 ;? 350 350 SHAllocShared = _SHAllocShared@12 @520 351 SHInitRestricted = _SHInitRestricted@8 351 352 SHLockShared = _SHLockShared@8 @521 352 353 SHUnlockShared = _SHUnlockShared@4 @522 -
trunk/src/shell32/shell32_main.cpp
r3551 r4032 1 /* $Id: shell32_main.cpp,v 1.1 1 2000-05-18 14:16:03 sandervlExp $ */1 /* $Id: shell32_main.cpp,v 1.12 2000-08-18 02:01:19 phaller Exp $ */ 2 2 3 3 /* … … 49 49 #include "wine/undocshell.h" 50 50 #include "shpolicy.h" 51 #include "shlwapi.h" 51 52 52 53 #include <heapstring.h> … … 148 149 DWORD ret = TRUE, dwAttributes = 0; 149 150 IShellFolder * psfParent = NULL; 150 IExtractIcon * pei = NULL;151 IExtractIconA * pei = NULL; 151 152 LPITEMIDLIST pidlLast = NULL, pidl = NULL; 152 153 HRESULT hr = S_OK; … … 160 161 if ((flags & SHGFI_USEFILEATTRIBUTES) && (flags & (SHGFI_ATTRIBUTES|SHGFI_EXETYPE|SHGFI_PIDL))) 161 162 return FALSE; 162 163 164 /* windows initializes this values regardless of the flags */ 165 psfi->szDisplayName[0] = '\0'; 166 psfi->szTypeName[0] = '\0'; 167 psfi->iIcon = 0; 168 163 169 /* translate the path into a pidl only when SHGFI_USEFILEATTRIBUTES in not specified 164 170 the pidl functions fail on not existing file names */ … … 236 242 if (SUCCEEDED(hr)) 237 243 { 238 hr = IExtractIconA_GetIconLocation(pei, 0, szLoaction, MAX_PATH, &iIndex, &uFlags);244 hr = IExtractIconA_GetIconLocation(pei, (flags & SHGFI_OPENICON) ? GIL_OPENICON : 0, szLoaction, MAX_PATH, &iIndex, &uFlags); 239 245 /* fixme what to do with the index? */ 240 246 … … 278 284 else 279 285 { 280 if (!(PidlToSicIndex(psfParent, pidlLast, (flags && SHGFI_LARGEICON), (PUINT)&(psfi->iIcon)))) 286 if (!(PidlToSicIndex(psfParent, pidlLast, (flags && SHGFI_LARGEICON), 287 (flags & SHGFI_OPENICON) ? GIL_OPENICON : 0, (PUINT)&(psfi->iIcon)))) 281 288 { 282 289 ret = FALSE; … … 285 292 if (ret) 286 293 { 287 ret = (DWORD) ((flags & &SHGFI_LARGEICON) ? ShellBigIconList : ShellSmallIconList);294 ret = (DWORD) ((flags & SHGFI_LARGEICON) ? ShellBigIconList : ShellSmallIconList); 288 295 } 289 296 } … … 512 519 */ 513 520 514 ODINFUNCTION1(DWORD, SHLoadInProc, DWORD, dwArg1) 515 { 516 CLSID *id; 517 521 ODINFUNCTION1(DWORD, SHLoadInProc, REFCLSID, rclsid) 522 { 518 523 dprintf(("SHELL32: SHLoadInProc\n")); 519 520 CLSIDFromString((LPCOLESTR) dwArg1, id); 521 if (S_OK==SHCoCreateInstance( (LPSTR) dwArg1, id, NULL, &IID_IUnknown, NULL) ) 522 return NOERROR; 524 525 IUnknown *pUnk = NULL; 526 CoCreateInstance(rclsid, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (LPVOID*)pUnk); 527 if (pUnk) 528 { 529 IUnknown_Release(pUnk); 530 return NOERROR; 531 } 523 532 return DISP_E_MEMBERNOTFOUND; 524 533 } … … 949 958 HICON (WINAPI *pCreateIconFromResourceEx)(LPBYTE bits,UINT cbSize, BOOL bIcon, DWORD dwVersion, INT width, INT height,UINT cFlag); 950 959 951 /* ole2 */952 HRESULT (WINAPI* pOleInitialize)(LPVOID reserved);953 void (WINAPI* pOleUninitialize)(void);954 HRESULT (WINAPI* pDoDragDrop)(IDataObject* pDataObject, IDropSource * pDropSource, DWORD dwOKEffect, DWORD *pdwEffect);955 HRESULT (WINAPI* pRegisterDragDrop)(HWND hwnd, IDropTarget* pDropTarget);956 HRESULT (WINAPI* pRevokeDragDrop)(HWND hwnd);957 960 958 961 static HINSTANCE hComctl32; … … 960 963 static INT shell32_RefCount = 0; 961 964 962 INTshell32_ObjCount = 0;965 LONG shell32_ObjCount = 0; 963 966 HINSTANCE shell32_hInstance = 0; 967 HMODULE huser32 = 0; 964 968 HIMAGELIST ShellSmallIconList = 0; 965 969 HIMAGELIST ShellBigIconList = 0; -
trunk/src/shell32/shell32_main.h
r3243 r4032 1 /* $Id: shell32_main.h,v 1. 3 2000-03-26 16:34:50 cbratschiExp $ */1 /* $Id: shell32_main.h,v 1.4 2000-08-18 02:01:20 phaller Exp $ */ 2 2 3 3 /* … … 46 46 * global SHELL32.DLL variables 47 47 */ 48 extern HINSTANCE shell32_hInstance; 49 extern INT shell32_ObjCount; 48 extern HMODULE huser32; 49 extern HINSTANCE shell32_hInstance; 50 extern LONG shell32_ObjCount; 50 51 extern HIMAGELIST ShellSmallIconList; 51 52 extern HIMAGELIST ShellBigIconList; … … 81 82 /* ole2 */ 82 83 extern HRESULT (WINAPI* pOleInitialize)(LPVOID reserved); 83 extern void (WINAPI* pOleUninitialize)(void); 84 extern HRESULT (WINAPI* pDoDragDrop)(IDataObject* pDataObject, IDropSource * pDropSource, DWORD dwOKEffect, DWORD * pdwEffect); 84 extern void (WINAPI* pOleUninitialize)(void); 85 85 extern HRESULT (WINAPI* pRegisterDragDrop)(HWND hwnd, IDropTarget* pDropTarget); 86 86 extern HRESULT (WINAPI* pRevokeDragDrop)(HWND hwnd); 87 87 extern HRESULT (WINAPI* pDoDragDrop)(LPDATAOBJECT,LPDROPSOURCE,DWORD,DWORD*); 88 extern void (WINAPI* pReleaseStgMedium)(STGMEDIUM* pmedium); 89 extern HRESULT (WINAPI* pOleSetClipboard)(IDataObject* pDataObj); 90 extern HRESULT (WINAPI* pOleGetClipboard)(IDataObject** ppDataObj); 91 92 88 93 BOOL WINAPI Shell_GetImageList(HIMAGELIST * lpBigList, HIMAGELIST * lpSmallList); 89 94 … … 96 101 BOOL SIC_Initialize(void); 97 102 void SIC_Destroy(void); 98 BOOL PidlToSicIndex (IShellFolder * sh, LPITEMIDLIST pidl, BOOL bBigIcon, UINT * pIndex);103 BOOL PidlToSicIndex (IShellFolder * sh, LPITEMIDLIST pidl, BOOL bBigIcon, UINT uFlags, UINT * pIndex); 99 104 100 105 /* Classes Root */ … … 107 112 DWORD WINAPI ParseFieldA(LPCSTR src,DWORD field,LPSTR dst,DWORD len); 108 113 109 HGLOBAL WINAPI SHAllocShared(LPVOID psrc, DWORD size, DWORD procID);110 LPVOID WINAPI SHLockShared(HANDLE hmem, DWORD procID);111 BOOL WINAPI SHUnlockShared(HANDLE pmem);112 HANDLE WINAPI SHFreeShared(HANDLE hmem, DWORD procID);113 114 114 /**************************************************************************** 115 115 * Class constructors … … 119 119 120 120 LPCLASSFACTORY IClassFactory_Constructor(REFCLSID); 121 IContextMenu * I ContextMenu_Constructor(LPSHELLFOLDER pSFParent, LPCITEMIDLIST pidl, LPCITEMIDLIST *aPidls, UINT uItemCount);122 IContextMenu * ISvBgCm_Constructor( void);121 IContextMenu * ISvItemCm_Constructor(LPSHELLFOLDER pSFParent, LPCITEMIDLIST pidl, LPCITEMIDLIST *aPidls, UINT uItemCount); 122 IContextMenu * ISvBgCm_Constructor(LPSHELLFOLDER pSFParent); 123 123 LPSHELLVIEW IShellView_Constructor(LPSHELLFOLDER); 124 124 LPSHELLLINK IShellLink_Constructor(BOOL); … … 139 139 HRESULT WINAPI SHELL32_DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID * ppv); 140 140 HRESULT WINAPI SHELL32_DllCanUnloadNow(void); 141 LRESULT WINAPI SHCoCreateInstance(LPSTR,REFCLSID,LPUNKNOWN,REFIID,LPVOID *);142 141 143 142 /* fixme: move away */ … … 166 165 /* Systray */ 167 166 BOOL SYSTRAY_Init(void); 168 167 168 /* Clipboard */ 169 void InitShellOle(void); 170 void FreeShellOle(void); 171 BOOL GetShellOle(void); 172 173 /* PH: This creates an auto variable just in any importer... 174 HRESULT (WINAPI* pOleInitialize)(LPVOID reserved); 175 void (WINAPI* pOleUninitialize)(void); 176 HRESULT (WINAPI* pRegisterDragDrop)(HWND hwnd, IDropTarget* pDropTarget); 177 HRESULT (WINAPI* pRevokeDragDrop)(HWND hwnd); 178 HRESULT (WINAPI* pDoDragDrop)(LPDATAOBJECT,LPDROPSOURCE,DWORD,DWORD*); 179 void (WINAPI* pReleaseStgMedium)(STGMEDIUM* pmedium); 180 HRESULT (WINAPI* pOleSetClipboard)(IDataObject* pDataObj); 181 HRESULT (WINAPI* pOleGetClipboard)(IDataObject** ppDataObj); 182 */ 183 184 HGLOBAL RenderHDROP(LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl); 185 HGLOBAL RenderSHELLIDLIST (LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl); 186 HGLOBAL RenderSHELLIDLISTOFFSET (LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl); 187 HGLOBAL RenderFILECONTENTS (LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl); 188 HGLOBAL RenderFILEDESCRIPTOR (LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl); 189 HGLOBAL RenderFILENAME (LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl); 190 HGLOBAL RenderPREFEREDDROPEFFECT (DWORD dwFlags); 191 192 /* Change Notification */ 193 void InitChangeNotifications(void); 194 void FreeChangeNotifications(void); 195 196 /* file operation */ 197 BOOL SHELL_DeleteDirectoryA(LPCSTR pszDir, BOOL bShowUI); 198 199 inline static BOOL SHELL_OsIsUnicode(void) 200 { 201 /* if high-bit of version is 0, we are emulating NT */ 202 return !(GetVersion() & 0x80000000); 203 } 204 169 205 #ifdef __cplusplus 170 206 } 171 207 #endif /* defined(__cplusplus) */ 172 208 173 174 175 209 #endif -
trunk/src/shell32/shellguid.cpp
r1214 r4032 1 /* $Id: shellguid.cpp,v 1. 1 1999-10-09 11:13:24 sandervlExp $ */1 /* $Id: shellguid.cpp,v 1.2 2000-08-18 02:01:21 phaller Exp $ */ 2 2 3 3 /* … … 43 43 #include <wine/obj_extracticon.h> 44 44 #include <wine/obj_shellextinit.h> 45 #include "shellfolder.h" 45 46 #include <docobj.h> 46 47 -
trunk/src/shell32/shelllink.cpp
r3243 r4032 1 /* $Id: shelllink.cpp,v 1. 3 2000-03-26 16:34:50 cbratschiExp $ */1 /* $Id: shelllink.cpp,v 1.4 2000-08-18 02:01:21 phaller Exp $ */ 2 2 /* 3 3 * … … 79 79 typedef struct 80 80 { 81 ICOM_VTABLE(IShellLink )*lpvtbl;81 ICOM_VTABLE(IShellLinkA)* lpvtbl; 82 82 DWORD ref; 83 83 … … 121 121 TRACE("(%p)\n",This); 122 122 123 return IShellLink _QueryInterface((IShellLink*)This, riid, ppvObj);123 return IShellLinkA_QueryInterface((IShellLinkA*)This, riid, ppvObj); 124 124 } 125 125 … … 133 133 TRACE("(%p)->(count=%lu)\n",This,This->ref); 134 134 135 return IShellLink _AddRef((IShellLink*)This);135 return IShellLinkA_AddRef((IShellLinkA*)This); 136 136 } 137 137 /****************************************************************************** … … 144 144 TRACE("(%p)->(count=%lu)\n",This,This->ref); 145 145 146 return IShellLink _Release((IShellLink*)This);146 return IShellLinkA_Release((IShellLinkA*)This); 147 147 } 148 148 … … 229 229 TRACE("(%p)\n",This); 230 230 231 return IShellLink _QueryInterface((IShellLink*)This, riid, ppvoid);231 return IShellLinkA_QueryInterface((IShellLinkA*)This, riid, ppvoid); 232 232 } 233 233 … … 242 242 TRACE("(%p)\n",This); 243 243 244 return IShellLink _Release((IShellLink*)This);244 return IShellLinkA_Release((IShellLinkA*)This); 245 245 } 246 246 … … 255 255 TRACE("(%p)\n",This); 256 256 257 return IShellLink _AddRef((IShellLink*)This);257 return IShellLinkA_AddRef((IShellLinkA*)This); 258 258 } 259 259 … … 409 409 * IShellLink_QueryInterface 410 410 */ 411 static HRESULT WINAPI IShellLink _fnQueryInterface( IShellLink* iface, REFIID riid, LPVOID *ppvObj)411 static HRESULT WINAPI IShellLinkA_fnQueryInterface( IShellLinkA * iface, REFIID riid, LPVOID *ppvObj) 412 412 { 413 413 ICOM_THIS(IShellLinkImpl, iface); … … 420 420 421 421 if(IsEqualIID(riid, &IID_IUnknown) || 422 IsEqualIID(riid, &IID_IShellLink ))422 IsEqualIID(riid, &IID_IShellLinkA)) 423 423 { 424 424 *ppvObj = This; … … 447 447 } 448 448 /****************************************************************************** 449 * IShellLink _AddRef450 */ 451 static ULONG WINAPI IShellLink _fnAddRef(IShellLink* iface)449 * IShellLinkA_AddRef 450 */ 451 static ULONG WINAPI IShellLinkA_fnAddRef(IShellLinkA * iface) 452 452 { 453 453 ICOM_THIS(IShellLinkImpl, iface); … … 459 459 } 460 460 /****************************************************************************** 461 * IShellLink _Release462 */ 463 static ULONG WINAPI IShellLink _fnRelease(IShellLink* iface)461 * IShellLinkA_Release 462 */ 463 static ULONG WINAPI IShellLinkA_fnRelease(IShellLinkA * iface) 464 464 { 465 465 ICOM_THIS(IShellLinkImpl, iface); … … 486 486 } 487 487 488 static HRESULT WINAPI IShellLink _fnGetPath(IShellLink* iface, LPSTR pszFile,INT cchMaxPath, WIN32_FIND_DATAA *pfd, DWORD fFlags)488 static HRESULT WINAPI IShellLinkA_fnGetPath(IShellLinkA * iface, LPSTR pszFile,INT cchMaxPath, WIN32_FIND_DATAA *pfd, DWORD fFlags) 489 489 { 490 490 ICOM_THIS(IShellLinkImpl, iface); … … 499 499 return NOERROR; 500 500 } 501 static HRESULT WINAPI IShellLink _fnGetIDList(IShellLink* iface, LPITEMIDLIST * ppidl)501 static HRESULT WINAPI IShellLinkA_fnGetIDList(IShellLinkA * iface, LPITEMIDLIST * ppidl) 502 502 { 503 503 ICOM_THIS(IShellLinkImpl, iface); … … 508 508 return NOERROR; 509 509 } 510 static HRESULT WINAPI IShellLink _fnSetIDList(IShellLink* iface, LPCITEMIDLIST pidl)510 static HRESULT WINAPI IShellLinkA_fnSetIDList(IShellLinkA * iface, LPCITEMIDLIST pidl) 511 511 { 512 512 ICOM_THIS(IShellLinkImpl, iface); … … 519 519 return NOERROR; 520 520 } 521 static HRESULT WINAPI IShellLink _fnGetDescription(IShellLink* iface, LPSTR pszName,INT cchMaxName)521 static HRESULT WINAPI IShellLinkA_fnGetDescription(IShellLinkA * iface, LPSTR pszName,INT cchMaxName) 522 522 { 523 523 ICOM_THIS(IShellLinkImpl, iface); … … 527 527 return NOERROR; 528 528 } 529 static HRESULT WINAPI IShellLink _fnSetDescription(IShellLink* iface, LPCSTR pszName)529 static HRESULT WINAPI IShellLinkA_fnSetDescription(IShellLinkA * iface, LPCSTR pszName) 530 530 { 531 531 ICOM_THIS(IShellLinkImpl, iface); … … 534 534 return NOERROR; 535 535 } 536 static HRESULT WINAPI IShellLink _fnGetWorkingDirectory(IShellLink* iface, LPSTR pszDir,INT cchMaxPath)536 static HRESULT WINAPI IShellLinkA_fnGetWorkingDirectory(IShellLinkA * iface, LPSTR pszDir,INT cchMaxPath) 537 537 { 538 538 ICOM_THIS(IShellLinkImpl, iface); … … 542 542 return NOERROR; 543 543 } 544 static HRESULT WINAPI IShellLink _fnSetWorkingDirectory(IShellLink* iface, LPCSTR pszDir)544 static HRESULT WINAPI IShellLinkA_fnSetWorkingDirectory(IShellLinkA * iface, LPCSTR pszDir) 545 545 { 546 546 ICOM_THIS(IShellLinkImpl, iface); … … 549 549 return NOERROR; 550 550 } 551 static HRESULT WINAPI IShellLink _fnGetArguments(IShellLink* iface, LPSTR pszArgs,INT cchMaxPath)551 static HRESULT WINAPI IShellLinkA_fnGetArguments(IShellLinkA * iface, LPSTR pszArgs,INT cchMaxPath) 552 552 { 553 553 ICOM_THIS(IShellLinkImpl, iface); … … 557 557 return NOERROR; 558 558 } 559 static HRESULT WINAPI IShellLink _fnSetArguments(IShellLink* iface, LPCSTR pszArgs)559 static HRESULT WINAPI IShellLinkA_fnSetArguments(IShellLinkA * iface, LPCSTR pszArgs) 560 560 { 561 561 ICOM_THIS(IShellLinkImpl, iface); … … 565 565 return NOERROR; 566 566 } 567 static HRESULT WINAPI IShellLink _fnGetHotkey(IShellLink* iface, WORD *pwHotkey)567 static HRESULT WINAPI IShellLinkA_fnGetHotkey(IShellLinkA * iface, WORD *pwHotkey) 568 568 { 569 569 ICOM_THIS(IShellLinkImpl, iface); … … 575 575 return NOERROR; 576 576 } 577 static HRESULT WINAPI IShellLink _fnSetHotkey(IShellLink* iface, WORD wHotkey)577 static HRESULT WINAPI IShellLinkA_fnSetHotkey(IShellLinkA * iface, WORD wHotkey) 578 578 { 579 579 ICOM_THIS(IShellLinkImpl, iface); … … 585 585 return NOERROR; 586 586 } 587 static HRESULT WINAPI IShellLink _fnGetShowCmd(IShellLink* iface, INT *piShowCmd)587 static HRESULT WINAPI IShellLinkA_fnGetShowCmd(IShellLinkA * iface, INT *piShowCmd) 588 588 { 589 589 ICOM_THIS(IShellLinkImpl, iface); … … 593 593 return NOERROR; 594 594 } 595 static HRESULT WINAPI IShellLink _fnSetShowCmd(IShellLink* iface, INT iShowCmd)595 static HRESULT WINAPI IShellLinkA_fnSetShowCmd(IShellLinkA * iface, INT iShowCmd) 596 596 { 597 597 ICOM_THIS(IShellLinkImpl, iface); … … 600 600 return NOERROR; 601 601 } 602 static HRESULT WINAPI IShellLink _fnGetIconLocation(IShellLink* iface, LPSTR pszIconPath,INT cchIconPath,INT *piIcon)602 static HRESULT WINAPI IShellLinkA_fnGetIconLocation(IShellLinkA * iface, LPSTR pszIconPath,INT cchIconPath,INT *piIcon) 603 603 { 604 604 ICOM_THIS(IShellLinkImpl, iface); … … 609 609 return NOERROR; 610 610 } 611 static HRESULT WINAPI IShellLink _fnSetIconLocation(IShellLink* iface, LPCSTR pszIconPath,INT iIcon)611 static HRESULT WINAPI IShellLinkA_fnSetIconLocation(IShellLinkA * iface, LPCSTR pszIconPath,INT iIcon) 612 612 { 613 613 ICOM_THIS(IShellLinkImpl, iface); … … 616 616 return NOERROR; 617 617 } 618 static HRESULT WINAPI IShellLink _fnSetRelativePath(IShellLink* iface, LPCSTR pszPathRel, DWORD dwReserved)618 static HRESULT WINAPI IShellLinkA_fnSetRelativePath(IShellLinkA * iface, LPCSTR pszPathRel, DWORD dwReserved) 619 619 { 620 620 ICOM_THIS(IShellLinkImpl, iface); … … 623 623 return NOERROR; 624 624 } 625 static HRESULT WINAPI IShellLink _fnResolve(IShellLink* iface, HWND hwnd, DWORD fFlags)625 static HRESULT WINAPI IShellLinkA_fnResolve(IShellLinkA * iface, HWND hwnd, DWORD fFlags) 626 626 { 627 627 ICOM_THIS(IShellLinkImpl, iface); … … 630 630 return NOERROR; 631 631 } 632 static HRESULT WINAPI IShellLink _fnSetPath(IShellLink* iface, LPCSTR pszFile)632 static HRESULT WINAPI IShellLinkA_fnSetPath(IShellLinkA * iface, LPCSTR pszFile) 633 633 { 634 634 ICOM_THIS(IShellLinkImpl, iface); … … 642 642 */ 643 643 644 static ICOM_VTABLE(IShellLink ) slvt =644 static ICOM_VTABLE(IShellLinkA) slvt = 645 645 { 646 646 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE 647 IShellLink _fnQueryInterface,648 IShellLink _fnAddRef,649 IShellLink _fnRelease,650 IShellLink _fnGetPath,651 IShellLink _fnGetIDList,652 IShellLink _fnSetIDList,653 IShellLink _fnGetDescription,654 IShellLink _fnSetDescription,655 IShellLink _fnGetWorkingDirectory,656 IShellLink _fnSetWorkingDirectory,657 IShellLink _fnGetArguments,658 IShellLink _fnSetArguments,659 IShellLink _fnGetHotkey,660 IShellLink _fnSetHotkey,661 IShellLink _fnGetShowCmd,662 IShellLink _fnSetShowCmd,663 IShellLink _fnGetIconLocation,664 IShellLink _fnSetIconLocation,665 IShellLink _fnSetRelativePath,666 IShellLink _fnResolve,667 IShellLink _fnSetPath647 IShellLinkA_fnQueryInterface, 648 IShellLinkA_fnAddRef, 649 IShellLinkA_fnRelease, 650 IShellLinkA_fnGetPath, 651 IShellLinkA_fnGetIDList, 652 IShellLinkA_fnSetIDList, 653 IShellLinkA_fnGetDescription, 654 IShellLinkA_fnSetDescription, 655 IShellLinkA_fnGetWorkingDirectory, 656 IShellLinkA_fnSetWorkingDirectory, 657 IShellLinkA_fnGetArguments, 658 IShellLinkA_fnSetArguments, 659 IShellLinkA_fnGetHotkey, 660 IShellLinkA_fnSetHotkey, 661 IShellLinkA_fnGetShowCmd, 662 IShellLinkA_fnSetShowCmd, 663 IShellLinkA_fnGetIconLocation, 664 IShellLinkA_fnSetIconLocation, 665 IShellLinkA_fnSetRelativePath, 666 IShellLinkA_fnResolve, 667 IShellLinkA_fnSetPath 668 668 }; 669 669 … … 677 677 _ICOM_THIS_From_IShellLinkW(IShellLinkImpl, iface); 678 678 679 return IShellLink _QueryInterface((IShellLink*)This, riid, ppvObj);679 return IShellLinkA_QueryInterface((IShellLinkA*)This, riid, ppvObj); 680 680 } 681 681 … … 689 689 TRACE("(%p)->(count=%lu)\n",This,This->ref); 690 690 691 return IShellLink _AddRef((IShellLink*)This);691 return IShellLinkA_AddRef((IShellLinkA*)This); 692 692 } 693 693 /****************************************************************************** … … 701 701 TRACE("(%p)->(count=%lu)\n",This,This->ref); 702 702 703 return IShellLink _Release((IShellLink*)This);703 return IShellLinkA_Release((IShellLinkA*)This); 704 704 } 705 705 … … 888 888 889 889 /************************************************************************** 890 * IShellLink _Constructor891 */ 892 IShellLink * IShellLink_Constructor(BOOL bUnicode)890 * IShellLinkA_Constructor 891 */ 892 IShellLinkA * IShellLink_Constructor(BOOL bUnicode) 893 893 { IShellLinkImpl * sl; 894 894 … … 902 902 TRACE("(%p)->()\n",sl); 903 903 shell32_ObjCount++; 904 return bUnicode ? (IShellLink *) &(sl->lpvtblw) : (IShellLink*)sl;905 } 906 907 904 return bUnicode ? (IShellLinkA *) &(sl->lpvtblw) : (IShellLinkA *)sl; 905 } 906 907 -
trunk/src/shell32/shellord.cpp
r3935 r4032 1 /* $Id: shellord.cpp,v 1. 9 2000-08-02 17:53:33 birdExp $ */1 /* $Id: shellord.cpp,v 1.10 2000-08-18 02:01:22 phaller Exp $ */ 2 2 /* 3 3 * The parameters of many functions changes between different OS versions … … 49 49 ODINDEBUGCHANNEL(shell32-shellord) 50 50 51 52 /*************************************************************************53 * SHChangeNotifyRegister [SHELL32.2]54 *55 * NOTES56 * Idlist is an array of structures and Count specifies how many items in the array57 * (usually just one I think).58 */59 DWORD WINAPI60 SHChangeNotifyRegister(61 HWND hwnd,62 LONG events1,63 LONG events2,64 DWORD msg,65 int count,66 IDSTRUCT *idlist)67 {68 FIXME("SHChangeNotifyRegister: (0x%04x,0x%08lx,0x%08lx,0x%08lx,0x%08x,%p):stub.\n",69 hwnd,events1,events2,msg,count,idlist);70 return 0;71 }72 /*************************************************************************73 * SHChangeNotifyDeregister [SHELL32.4]74 */75 DWORD WINAPI76 SHChangeNotifyDeregister(LONG x1)77 { FIXME("(0x%08lx):stub.\n",x1);78 return 0;79 }80 /*************************************************************************81 * NTSHChangeNotifyRegister [SHELL32.640]82 * NOTES83 * Idlist is an array of structures and Count specifies how many items in the array84 * (usually just one I think).85 */86 DWORD WINAPI NTSHChangeNotifyRegister(87 HWND hwnd,88 LONG events1,89 LONG events2,90 DWORD msg,91 int count,92 IDSTRUCT *idlist)93 { FIXME("(0x%04x,0x%08lx,0x%08lx,0x%08lx,0x%08x,%p):stub.\n",94 hwnd,events1,events2,msg,count,idlist);95 return 0;96 }97 /*************************************************************************98 * NTSHChangeNotifyDeregister [SHELL32.641]99 */100 DWORD WINAPI NTSHChangeNotifyDeregister(LONG x1)101 { FIXME("(0x%08lx):stub.\n",x1);102 return 0;103 }104 51 105 52 /************************************************************************* … … 130 77 } 131 78 132 /*************************************************************************133 * PickIconDlg [SHELL32.62]134 *135 */136 DWORD WINAPI PickIconDlg(DWORD x,DWORD y,DWORD z,DWORD a)137 { FIXME("PickIconDlg(%08lx,%08lx,%08lx,%08lx):stub.\n",x,y,z,a);138 return 0xffffffff;139 }140 79 141 80 /************************************************************************* … … 143 82 * 144 83 */ 145 DWORD WINAPI GetFileNameFromBrowse(HWND howner, LPSTR targetbuf, DWORD len, DWORD x, LPCSTR suffix, LPCSTR y, LPCSTR cmd) 146 { FIXME("(%04x,%p,%ld,%08lx,%s,%s,%s):stub.\n", 147 howner,targetbuf,len,x,suffix,y,cmd); 84 ODINFUNCTION7(BOOL, GetFileNameFromBrowse, 85 HWND, hwndOwner, 86 LPSTR, lpstrFile, 87 DWORD, nMaxFile, 88 LPCSTR, lpstrInitialDir, 89 LPCSTR, lpstrDefExt, 90 LPCSTR, lpstrFIlter, 91 LPCSTR, lpstrTitle) 92 { 93 dprintf(("SHELL32: GetFileNameFromBrowse not implemented")); 94 148 95 /* puts up a Open Dialog and requests input into targetbuf */ 149 96 /* OFN_HIDEREADONLY|OFN_NOCHANGEDIR|OFN_FILEMUSTEXIST|OFN_unknown */ 150 lstrcpyA(targetbuf,"x:\\dummy.exe"); 151 return 1; 97 lstrcpynA(lpstrFile, 98 "x:\\dummy.exe", 99 nMaxFile); 100 return 1; 152 101 } 153 102 … … 223 172 * that was clicked. 224 173 */ 225 int WINAPI SHShellFolderView_Message(HWND hwndCabinet,UINT uMsg,LPARAM lParam) 226 { FIXME("%04x %08ux %08lx stub\n",hwndCabinet,uMsg,lParam); 174 ODINFUNCTION3(int, SHShellFolderView_Message, 175 HWND, hwndCabinet, 176 DWORD, dwMessage, 177 DWORD, dwParam) 178 { 179 dprintf(("SHELL32: SHShellFolderView_Message not implemented")); 227 180 return 0; 228 181 } 229 182 230 /*************************************************************************231 * OleStrToStrN [SHELL32.78]232 */233 BOOL WINAPI OleStrToStrNA (LPSTR lpStr, INT nStr, LPCWSTR lpOle, INT nOle)234 {235 TRACE("%p %x %s %x\n", lpStr, nStr, debugstr_w(lpOle), nOle);236 return WideCharToMultiByte (0, 0, lpOle, nOle, lpStr, nStr, NULL, NULL);237 }238 239 BOOL WINAPI OleStrToStrNW (LPWSTR lpwStr, INT nwStr, LPCWSTR lpOle, INT nOle)240 {241 TRACE("%p %x %s %x\n", lpwStr, nwStr, debugstr_w(lpOle), nOle);242 243 if (lstrcpynW ( lpwStr, lpOle, nwStr))244 { return lstrlenW (lpwStr);245 }246 return 0;247 }248 249 BOOL WINAPI OleStrToStrNAW (LPVOID lpOut, INT nOut, LPCVOID lpIn, INT nIn)250 {251 if (VERSION_OsIsUnicode())252 return OleStrToStrNW ((LPWSTR)lpOut, nOut, (LPCWSTR)lpIn, nIn);253 return OleStrToStrNA ((LPSTR)lpOut, nOut, (LPCWSTR)lpIn, nIn);254 }255 256 /*************************************************************************257 * StrToOleStrN [SHELL32.79]258 * lpMulti, nMulti, nWide [IN]259 * lpWide [OUT]260 */261 BOOL WINAPI StrToOleStrNA (LPWSTR lpWide, INT nWide, LPCSTR lpStrA, INT nStr)262 {263 TRACE("%p %x %s %x\n", lpWide, nWide, lpStrA, nStr);264 return MultiByteToWideChar (0, 0, lpStrA, nStr, lpWide, nWide);265 }266 BOOL WINAPI StrToOleStrNW (LPWSTR lpWide, INT nWide, LPCWSTR lpStrW, INT nStr)267 {268 TRACE("%p %x %s %x\n", lpWide, nWide, debugstr_w(lpStrW), nStr);269 270 if (lstrcpynW (lpWide, lpStrW, nWide))271 { return lstrlenW (lpWide);272 }273 return 0;274 }275 276 BOOL WINAPI StrToOleStrNAW (LPWSTR lpWide, INT nWide, LPCVOID lpStr, INT nStr)277 {278 if (VERSION_OsIsUnicode())279 return StrToOleStrNW (lpWide, nWide, (LPWSTR)lpStr, nStr);280 return StrToOleStrNA (lpWide, nWide, (LPSTR)lpStr, nStr);281 }282 183 283 184 /************************************************************************* … … 291 192 * exported by ordinal 292 193 */ 293 void WINAPI RegisterShellHook(HWND hwnd, DWORD y) { 294 FIXME("(0x%08x,0x%08lx):stub.\n",hwnd,y); 194 ODINFUNCTION2(BOOL, RegisterShellHook, 195 HWND, hWnd, 196 DWORD, dwType) 197 { 198 dprintf(("SHELL32: RegisterShellHook not implemented")); 199 return FALSE; 295 200 } 296 201 /************************************************************************* … … 358 263 } 359 264 360 /*************************************************************************361 * SHRestricted [SHELL32.100]362 *363 * walks through policy table, queries <app> key, <type> value, returns364 * queried (DWORD) value, and caches it between called to SHInitRestricted365 * to prevent unnecessary registry access.366 *367 * NOTES368 * exported by ordinal369 *370 * REFERENCES:371 * MS System Policy Editor372 * 98Lite 2.0 (which uses many of these policy keys) http://www.98lite.net/373 * "The Windows 95 Registry", by John Woram, 1996 MIS: Press374 */375 DWORD WINAPI SHRestricted (DWORD pol) {376 char regstr[256];377 HKEY xhkey;378 DWORD retval, polidx, i, datsize = 4;379 380 TRACE("(%08lx)\n",pol);381 382 polidx = -1;383 384 /* scan to see if we know this policy ID */385 for (i = 0; i < SHELL_MAX_POLICIES; i++)386 {387 if (pol == sh32_policy_table[i].polflags)388 {389 polidx = i;390 break;391 }392 }393 394 if (polidx == -1)395 {396 /* we don't know this policy, return 0 */397 TRACE("unknown policy: (%08lx)\n", pol);398 return 0;399 }400 401 /* we have a known policy */402 lstrcpyA(regstr, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\");403 lstrcatA(regstr, sh32_policy_table[polidx].appstr);404 405 /* first check if this policy has been cached, return it if so */406 if (sh32_policy_table[polidx].cache != SHELL_NO_POLICY)407 {408 return sh32_policy_table[polidx].cache;409 }410 411 /* return 0 and don't set the cache if any registry errors occur */412 retval = 0;413 if (RegOpenKeyA(HKEY_CURRENT_USER, regstr, &xhkey) == ERROR_SUCCESS)414 {415 if (RegQueryValueExA(xhkey, sh32_policy_table[polidx].keystr, NULL, NULL, (LPBYTE)&retval, &datsize) == ERROR_SUCCESS)416 {417 sh32_policy_table[polidx].cache = retval;418 }419 420 RegCloseKey(xhkey);421 }422 423 return retval;424 }425 426 /*************************************************************************427 * SHInitRestricted [SHELL32.244]428 *429 * Win98+ by-ordinal only routine called by Explorer and MSIE 4 and 5.430 * Inits the policy cache used by SHRestricted to avoid excess431 * registry access.432 *433 * INPUTS434 * Two inputs: one is a string or NULL. If non-NULL the pointer435 * should point to a string containing the following exact text:436 * "Software\Microsoft\Windows\CurrentVersion\Policies".437 * The other input is unused.438 *439 * NOTES440 * If the input is non-NULL and does not point to a string containing441 * that exact text the routine will do nothing.442 *443 * If the text does match or the pointer is NULL, then the routine444 * will init SHRestricted()'s policy cache to all 0xffffffff and445 * returns 0xffffffff as well.446 *447 * I haven't yet run into anything calling this with inputs other than448 * (NULL, NULL), so I may have the inputs reversed.449 */450 451 BOOL WINAPI SHInitRestricted(LPSTR inpRegKey, LPSTR parm2)452 {453 int i;454 455 dprintf(("SHELL32:SHELLORD:SHInitRestricted(%p, %p)\n", inpRegKey, parm2));456 457 /* first check - if input is non-NULL and points to the secret458 key string, then pass. Otherwise return 0.459 */460 461 if (inpRegKey != (LPSTR)NULL)462 {463 if (lstrcmpiA(inpRegKey, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies"))464 {465 /* doesn't match, fail */466 return 0;467 }468 }469 470 /* check passed, init all policy cache entries with SHELL_NO_POLICY */471 for (i = 0; i < SHELL_MAX_POLICIES; i++)472 {473 sh32_policy_table[i].cache = SHELL_NO_POLICY;474 }475 476 return SHELL_NO_POLICY;477 }478 479 /*************************************************************************480 * SHCreateDirectory [SHELL32.165]481 *482 * NOTES483 * exported by ordinal484 * not sure about LPSECURITY_ATTRIBUTES485 */486 DWORD WINAPI SHCreateDirectory(LPSECURITY_ATTRIBUTES sec,LPCSTR path) {487 TRACE("(%p,%s):stub.\n",sec,path);488 if (CreateDirectoryA(path,sec))489 return TRUE;490 /* SHChangeNotify(8,1,path,0); */491 return FALSE;492 #if 0493 if (SHELL32_79(path,(LPVOID)x))494 return 0;495 FIXME("(%08lx,%s):stub.\n",x,path);496 return 0;497 #endif498 }499 265 500 266 /************************************************************************* … … 506 272 */ 507 273 #define MEM_DEBUG 0 508 DWORDWINAPI SHFree(LPVOID x)274 void WINAPI SHFree(LPVOID x) 509 275 { 510 276 #if MEM_DEBUG 511 512 513 514 515 516 517 518 519 520 521 522 523 277 WORD len = *(LPWORD)(x-2); 278 279 if ( *(LPWORD)(x+len) != 0x7384) 280 ERR("MAGIC2!\n"); 281 282 if ( (*(LPWORD)(x-4)) != 0x8271) 283 ERR("MAGIC1!\n"); 284 else 285 memset(x-4, 0xde, len+6); 286 287 TRACE("%p len=%u\n",x, len); 288 289 x -= 4; 524 290 #else 525 291 TRACE("%p\n",x); 526 292 #endif 527 return HeapFree(GetProcessHeap(), 0, x); 293 294 HeapFree(GetProcessHeap(), 0, x); 528 295 } 529 296 … … 562 329 * exported by ordinal 563 330 */ 564 DWORD WINAPI SHRegisterDragDrop(HWND hWnd,IDropTarget * pDropTarget) 565 { 566 FIXME("(0x%08x,%p):stub.\n", hWnd, pDropTarget); 567 return RegisterDragDrop(hWnd, pDropTarget); 331 ODINFUNCTION2(HRESULT, SHRegisterDragDrop, 332 HWND, hWnd, 333 LPDROPTARGET, lpDropTarget) 334 { 335 dprintf(("SHELL32: SHRegisterDragDrop not correctly implemented")); 336 return RegisterDragDrop(hWnd, lpDropTarget); 568 337 } 569 338 … … 574 343 * exported by ordinal 575 344 */ 576 DWORD WINAPI SHRevokeDragDrop(DWORD x) { 577 FIXME("(0x%08lx):stub.\n",x); 578 return 0; 345 ODINFUNCTION1(HRESULT, SHRevokeDragDrop, 346 HWND, hWnd) 347 { 348 dprintf(("SHELL32: SHRevokeDragDrop not implemented")); 349 return 0; 579 350 } 580 351 … … 585 356 * exported by ordinal 586 357 */ 587 DWORD WINAPI SHDoDragDrop(DWORD u, DWORD v, DWORD w, DWORD x, DWORD y, DWORD z) { 588 FIXME("(0x%08lx 0x%08lx 0x%08lx 0x%08lx 0x%08lx 0x%08lx):stub.\n",u,v,w,x,y,z); 589 return 0; 590 } 591 592 /************************************************************************* 593 * RunFileDlg [SHELL32.61] 594 * 595 * NOTES 596 * Original name: RunFileDlg (exported by ordinal) 597 */ 598 DWORD WINAPI 599 RunFileDlg (HWND hwndOwner, DWORD dwParam1, DWORD dwParam2, 600 LPSTR lpszTitle, LPSTR lpszPrompt, UINT uFlags) 601 { 602 FIXME("(0x%08x 0x%lx 0x%lx \"%s\" \"%s\" 0x%x):stub.\n", 603 hwndOwner, dwParam1, dwParam2, lpszTitle, lpszPrompt, uFlags); 604 return 0; 605 } 606 607 /************************************************************************* 608 * ExitWindowsDialog [SHELL32.60] 609 * 610 * NOTES 611 * exported by ordinal 612 */ 613 void WINAPI ExitWindowsDialog (HWND hWndOwner) 614 { 615 TRACE("(0x%08x)\n", hWndOwner); 616 if (MessageBoxA( hWndOwner, "Do you want to exit Odin?", "Shutdown", MB_YESNO|MB_ICONQUESTION) == IDYES) 617 { SendMessageA ( hWndOwner, WM_QUIT, 0, 0); 618 } 619 } 358 ODINFUNCTION5(HRESULT, SHDoDragDrop, 359 HWND, hWnd, 360 LPDATAOBJECT, lpDataObject, 361 LPDROPSOURCE, lpDropSource, 362 DWORD, dwOKEffect, 363 LPDWORD, pdwEffect) 364 { 365 dprintf(("SHELL32: SHDoDragDrop not implemented")); 366 return 0; 367 } 368 620 369 621 370 /************************************************************************* … … 623 372 * 624 373 */ 625 DWORD WINAPI 626 ArrangeWindows (DWORD dwParam1, DWORD dwParam2, DWORD dwParam3, 627 DWORD dwParam4, DWORD dwParam5) 628 { 629 FIXME("(0x%lx 0x%lx 0x%lx 0x%lx 0x%lx):stub.\n", 630 dwParam1, dwParam2, dwParam3, dwParam4, dwParam5); 631 return 0; 374 ODINFUNCTION5(WORD, ArrangeWindows, 375 HWND, hwndParent, 376 DWORD, dwReserved, 377 LPCRECT, lpRect, 378 WORD, cKids, 379 CONST HWND*, lpKids) 380 { 381 dprintf(("SHELL32: ArrangeWindows not implemented")); 382 return 0; 632 383 } 633 384 … … 664 415 } 665 416 return 0; 666 }667 /*************************************************************************668 * SHFileOperation [SHELL32.242]669 *670 */671 DWORD WINAPI SHFileOperationAW(DWORD x)672 { FIXME("0x%08lx stub\n",x);673 return 0;674 675 }676 677 /*************************************************************************678 * SHFileOperationA [SHELL32.243]679 *680 * NOTES681 * exported by name682 */683 DWORD WINAPI SHFileOperationA (LPSHFILEOPSTRUCTA lpFileOp)684 { FIXME("(%p):stub.\n", lpFileOp);685 return 1;686 }687 /*************************************************************************688 * SHFileOperationW [SHELL32.244]689 *690 * NOTES691 * exported by name692 */693 DWORD WINAPI SHFileOperationW (LPSHFILEOPSTRUCTW lpFileOp)694 { FIXME("(%p):stub.\n", lpFileOp);695 return 1;696 417 } 697 418 … … 716 437 * see IShellFolder::CreateViewObject 717 438 */ 718 HRESULT WINAPI SHCreateShellFolderViewEx( 719 LPSHELLVIEWDATA psvcbi, /*[in ] shelltemplate struct*/ 720 LPVOID* ppv) /*[out] IShellView pointer*/ 721 { 722 IShellView * psf; 723 HRESULT hRes; 724 725 TRACE("sf=%p pidl=%p cb=%p mode=0x%08lx parm=0x%08lx\n", 726 psvcbi->pShellFolder, psvcbi->pidl, psvcbi->pCallBack, psvcbi->viewmode, psvcbi->dwUserParam); 727 728 psf = IShellView_Constructor(psvcbi->pShellFolder); 729 730 if (!psf) 731 return E_OUTOFMEMORY; 732 733 IShellView_AddRef(psf); 734 hRes = IShellView_QueryInterface(psf, &IID_IShellView, (LPVOID *)ppv); 735 IShellView_Release(psf); 736 737 return hRes; 439 ODINFUNCTION2(HRESULT, SHCreateShellFolderViewEx, 440 LPCSHELLFOLDERVIEWINFO, pshfvi, 441 LPSHELLVIEW*, ppshv) 442 { 443 IShellView * psf; 444 HRESULT hRes; 445 446 psf = IShellView_Constructor(pshfvi->pshf); 447 448 if (!psf) 449 return E_OUTOFMEMORY; 450 451 IShellView_AddRef(psf); 452 hRes = IShellView_QueryInterface(psf, &IID_IShellView, (LPVOID *)ppshv); 453 IShellView_Release(psf); 454 455 return hRes; 738 456 } 739 457 /************************************************************************* … … 831 549 pv = SHLockShared(hmem,0); 832 550 sprintf(szPidl,":%p",pv ); 833 SHUnlockShared( (HANDLE)pv);551 SHUnlockShared(pv); 834 552 835 553 gap = strlen(szPidl); … … 947 665 * exported by name 948 666 */ 949 HRESULT WINAPI SHFreeUnusedLibraries (void)950 { FIXME("stub\n");951 return TRUE;667 ODINPROCEDURE0(SHFreeUnusedLibraries) 668 { 669 dprintf(("SHELL32: SHFreeUnusedLibraries not implemented")); 952 670 } 953 671 /************************************************************************* … … 957 675 * exported by name 958 676 */ 959 HRESULT WINAPI DAD_SetDragImage (DWORD u, DWORD v) 960 { FIXME("0x%08lx 0x%08lx stub\n",u, v); 677 ODINFUNCTION2(BOOL, DAD_SetDragImage, 678 HIMAGELIST, himlTrack, 679 LPPOINT, lppt) 680 { 681 dprintf(("SHELL32: DAD_SetDragImage not implemented")); 961 682 return 0; 962 683 } … … 967 688 * exported by name 968 689 */ 969 HRESULT WINAPI DAD_ShowDragImage (DWORD u) 970 { FIXME("0x%08lx stub\n",u); 690 ODINFUNCTION1(BOOL, DAD_ShowDragImage, 691 BOOL, bShow) 692 { 693 dprintf(("SHELL32: DAD_ShowDragImage not implemented")); 971 694 return 0; 972 }973 /*************************************************************************974 * SHRegCloseKey [NT4.0:SHELL32.505]975 *976 */977 HRESULT WINAPI SHRegCloseKey (HKEY hkey)978 { TRACE("0x%04x\n",hkey);979 return RegCloseKey( hkey );980 }981 /*************************************************************************982 * SHRegOpenKeyA [SHELL32.506]983 *984 */985 HRESULT WINAPI SHRegOpenKeyA(HKEY hKey, LPSTR lpSubKey, LPHKEY phkResult)986 {987 TRACE("(0x%08x, %s, %p)\n", hKey, debugstr_a(lpSubKey), phkResult);988 return RegOpenKeyA(hKey, lpSubKey, phkResult);989 }990 991 /*************************************************************************992 * SHRegOpenKeyW [NT4.0:SHELL32.507]993 *994 */995 HRESULT WINAPI SHRegOpenKeyW (HKEY hkey, LPCWSTR lpszSubKey, LPHKEY retkey)996 { WARN("0x%04x %s %p\n",hkey,debugstr_w(lpszSubKey),retkey);997 return RegOpenKeyW( hkey, lpszSubKey, retkey );998 }999 /*************************************************************************1000 * SHRegQueryValueExA [SHELL32.509]1001 *1002 */1003 HRESULT WINAPI SHRegQueryValueExA(1004 HKEY hkey,1005 LPSTR lpValueName,1006 LPDWORD lpReserved,1007 LPDWORD lpType,1008 LPBYTE lpData,1009 LPDWORD lpcbData)1010 {1011 TRACE("0x%04x %s %p %p %p %p\n", hkey, lpValueName, lpReserved, lpType, lpData, lpcbData);1012 return RegQueryValueExA (hkey, lpValueName, lpReserved, lpType, lpData, lpcbData);1013 }1014 /*************************************************************************1015 * SHRegQueryValueW [NT4.0:SHELL32.510]1016 *1017 */1018 HRESULT WINAPI SHRegQueryValueW (HKEY hkey, LPWSTR lpszSubKey,1019 LPWSTR lpszData, LPDWORD lpcbData )1020 { WARN("0x%04x %s %p %p semi-stub\n",1021 hkey, debugstr_w(lpszSubKey), lpszData, lpcbData);1022 return RegQueryValueW( hkey, lpszSubKey, lpszData, (LPLONG)lpcbData );1023 }1024 1025 /*************************************************************************1026 * SHRegQueryValueExW [NT4.0:SHELL32.511]1027 *1028 * FIXME1029 * if the datatype REG_EXPAND_SZ then expand the string and change1030 * *pdwType to REG_SZ.1031 */1032 HRESULT WINAPI SHRegQueryValueExW (HKEY hkey, LPWSTR pszValue, LPDWORD pdwReserved,1033 LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData)1034 { DWORD ret;1035 WARN("0x%04x %s %p %p %p %p semi-stub\n",1036 hkey, debugstr_w(pszValue), pdwReserved, pdwType, pvData, pcbData);1037 ret = RegQueryValueExW ( hkey, pszValue, pdwReserved, pdwType, (LPBYTE)pvData, pcbData);1038 return ret;1039 695 } 1040 696 … … 1084 740 } 1085 741 1086 HRESULT WINAPI StrRetToStrNA (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl)1087 {1088 TRACE("dest=0x%p len=0x%lx strret=0x%p pidl=%p stub\n",dest,len,src,pidl);1089 1090 switch (src->uType)1091 {1092 case STRRET_WSTR:1093 WideCharToMultiByte(CP_ACP, 0, src->u.pOleStr, -1, (LPSTR)dest, len, NULL, NULL);1094 SHFree(src->u.pOleStr);1095 break;1096 1097 case STRRET_CSTRA:1098 lstrcpynA((LPSTR)dest, src->u.cStr, len);1099 break;1100 1101 case STRRET_OFFSETA:1102 lstrcpynA((LPSTR)dest, ((LPCSTR)&pidl->mkid)+src->u.uOffset, len);1103 break;1104 1105 default:1106 FIXME("unknown type!\n");1107 if (len)1108 {1109 *(LPSTR)dest = '\0';1110 }1111 return(FALSE);1112 }1113 return S_OK;1114 }1115 1116 742 HRESULT WINAPI StrRetToBufW (LPSTRRET src, LPITEMIDLIST pidl, LPWSTR dest, DWORD len) 1117 743 { … … 1119 745 } 1120 746 1121 HRESULT WINAPI StrRetToStrNW (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl)1122 {1123 TRACE("dest=0x%p len=0x%lx strret=0x%p pidl=%p stub\n",dest,len,src,pidl);1124 1125 switch (src->uType)1126 {1127 case STRRET_WSTR:1128 lstrcpynW((LPWSTR)dest, src->u.pOleStr, len);1129 SHFree(src->u.pOleStr);1130 break;1131 1132 case STRRET_CSTRA:1133 lstrcpynAtoW((LPWSTR)dest, src->u.cStr, len);1134 break;1135 1136 case STRRET_OFFSETA:1137 if (pidl)1138 {1139 lstrcpynAtoW((LPWSTR)dest, ((LPSTR)&pidl->mkid)+src->u.uOffset, len);1140 }1141 break;1142 1143 default:1144 FIXME("unknown type!\n");1145 if (len)1146 { *(LPSTR)dest = '\0';1147 }1148 return(FALSE);1149 }1150 return S_OK;1151 }1152 HRESULT WINAPI StrRetToStrNAW (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl)1153 {1154 if(VERSION_OsIsUnicode())1155 return StrRetToStrNW (dest, len, src, pidl);1156 return StrRetToStrNA (dest, len, src, pidl);1157 }1158 747 1159 748 /************************************************************************* … … 1257 846 * parameter1 is return value from SHLockShared 1258 847 */ 1259 BOOL WINAPI SHUnlockShared(HANDLE pmem) 1260 { TRACE("handle=0x%04x\n",pmem); 1261 return GlobalUnlock(pmem); 848 ODINFUNCTION1(BOOL, SHUnlockShared, 849 LPVOID, pv) 850 { 851 TRACE("handle=0x%08x\n",pv); 852 //@@@PH rather VirtualUnlock ? 853 return GlobalUnlock((HANDLE)pv); 1262 854 } 1263 855 /************************************************************************* … … 1309 901 * 1310 902 */ 1311 HRESULT WINAPI SHOutOfMemoryMessageBox(DWORD u, DWORD v, DWORD w) 1312 { FIXME("0x%04lx 0x%04lx 0x%04lx stub\n",u,v,w); 1313 return 0; 903 ODINFUNCTION3(int, SHOutOfMemoryMessageBox, 904 HWND, hwndOwner, 905 LPCSTR, lpCaption, 906 UINT, uType) 907 { 908 dprintf(("SHELL32: SHOutOfMemoryMessageBox not implemented.")); 909 return 0; 1314 910 } 1315 911 /************************************************************************* … … 1408 1004 * 1409 1005 */ 1410 HRESULT WINAPI SHWaitForFileToOpen(DWORD u, DWORD v, DWORD w) 1411 { FIXME("0x%04lx 0x%04lx 0x%04lx stub\n",u,v,w); 1412 return 0; 1006 ODINFUNCTION3(BOOL, SHWaitForFileToOpen, 1007 LPCITEMIDLIST, pidl, 1008 DWORD, dwFlags, 1009 DWORD, dwTimeout) 1010 { 1011 dprintf(("SHELL32: SHWaitForFileToOpen not implemented")); 1012 return 0; 1413 1013 } 1414 1014 /************************************************************************* … … 1452 1052 return 0; 1453 1053 } 1454 /************************************************************************1455 * StrToOleStr [SHELL32.163]1456 *1457 */1458 int WINAPI StrToOleStrA (LPWSTR lpWideCharStr, LPCSTR lpMultiByteString)1459 {1460 TRACE("%p %p(%s)\n",1461 lpWideCharStr, lpMultiByteString, lpMultiByteString);1462 1463 return MultiByteToWideChar(0, 0, lpMultiByteString, -1, lpWideCharStr, MAX_PATH);1464 1465 }1466 int WINAPI StrToOleStrW (LPWSTR lpWideCharStr, LPCWSTR lpWString)1467 {1468 TRACE("%p %p(%s)\n",1469 lpWideCharStr, lpWString, debugstr_w(lpWString));1470 1471 if (lstrcpyW (lpWideCharStr, lpWString ))1472 { return lstrlenW (lpWideCharStr);1473 }1474 return 0;1475 }1476 1477 BOOL WINAPI StrToOleStrAW (LPWSTR lpWideCharStr, LPCVOID lpString)1478 {1479 if (VERSION_OsIsUnicode())1480 return StrToOleStrW (lpWideCharStr, (LPCWSTR)lpString);1481 return StrToOleStrA (lpWideCharStr, (LPCSTR)lpString);1482 }1483 1054 1484 1055 /************************************************************************ … … 1526 1097 { 1527 1098 return FALSE; 1528 }1529 1530 /************************************************************************1531 * Win32DeleteFile [SHELL32.164]1532 *1533 * Deletes a file. Also triggers a change notify if one exists, but1534 * that mechanism doesn't yet exist in Wine's SHELL32.1535 *1536 * FIXME:1537 * Verified on Win98 / IE 5 (SHELL32 4.72, March 1999 build) to be1538 * ANSI. Is this Unicode on NT?1539 *1540 */1541 1542 BOOL WINAPI Win32DeleteFile(LPSTR fName)1543 {1544 dprintf(("SHELL32:SHELLORD:Win32DeleteFile %p(%s): partial stub\n", fName, fName));1545 1546 DeleteFileA(fName);1547 1548 return TRUE;1549 1099 } 1550 1100 -
trunk/src/shell32/shellpath.cpp
r3551 r4032 1 /* $Id: shellpath.cpp,v 1.1 0 2000-05-18 14:16:04 sandervlExp $ */1 /* $Id: shellpath.cpp,v 1.11 2000-08-18 02:01:23 phaller Exp $ */ 2 2 3 3 /* … … 48 48 ODINDEBUGCHANNEL(SHELL32-SHELLPATH) 49 49 50 /*************************************************************************51 * SheGetDirW [SHELL32.281]52 *53 */54 ODINFUNCTION2(HRESULT, SheGetDirW,55 LPWSTR, u,56 LPWSTR, v)57 { FIXME("%p %p stub\n",u,v);58 return 0;59 }60 61 /*************************************************************************62 * SheChangeDirW [SHELL32.274]63 *64 */65 ODINFUNCTION1(HRESULT, SheChangeDirW,66 LPWSTR, u)67 { FIXME("(%s),stub\n",debugstr_w(u));68 return 0;69 } -
trunk/src/shell32/shlfolder.cpp
r3646 r4032 1 /* $Id: shlfolder.cpp,v 1.1 4 2000-06-01 14:01:10 sandervlExp $ */1 /* $Id: shlfolder.cpp,v 1.15 2000-08-18 02:01:23 phaller Exp $ */ 2 2 /* 3 3 * Shell Folder stuff … … 32 32 #include "shresdef.h" 33 33 #include "shlwapi.h" 34 35 #include "initguid.h" 36 #include "shellfolder.h" 34 37 35 38 #include <heapstring.h> … … 286 289 287 290 ICOM_VTABLE(IShellFolder2)* lpvtblShellFolder; 288 ICOM_VTABLE(IPersistFolder )* lpvtblPersistFolder;291 ICOM_VTABLE(IPersistFolder2)* lpvtblPersistFolder2; 289 292 ICOM_VTABLE(IDropTarget)* lpvtblDropTarget; 293 ICOM_VTABLE(ISFHelper)* lpvtblSFHelper; 290 294 291 295 IUnknown *pUnkOuter; /* used for aggregation */ … … 302 306 extern struct ICOM_VTABLE(IUnknown) unkvt; 303 307 extern struct ICOM_VTABLE(IShellFolder2) sfvt; 304 extern struct ICOM_VTABLE(IPersistFolder ) psfvt;308 extern struct ICOM_VTABLE(IPersistFolder2) psfvt; 305 309 extern struct ICOM_VTABLE(IDropTarget) dtvt; 310 extern struct ICOM_VTABLE(ISFHelper) shvt; 306 311 307 312 static IShellFolder * ISF_MyComputer_Constructor(void); … … 310 315 #define _ICOM_THIS_From_IShellFolder2(class, name) class* This = (class*)(((char*)name)-_IShellFolder2_Offset); 311 316 312 #define _IPersistFolder_Offset ((int)(&(((IGenericSFImpl*)0)->lpvtblPersistFolder )))313 #define _ICOM_THIS_From_IPersistFolder (class, name) class* This = (class*)(((char*)name)-_IPersistFolder_Offset);317 #define _IPersistFolder_Offset ((int)(&(((IGenericSFImpl*)0)->lpvtblPersistFolder2))) 318 #define _ICOM_THIS_From_IPersistFolder2(class, name) class* This = (class*)(((char*)name)-_IPersistFolder_Offset); 314 319 315 320 #define _IDropTarget_Offset ((int)(&(((IGenericSFImpl*)0)->lpvtblDropTarget))) 316 321 #define _ICOM_THIS_From_IDropTarget(class, name) class* This = (class*)(((char*)name)-_IDropTarget_Offset); 317 322 323 #define _ISFHelper_Offset ((int)(&(((IGenericSFImpl*)0)->lpvtblSFHelper))) 324 #define _ICOM_THIS_From_ISFHelper(class, name) class* This = (class*)(((char*)name)-_ISFHelper_Offset); 318 325 /* 319 326 converts This to a interface pointer … … 322 329 #define _IShellFolder_(This) (IShellFolder*)&(This->lpvtblShellFolder) 323 330 #define _IShellFolder2_(This) (IShellFolder2*)&(This->lpvtblShellFolder) 324 #define _IPersist_(This) (IPersist*)&(This->lpvtblPersistFolder) 325 #define _IPersistFolder_(This) (IPersistFolder*)&(This->lpvtblPersistFolder) 331 #define _IPersist_(This) (IPersist*)&(This->lpvtblPersistFolder2) 332 #define _IPersistFolder_(This) (IPersistFolder*)&(This->lpvtblPersistFolder2) 333 #define _IPersistFolder2_(This) (IPersistFolder2*)&(This->lpvtblPersistFolder2) 326 334 #define _IDropTarget_(This) (IDropTarget*)&(This->lpvtblDropTarget) 335 #define _ISFHelper_(This) (ISFHelper*)&(This->lpvtblSFHelper) 327 336 328 337 /************************************************************************** … … 363 372 else if(IsEqualIID(riid, &IID_IPersist)) *ppvObj = _IPersist_(This); 364 373 else if(IsEqualIID(riid, &IID_IPersistFolder)) *ppvObj = _IPersistFolder_(This); 374 else if(IsEqualIID(riid, &IID_IPersistFolder2)) *ppvObj = _IPersistFolder2_(This); 375 else if(IsEqualIID(riid, &IID_ISFHelper)) *ppvObj = _ISFHelper_(This); 365 376 else if(IsEqualIID(riid, &IID_IDropTarget)) 366 377 { … … 467 478 ICOM_VTBL(sf)=&unkvt; 468 479 sf->lpvtblShellFolder=&sfvt; 469 sf->lpvtblPersistFolder =&psfvt;480 sf->lpvtblPersistFolder2=&psfvt; 470 481 sf->lpvtblDropTarget=&dtvt; 471 482 sf->pclsid = (CLSID*)&CLSID_SFFile; … … 504 515 ICOM_VTBL(sf)=&unkvt; 505 516 sf->lpvtblShellFolder=&sfvt; 506 sf->lpvtblPersistFolder =&psfvt;517 sf->lpvtblPersistFolder2=&psfvt; 507 518 sf->lpvtblDropTarget=&dtvt; 508 519 sf->pclsid = (CLSID*)&CLSID_SFFile; … … 539 550 540 551 len = strlen(sf->sMyPath); 541 _ILSimpleGetText(pidl, sf->sMyPath + len, dwSize - len + 1);552 _ILSimpleGetText(pidl, sf->sMyPath + len, dwSize - len + 2); 542 553 } 543 554 … … 668 679 else 669 680 { 670 hr = S_OK; 681 hr = S_OK; 682 683 if (pdwAttributes && *pdwAttributes) 684 { 685 SHELL32_GetItemAttributes(_IShellFolder_(This), pidlTemp, pdwAttributes); 686 } 671 687 } 672 688 } … … 761 777 } 762 778 } 763 else 779 else if(_ILIsFolder(pidl)) 764 780 { 765 781 LPITEMIDLIST pidltemp = ILCloneFirst(pidl); 766 782 pShellFolder = IShellFolder_Constructor(iface, pidltemp); 767 783 ILFree(pidltemp); 784 } 785 else 786 { 787 ERR("can't bind to a file\n"); 788 return E_FAIL; 768 789 } 769 790 … … 1053 1074 if(IsEqualIID(riid, &IID_IContextMenu) && (cidl >= 1)) 1054 1075 { 1055 pObj = (LPUNKNOWN)I ContextMenu_Constructor((IShellFolder *)iface, This->absPidl, apidl, cidl);1076 pObj = (LPUNKNOWN)ISvItemCm_Constructor((IShellFolder *)iface, This->absPidl, apidl, cidl); 1056 1077 hr = S_OK; 1057 1078 } … … 1171 1192 LPCITEMIDLIST pidl, /*simple pidl*/ 1172 1193 LPCOLESTR lpName, 1173 DWORD dw ,1194 DWORD dwFlags, 1174 1195 LPITEMIDLIST *pPidlOut) 1175 1196 { 1176 1197 _ICOM_THIS_From_IShellFolder2(IGenericSFImpl, iface) 1177 1178 FIXME("(%p)->(%u,pidl=%p,%s,%lu,%p),stub!\n", 1179 This,hwndOwner,pidl,debugstr_w(lpName),dw,pPidlOut); 1180 1181 return E_NOTIMPL; 1198 1199 char szSrc[MAX_PATH], szDest[MAX_PATH]; 1200 int len; 1201 BOOL bIsFolder = _ILIsFolder(ILFindLastID(pidl)); 1202 1203 TRACE("(%p)->(%u,pidl=%p,%s,%lu,%p)\n", 1204 This,hwndOwner,pidl,debugstr_w(lpName),dwFlags,pPidlOut); 1205 1206 /* build source path */ 1207 if (dwFlags & SHGDN_INFOLDER) 1208 { 1209 strcpy(szSrc, This->sMyPath); 1210 PathAddBackslashA(szSrc); 1211 len = strlen (szSrc); 1212 _ILSimpleGetText(pidl, szSrc+len, MAX_PATH-len); 1213 } 1214 else 1215 { 1216 SHGetPathFromIDListA(pidl, szSrc); 1217 } 1218 1219 /* build destination path */ 1220 strcpy(szDest, This->sMyPath); 1221 PathAddBackslashA(szDest); 1222 len = strlen (szDest); 1223 lstrcpynWtoA(szDest+len, lpName, MAX_PATH-len); 1224 1225 TRACE("src=%s dest=%s\n", szSrc, szDest); 1226 if ( MoveFileA(szSrc, szDest) ) 1227 { 1228 if (pPidlOut) *pPidlOut = SHSimpleIDListFromPathA(szDest); 1229 SHChangeNotifyA( bIsFolder?SHCNE_RENAMEFOLDER:SHCNE_RENAMEITEM, SHCNF_PATHA, szSrc, szDest); 1230 return S_OK; 1231 } 1232 return E_FAIL; 1182 1233 } 1183 1234 … … 1347 1398 }; 1348 1399 1400 1401 /**************************************************************************** 1402 * ISFHelper for IShellFolder implementation 1403 */ 1404 1405 static HRESULT WINAPI ISFHelper_fnQueryInterface( 1406 ISFHelper *iface, 1407 REFIID riid, 1408 LPVOID *ppvObj) 1409 { 1410 _ICOM_THIS_From_ISFHelper(IGenericSFImpl,iface); 1411 1412 TRACE("(%p)\n", This); 1413 1414 return IUnknown_QueryInterface(This->pUnkOuter, riid, ppvObj); 1415 } 1416 1417 static ULONG WINAPI ISFHelper_fnAddRef( 1418 ISFHelper *iface) 1419 { 1420 _ICOM_THIS_From_ISFHelper(IGenericSFImpl,iface); 1421 1422 TRACE("(%p)\n", This); 1423 1424 return IUnknown_AddRef(This->pUnkOuter); 1425 } 1426 1427 static ULONG WINAPI ISFHelper_fnRelease( 1428 ISFHelper *iface) 1429 { 1430 _ICOM_THIS_From_ISFHelper(IGenericSFImpl,iface); 1431 1432 TRACE("(%p)\n", This); 1433 1434 return IUnknown_Release(This->pUnkOuter); 1435 } 1436 1437 1438 /**************************************************************************** 1439 * ISFHelper_fnAddFolder 1440 * 1441 * creates a unique folder name 1442 */ 1443 1444 static HRESULT WINAPI ISFHelper_fnGetUniqueName( 1445 ISFHelper *iface, 1446 LPSTR lpName, 1447 UINT uLen) 1448 { 1449 _ICOM_THIS_From_ISFHelper(IGenericSFImpl,iface) 1450 IEnumIDList * penum; 1451 HRESULT hr; 1452 char szText[MAX_PATH]; 1453 char * szNewFolder = "New Folder"; 1454 1455 TRACE("(%p)(%s %u)\n", This, lpName, uLen); 1456 1457 if (uLen < strlen(szNewFolder) + 4) return E_POINTER; 1458 1459 strcpy(lpName, szNewFolder); 1460 1461 hr = IShellFolder_fnEnumObjects(_IShellFolder2_(This), 0, SHCONTF_FOLDERS | SHCONTF_NONFOLDERS | SHCONTF_INCLUDEHIDDEN, &penum); 1462 if (penum) 1463 { 1464 LPITEMIDLIST pidl; 1465 DWORD dwFetched; 1466 int i=1; 1467 1468 next: IEnumIDList_Reset(penum); 1469 while(S_OK == IEnumIDList_Next(penum, 1, &pidl, &dwFetched) && dwFetched) 1470 { 1471 _ILSimpleGetText(pidl, szText, MAX_PATH); 1472 if (0 == strcmp(szText, lpName)) 1473 { 1474 sprintf(lpName, "%s %d", szNewFolder, i++); 1475 if (i > 99) 1476 { 1477 hr = E_FAIL; 1478 break; 1479 } 1480 goto next; 1481 } 1482 } 1483 1484 IEnumIDList_Release(penum); 1485 } 1486 return hr; 1487 } 1488 1489 /**************************************************************************** 1490 * ISFHelper_fnAddFolder 1491 * 1492 * adds a new folder. 1493 */ 1494 1495 static HRESULT WINAPI ISFHelper_fnAddFolder( 1496 ISFHelper *iface, 1497 HWND hwnd, 1498 LPCSTR lpName, 1499 LPITEMIDLIST* ppidlOut) 1500 { 1501 _ICOM_THIS_From_ISFHelper(IGenericSFImpl,iface) 1502 char lpstrNewDir[MAX_PATH]; 1503 DWORD bRes; 1504 HRESULT hres = E_FAIL; 1505 1506 TRACE("(%p)(%s %p)\n", This, lpName, ppidlOut); 1507 1508 strcpy(lpstrNewDir, This->sMyPath); 1509 PathAddBackslashA(lpstrNewDir); 1510 strcat(lpstrNewDir, lpName); 1511 1512 bRes = CreateDirectoryA(lpstrNewDir, NULL); 1513 1514 if (bRes) 1515 { 1516 LPITEMIDLIST pidl, pidlitem; 1517 1518 pidlitem = SHSimpleIDListFromPathA(lpstrNewDir); 1519 1520 pidl = ILCombine(This->absPidl, pidlitem); 1521 SHChangeNotifyA(SHCNE_MKDIR, SHCNF_IDLIST, pidl, NULL); 1522 SHFree(pidl); 1523 1524 if (ppidlOut) *ppidlOut = pidlitem; 1525 hres = S_OK; 1526 } 1527 else 1528 { 1529 char lpstrText[128+MAX_PATH]; 1530 char lpstrTempText[128]; 1531 char lpstrCaption[256]; 1532 1533 /* Cannot Create folder because of permissions */ 1534 LoadStringA(shell32_hInstance, IDS_CREATEFOLDER_DENIED, lpstrTempText, sizeof(lpstrTempText)); 1535 LoadStringA(shell32_hInstance, IDS_CREATEFOLDER_CAPTION, lpstrCaption, sizeof(lpstrCaption)); 1536 sprintf(lpstrText,lpstrTempText, lpstrNewDir); 1537 MessageBoxA(hwnd,lpstrText, lpstrCaption, MB_OK | MB_ICONEXCLAMATION); 1538 } 1539 1540 return hres; 1541 } 1542 1543 /**************************************************************************** 1544 * ISFHelper_fnDeleteItems 1545 * 1546 * deletes items in folder 1547 */ 1548 static HRESULT WINAPI ISFHelper_fnDeleteItems( 1549 ISFHelper *iface, 1550 UINT cidl, 1551 LPCITEMIDLIST* apidl) 1552 { 1553 _ICOM_THIS_From_ISFHelper(IGenericSFImpl,iface) 1554 int i; 1555 char szPath[MAX_PATH]; 1556 1557 TRACE("(%p)(%u %p)\n", This, cidl, apidl); 1558 1559 for(i=0; i< cidl; i++) 1560 { 1561 strcpy(szPath, This->sMyPath); 1562 PathAddBackslashA(szPath); 1563 _ILSimpleGetText(apidl[i], szPath+strlen(szPath), MAX_PATH); 1564 1565 if (_ILIsFolder(apidl[i])) 1566 { 1567 LPITEMIDLIST pidl; 1568 1569 MESSAGE("delete %s\n", szPath); 1570 if (! SHELL_DeleteDirectoryA(szPath, TRUE)) return E_FAIL; 1571 pidl = ILCombine(This->absPidl, apidl[i]); 1572 SHChangeNotifyA(SHCNE_RMDIR, SHCNF_IDLIST, pidl, NULL); 1573 SHFree(pidl); 1574 } 1575 else if (_ILIsValue(apidl[i])) 1576 { 1577 LPITEMIDLIST pidl; 1578 1579 MESSAGE("delete %s\n", szPath); 1580 if (! DeleteFileA(szPath)) return E_FAIL; 1581 pidl = ILCombine(This->absPidl, apidl[i]); 1582 SHChangeNotifyA(SHCNE_DELETE, SHCNF_IDLIST, pidl, NULL); 1583 SHFree(pidl); 1584 } 1585 1586 } 1587 return S_OK; 1588 } 1589 1590 /**************************************************************************** 1591 * ISFHelper_fnCopyItems 1592 * 1593 * copys items to this folder 1594 */ 1595 static HRESULT WINAPI ISFHelper_fnCopyItems( 1596 ISFHelper *iface, 1597 IShellFolder* pSFFrom, 1598 UINT cidl, 1599 LPCITEMIDLIST *apidl) 1600 { 1601 int i; 1602 IPersistFolder2 * ppf2=NULL; 1603 char szSrcPath[MAX_PATH], szDstPath[MAX_PATH]; 1604 _ICOM_THIS_From_ISFHelper(IGenericSFImpl,iface); 1605 1606 TRACE("(%p)->(%p,%u,%p)\n", This, pSFFrom, cidl, apidl); 1607 1608 IShellFolder_QueryInterface(pSFFrom, &IID_IPersistFolder2, (LPVOID*)&ppf2); 1609 if (ppf2) 1610 { 1611 LPITEMIDLIST pidl; 1612 if (SUCCEEDED(IPersistFolder2_GetCurFolder(ppf2, &pidl))) 1613 { 1614 for (i=0; i<cidl; i++) 1615 { 1616 SHGetPathFromIDListA(pidl, szSrcPath); 1617 PathAddBackslashA(szSrcPath); 1618 _ILSimpleGetText(apidl[i], szSrcPath+strlen(szSrcPath), MAX_PATH); 1619 1620 strcpy(szDstPath, This->sMyPath); 1621 PathAddBackslashA(szDstPath); 1622 _ILSimpleGetText(apidl[i], szDstPath+strlen(szDstPath), MAX_PATH); 1623 MESSAGE("would copy %s to %s\n", szSrcPath, szDstPath); 1624 } 1625 SHFree(pidl); 1626 } 1627 IPersistFolder2_Release(ppf2); 1628 } 1629 return S_OK; 1630 } 1631 1632 ICOM_VTABLE(ISFHelper) shvt = 1633 { 1634 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE 1635 ISFHelper_fnQueryInterface, 1636 ISFHelper_fnAddRef, 1637 ISFHelper_fnRelease, 1638 ISFHelper_fnGetUniqueName, 1639 ISFHelper_fnAddFolder, 1640 ISFHelper_fnDeleteItems, 1641 ISFHelper_fnCopyItems, 1642 }; 1643 1349 1644 /*********************************************************************** 1350 1645 * [Desktopfolder] IShellFolder implementation … … 1464 1759 { 1465 1760 hr = S_OK; 1761 1762 if (pdwAttributes && *pdwAttributes) 1763 { 1764 SHELL32_GetItemAttributes(_IShellFolder_(This), pidlTemp, pdwAttributes); 1765 } 1466 1766 } 1467 1767 … … 1883 2183 ICOM_VTBL(sf)=&unkvt; 1884 2184 sf->lpvtblShellFolder=&sfmcvt; 1885 sf->lpvtblPersistFolder = &psfvt;2185 sf->lpvtblPersistFolder2 = &psfvt; 1886 2186 sf->pclsid = (CLSID*)&CLSID_SFMyComp; 1887 2187 sf->absPidl=_ILCreateMyComputer(); /* my qualified pidl */ … … 2367 2667 * 2368 2668 */ 2369 static HRESULT WINAPI ISFPersistFolder _QueryInterface(2370 IPersistFolder * iface,2669 static HRESULT WINAPI ISFPersistFolder2_QueryInterface( 2670 IPersistFolder2 * iface, 2371 2671 REFIID iid, 2372 2672 LPVOID* ppvObj) 2373 2673 { 2374 _ICOM_THIS_From_IPersistFolder (IGenericSFImpl, iface);2674 _ICOM_THIS_From_IPersistFolder2(IGenericSFImpl, iface); 2375 2675 2376 2676 TRACE("(%p)\n", This); … … 2383 2683 * 2384 2684 */ 2385 static ULONG WINAPI ISFPersistFolder _AddRef(2386 IPersistFolder * iface)2387 { 2388 _ICOM_THIS_From_IPersistFolder (IGenericSFImpl, iface);2685 static ULONG WINAPI ISFPersistFolder2_AddRef( 2686 IPersistFolder2 * iface) 2687 { 2688 _ICOM_THIS_From_IPersistFolder2(IGenericSFImpl, iface); 2389 2689 2390 2690 TRACE("(%p)\n", This); … … 2397 2697 * 2398 2698 */ 2399 static ULONG WINAPI ISFPersistFolder _Release(2400 IPersistFolder * iface)2401 { 2402 _ICOM_THIS_From_IPersistFolder (IGenericSFImpl, iface);2699 static ULONG WINAPI ISFPersistFolder2_Release( 2700 IPersistFolder2 * iface) 2701 { 2702 _ICOM_THIS_From_IPersistFolder2(IGenericSFImpl, iface); 2403 2703 2404 2704 TRACE("(%p)\n", This); … … 2410 2710 * ISFPersistFolder_GetClassID (IPersist) 2411 2711 */ 2412 static HRESULT WINAPI ISFPersistFolder _GetClassID(2413 IPersistFolder * iface,2712 static HRESULT WINAPI ISFPersistFolder2_GetClassID( 2713 IPersistFolder2 * iface, 2414 2714 CLSID * lpClassId) 2415 2715 { 2416 _ICOM_THIS_From_IPersistFolder (IGenericSFImpl, iface);2716 _ICOM_THIS_From_IPersistFolder2(IGenericSFImpl, iface); 2417 2717 2418 2718 TRACE("(%p)\n", This); … … 2430 2730 * sMyPath is not set. Don't know how to handle in a non rooted environment. 2431 2731 */ 2432 static HRESULT WINAPI ISFPersistFolder _Initialize(2433 IPersistFolder *iface,2732 static HRESULT WINAPI ISFPersistFolder2_Initialize( 2733 IPersistFolder2 * iface, 2434 2734 LPCITEMIDLIST pidl) 2435 2735 { 2436 2736 char sTemp[MAX_PATH]; 2437 _ICOM_THIS_From_IPersistFolder (IGenericSFImpl, iface);2737 _ICOM_THIS_From_IPersistFolder2(IGenericSFImpl, iface); 2438 2738 2439 2739 TRACE("(%p)->(%p)\n", This, pidl); … … 2466 2766 } 2467 2767 2468 ICOM_VTABLE(IPersistFolder) psfvt = 2768 /************************************************************************** 2769 * IPersistFolder2_fnGetCurFolder 2770 */ 2771 static HRESULT WINAPI ISFPersistFolder2_fnGetCurFolder( 2772 IPersistFolder2 * iface, 2773 LPITEMIDLIST * pidl) 2774 { 2775 _ICOM_THIS_From_IPersistFolder2(IGenericSFImpl, iface); 2776 2777 TRACE("(%p)->(%p)\n",This, pidl); 2778 2779 if (!pidl) return E_POINTER; 2780 2781 *pidl = ILClone(This->absPidl); 2782 2783 return S_OK; 2784 } 2785 2786 ICOM_VTABLE(IPersistFolder2) psfvt = 2469 2787 { 2470 2788 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE 2471 ISFPersistFolder_QueryInterface, 2472 ISFPersistFolder_AddRef, 2473 ISFPersistFolder_Release, 2474 ISFPersistFolder_GetClassID, 2475 ISFPersistFolder_Initialize 2789 ISFPersistFolder2_QueryInterface, 2790 ISFPersistFolder2_AddRef, 2791 ISFPersistFolder2_Release, 2792 ISFPersistFolder2_GetClassID, 2793 ISFPersistFolder2_Initialize, 2794 ISFPersistFolder2_fnGetCurFolder 2476 2795 }; 2477 2796 … … 2609 2928 ISFDropTarget_Drop 2610 2929 }; 2611 -
trunk/src/shell32/shlmenu.cpp
r3243 r4032 1 /* $Id: shlmenu.cpp,v 1. 5 2000-03-26 16:34:53 cbratschiExp $ */1 /* $Id: shlmenu.cpp,v 1.6 2000-08-18 02:01:25 phaller Exp $ */ 2 2 3 3 /* … … 43 43 #include "winversion.h" 44 44 #include "shell32_main.h" 45 #include "shlguid.h" 45 46 46 47 #include "pidl.h" … … 143 144 static int FM_InitMenuPopup(HMENU hmenu, LPITEMIDLIST pAlternatePidl) 144 145 { IShellFolder *lpsf, *lpsf2; 145 ULONG ulItemAttr ;146 ULONG ulItemAttr = SFGAO_FOLDER; 146 147 UINT uID, uFlags, uEnumFlags; 147 148 LPFNFMCALLBACK lpfnCallback; … … 196 197 { 197 198 ILGetDisplayName( pidlTemp, sTemp); 198 if (! (PidlToSicIndex(lpsf, pidlTemp, FALSE, (UINT*)&iIcon)))199 if (! (PidlToSicIndex(lpsf, pidlTemp, FALSE, 0, (UINT*)&iIcon))) 199 200 iIcon = FM_BLANK_ICON; 200 201 if ( SFGAO_FOLDER & ulItemAttr) … … 473 474 * FileMenu_AppendFilesForPidl [SHELL32.124] 474 475 */ 475 ODINFUNCTION3( HMENU,FileMenu_AppendFilesForPidl,476 ODINFUNCTION3(int, FileMenu_AppendFilesForPidl, 476 477 HMENU, hmenu, 477 478 LPCITEMIDLIST, pidl, … … 519 520 * FileMenu_TrackPopupMenuEx [SHELL32.116] 520 521 */ 521 ODINFUNCTION6( HRESULT,FileMenu_TrackPopupMenuEx,522 ODINFUNCTION6(BOOL, FileMenu_TrackPopupMenuEx, 522 523 HMENU, hMenu, 523 524 UINT, uFlags, -
trunk/src/shell32/shlview.cpp
r3792 r4032 1 /* $Id: shlview.cpp,v 1.1 4 2000-07-02 15:00:18 sandervlExp $ */1 /* $Id: shlview.cpp,v 1.15 2000-08-18 02:01:25 phaller Exp $ */ 2 2 /* 3 3 * ShellView … … 811 811 hMenu = CreatePopupMenu(); 812 812 813 pCM = ISvBgCm_Constructor( );813 pCM = ISvBgCm_Constructor(This->pSFParent); 814 814 IContextMenu_QueryContextMenu(pCM, hMenu, 0, FCIDM_SHVIEWFIRST, FCIDM_SHVIEWLAST, 0); 815 815 … … 1757 1757 { 1758 1758 case SVGIO_BACKGROUND: 1759 *ppvOut = ISvBgCm_Constructor( );1759 *ppvOut = ISvBgCm_Constructor(This->pSFParent); 1760 1760 break; 1761 1761 -
trunk/src/shell32/shpolicy.cpp
r3243 r4032 1 /* $Id: shpolicy.cpp,v 1. 2 2000-03-26 16:34:55 cbratschiExp $ */1 /* $Id: shpolicy.cpp,v 1.3 2000-08-18 02:01:26 phaller Exp $ */ 2 2 3 3 /* … … 35 35 #include <string.h> 36 36 37 #include "windef.h" 38 #include "wingdi.h" 39 #include "winerror.h" 40 #include "winreg.h" 41 #include "debugtools.h" 37 42 #include "wine/winuser16.h" 38 #include "shpolicy.h" 43 44 #define SHELL_MAX_POLICIES 57 45 46 #define SHELL_NO_POLICY 0xffffffff 47 48 typedef struct tagPOLICYDAT 49 { 50 DWORD polflags; /* flags value passed to SHRestricted */ 51 LPSTR appstr; /* application str such as "Explorer" */ 52 LPSTR keystr; /* name of the actual registry key / policy */ 53 DWORD cache; /* cached value or 0xffffffff for invalid */ 54 } POLICYDATA, *LPPOLICYDATA; 55 56 // #include "shpolicy.h" PH: Strange ... ? 39 57 40 58 /* application strings */ … … 451 469 } 452 470 }; 471 472 /************************************************************************* 473 * SHRestricted [SHELL32.100] 474 * 475 * walks through policy table, queries <app> key, <type> value, returns 476 * queried (DWORD) value, and caches it between called to SHInitRestricted 477 * to prevent unnecessary registry access. 478 * 479 * NOTES 480 * exported by ordinal 481 * 482 * REFERENCES: 483 * MS System Policy Editor 484 * 98Lite 2.0 (which uses many of these policy keys) http://www.98lite.net/ 485 * "The Windows 95 Registry", by John Woram, 1996 MIS: Press 486 */ 487 DWORD WINAPI SHRestricted (DWORD pol) { 488 char regstr[256]; 489 HKEY xhkey; 490 DWORD retval, polidx, i, datsize = 4; 491 492 TRACE("(%08lx)\n",pol); 493 494 polidx = -1; 495 496 /* scan to see if we know this policy ID */ 497 for (i = 0; i < SHELL_MAX_POLICIES; i++) 498 { 499 if (pol == sh32_policy_table[i].polflags) 500 { 501 polidx = i; 502 break; 503 } 504 } 505 506 if (polidx == -1) 507 { 508 /* we don't know this policy, return 0 */ 509 TRACE("unknown policy: (%08lx)\n", pol); 510 return 0; 511 } 512 513 /* we have a known policy */ 514 strcpy(regstr, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\"); 515 strcat(regstr, sh32_policy_table[polidx].appstr); 516 517 /* first check if this policy has been cached, return it if so */ 518 if (sh32_policy_table[polidx].cache != SHELL_NO_POLICY) 519 { 520 return sh32_policy_table[polidx].cache; 521 } 522 523 /* return 0 and don't set the cache if any registry errors occur */ 524 retval = 0; 525 if (RegOpenKeyA(HKEY_CURRENT_USER, regstr, &xhkey) == ERROR_SUCCESS) 526 { 527 if (RegQueryValueExA(xhkey, sh32_policy_table[polidx].keystr, NULL, NULL, (LPBYTE)&retval, &datsize) == ERROR_SUCCESS) 528 { 529 sh32_policy_table[polidx].cache = retval; 530 } 531 532 RegCloseKey(xhkey); 533 } 534 535 return retval; 536 } 537 538 /************************************************************************* 539 * SHInitRestricted [SHELL32.244] 540 * 541 * Win98+ by-ordinal only routine called by Explorer and MSIE 4 and 5. 542 * Inits the policy cache used by SHRestricted to avoid excess 543 * registry access. 544 * 545 * INPUTS 546 * Two inputs: one is a string or NULL. If non-NULL the pointer 547 * should point to a string containing the following exact text: 548 * "Software\Microsoft\Windows\CurrentVersion\Policies". 549 * The other input is unused. 550 * 551 * NOTES 552 * If the input is non-NULL and does not point to a string containing 553 * that exact text the routine will do nothing. 554 * 555 * If the text does match or the pointer is NULL, then the routine 556 * will init SHRestricted()'s policy cache to all 0xffffffff and 557 * returns 0xffffffff as well. 558 * 559 * I haven't yet run into anything calling this with inputs other than 560 * (NULL, NULL), so I may have the inputs reversed. 561 */ 562 563 BOOL WINAPI SHInitRestricted(LPSTR inpRegKey, LPSTR parm2) 564 { 565 int i; 566 567 TRACE("(%p, %p)\n", inpRegKey, parm2); 568 569 /* first check - if input is non-NULL and points to the secret 570 key string, then pass. Otherwise return 0. 571 */ 572 573 if (inpRegKey != (LPSTR)NULL) 574 { 575 if (lstrcmpiA(inpRegKey, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies")) 576 { 577 /* doesn't match, fail */ 578 return 0; 579 } 580 } 581 582 /* check passed, init all policy cache entries with SHELL_NO_POLICY */ 583 for (i = 0; i < SHELL_MAX_POLICIES; i++) 584 { 585 sh32_policy_table[i].cache = SHELL_NO_POLICY; 586 } 587 588 return SHELL_NO_POLICY; 589 } -
trunk/src/shell32/shresdef.h
r3257 r4032 1 /* $Id: shresdef.h,v 1. 5 2000-03-28 15:28:54 cbratschiExp $ */1 /* $Id: shresdef.h,v 1.6 2000-08-18 02:01:27 phaller Exp $ */ 2 2 3 3 /* … … 37 37 #define IDS_VIEW_DETAILS 27 38 38 39 #define IDS_CREATEFOLDER_DENIED 30 40 #define IDS_CREATEFOLDER_CAPTION 31 41 #define IDS_DELETEFOLDER_TEXT 32 42 #define IDS_DELETEFOLDER_CAPTION 33 43 39 44 #define IDS_SHV_INVALID_FILENAME_TITLE 28 40 45 #define IDS_SHV_INVALID_FILENAME 29 -
trunk/src/shell32/shv_bg_cmenu.cpp
r3243 r4032 1 /* $Id: shv_bg_cmenu.cpp,v 1. 3 2000-03-26 16:34:56 cbratschiExp $ */1 /* $Id: shv_bg_cmenu.cpp,v 1.4 2000-08-18 02:01:27 phaller Exp $ */ 2 2 3 3 /* … … 31 31 32 32 #include "pidl.h" 33 #include "shlguid.h" 33 34 #include "wine/obj_base.h" 34 35 #include "wine/obj_contextmenu.h" 35 36 #include "wine/obj_shellbrowser.h" 36 #include "wine/obj_shellextinit.h"37 37 38 38 #include "shell32_main.h" 39 #include "shellfolder.h" 40 #include "shell.h" 41 #include "wine/undocshell.h" 39 42 40 43 #include <misc.h> … … 48 51 typedef struct 49 52 { ICOM_VTABLE(IContextMenu)* lpvtbl; 53 IShellFolder* pSFParent; 50 54 DWORD ref; 51 55 } BgCmImpl; … … 119 123 This)); 120 124 121 shell32_ObjCount--;122 123 125 if (!--(This->ref)) 124 { TRACE(" destroying IContextMenu(%p)\n",This); 125 126 { 127 TRACE(" destroying IContextMenu(%p)\n",This); 128 129 if(This->pSFParent) 130 IShellFolder_Release(This->pSFParent); 131 126 132 HeapFree(GetProcessHeap(),0,This); 127 133 return 0; 128 134 } 135 136 shell32_ObjCount--; 137 129 138 return This->ref; 130 139 } … … 165 174 166 175 /************************************************************************** 176 * DoNewFolder 177 */ 178 static void DoNewFolder( 179 IContextMenu *iface, 180 IShellView *psv) 181 { 182 ICOM_THIS(BgCmImpl, iface); 183 ISFHelper * psfhlp; 184 char szName[MAX_PATH]; 185 186 IShellFolder_QueryInterface(This->pSFParent, &IID_ISFHelper, (LPVOID*)&psfhlp); 187 if (psfhlp) 188 { 189 LPITEMIDLIST pidl; 190 ISFHelper_GetUniqueName(psfhlp, szName, MAX_PATH); 191 ISFHelper_AddFolder(psfhlp, 0, szName, &pidl); 192 193 if(psv) 194 { 195 /* if we are in a shellview do labeledit */ 196 IShellView_SelectItem(psv, 197 pidl,(SVSI_DESELECTOTHERS | SVSI_EDIT | SVSI_ENSUREVISIBLE 198 |SVSI_FOCUSED|SVSI_SELECT)); 199 } 200 SHFree(pidl); 201 202 ISFHelper_Release(psfhlp); 203 } 204 } 205 206 /************************************************************************** 207 * DoPaste 208 */ 209 static BOOL DoPaste( 210 IContextMenu *iface) 211 { 212 ICOM_THIS(BgCmImpl, iface); 213 BOOL bSuccess = FALSE; 214 IDataObject * pda; 215 216 TRACE("\n"); 217 218 if(SUCCEEDED(pOleGetClipboard(&pda))); 219 { 220 STGMEDIUM medium; 221 FORMATETC formatetc; 222 223 TRACE("pda=%p\n", pda); 224 225 /* Set the FORMATETC structure*/ 226 InitFormatEtc(formatetc, RegisterClipboardFormatA(CFSTR_SHELLIDLIST), TYMED_HGLOBAL); 227 228 /* Get the pidls from IDataObject */ 229 if(SUCCEEDED(IDataObject_GetData(pda,&formatetc,&medium))) 230 { 231 LPITEMIDLIST * apidl; 232 LPITEMIDLIST pidl; 233 IShellFolder *psfFrom = NULL, *psfDesktop; 234 235 LPCIDA lpcida = (LPCIDA)GlobalLock(medium.u.hGlobal); 236 TRACE("cida=%p\n", lpcida); 237 238 apidl = _ILCopyCidaToaPidl(&pidl, lpcida); 239 240 /* bind to the source shellfolder */ 241 SHGetDesktopFolder(&psfDesktop); 242 if(psfDesktop) 243 { 244 IShellFolder_BindToObject(psfDesktop, pidl, NULL, &IID_IShellFolder, (LPVOID*)&psfFrom); 245 IShellFolder_Release(psfDesktop); 246 } 247 248 if (psfFrom) 249 { 250 /* get source and destination shellfolder */ 251 ISFHelper *psfhlpdst, *psfhlpsrc; 252 IShellFolder_QueryInterface(This->pSFParent, &IID_ISFHelper, (LPVOID*)&psfhlpdst); 253 IShellFolder_QueryInterface(psfFrom, &IID_ISFHelper, (LPVOID*)&psfhlpsrc); 254 255 /* do the copy/move */ 256 if (psfhlpdst && psfhlpsrc) 257 { 258 ISFHelper_CopyItems(psfhlpdst, psfFrom, lpcida->cidl, apidl); 259 /* fixme handle move 260 ISFHelper_DeleteItems(psfhlpsrc, lpcida->cidl, apidl); 261 */ 262 } 263 if(psfhlpdst) ISFHelper_Release(psfhlpdst); 264 if(psfhlpsrc) ISFHelper_Release(psfhlpsrc); 265 IShellFolder_Release(psfFrom); 266 } 267 268 _ILFreeaPidl(apidl, lpcida->cidl); 269 SHFree(pidl); 270 271 /* release the medium*/ 272 pReleaseStgMedium(&medium); 273 } 274 IDataObject_Release(pda); 275 } 276 #if 0 277 HGLOBAL hMem; 278 279 OpenClipboard(NULL); 280 hMem = GetClipboardData(CF_HDROP); 281 282 if(hMem) 283 { 284 char * pDropFiles = (char *)GlobalLock(hMem); 285 if(pDropFiles) 286 { 287 int len, offset = sizeof(DROPFILESTRUCT); 288 289 while( pDropFiles[offset] != 0) 290 { 291 len = strlen(pDropFiles + offset); 292 TRACE("%s\n", pDropFiles + offset); 293 offset += len+1; 294 } 295 } 296 GlobalUnlock(hMem); 297 } 298 CloseClipboard(); 299 #endif 300 return bSuccess; 301 } 302 303 304 /************************************************************************** 167 305 * ISVBgCm_fnInvokeCommand() 168 306 */ … … 184 322 185 323 /* get the active IShellView */ 186 lpSB = (LPSHELLBROWSER)SendMessageA(lpcmi->hwnd, CWM_GETISHELLBROWSER,0,0); 187 IShellBrowser_QueryActiveShellView(lpSB, &lpSV); 188 IShellView_GetWindow(lpSV, &hWndSV); 189 190 if(HIWORD(lpcmi->lpVerb)) 191 { 192 TRACE("%s\n",lpcmi->lpVerb); 193 194 if (! strcmp(lpcmi->lpVerb,CMDSTR_NEWFOLDERA)) 195 { 196 FIXME("%s not implemented\n",lpcmi->lpVerb); 197 } 198 else if (! strcmp(lpcmi->lpVerb,CMDSTR_VIEWLISTA)) 199 { 200 SendMessageA(hWndSV, WM_COMMAND, MAKEWPARAM(FCIDM_SHVIEW_LISTVIEW,0),0 ); 201 } 202 else if (! strcmp(lpcmi->lpVerb,CMDSTR_VIEWDETAILSA)) 203 { 204 SendMessageA(hWndSV, WM_COMMAND, MAKEWPARAM(FCIDM_SHVIEW_REPORTVIEW,0),0 ); 205 } 206 else 207 { 208 FIXME("please report: unknown verb %s\n",lpcmi->lpVerb); 209 } 210 } 211 else 212 { 213 /* if it's a id just pass it to the parent shv */ 214 SendMessageA(hWndSV, WM_COMMAND, MAKEWPARAM(LOWORD(lpcmi->lpVerb), 0),0 ); 215 } 216 217 IShellView_Release(lpSV); /* QueryActiveShellView does AddRef*/ 218 return NOERROR; 324 if((lpSB = (LPSHELLBROWSER)SendMessageA(lpcmi->hwnd, CWM_GETISHELLBROWSER,0,0))) 325 { 326 if(SUCCEEDED(IShellBrowser_QueryActiveShellView(lpSB, &lpSV))) 327 { 328 IShellView_GetWindow(lpSV, &hWndSV); 329 } 330 } 331 332 if(lpSV) 333 { 334 if(HIWORD(lpcmi->lpVerb)) 335 { 336 TRACE("%s\n",lpcmi->lpVerb); 337 338 if (! strcmp(lpcmi->lpVerb,CMDSTR_NEWFOLDERA)) 339 { 340 DoNewFolder(iface, lpSV); 341 } 342 else if (! strcmp(lpcmi->lpVerb,CMDSTR_VIEWLISTA)) 343 { 344 if(hWndSV) SendMessageA(hWndSV, WM_COMMAND, MAKEWPARAM(FCIDM_SHVIEW_LISTVIEW,0),0 ); 345 } 346 else if (! strcmp(lpcmi->lpVerb,CMDSTR_VIEWDETAILSA)) 347 { 348 if(hWndSV) SendMessageA(hWndSV, WM_COMMAND, MAKEWPARAM(FCIDM_SHVIEW_REPORTVIEW,0),0 ); 349 } 350 else 351 { 352 FIXME("please report: unknown verb %s\n",lpcmi->lpVerb); 353 } 354 } 355 else 356 { 357 switch(LOWORD(lpcmi->lpVerb)) 358 { 359 case FCIDM_SHVIEW_NEWFOLDER: 360 DoNewFolder(iface, lpSV); 361 break; 362 case FCIDM_SHVIEW_INSERT: 363 DoPaste(iface); 364 break; 365 default: 366 /* if it's a id just pass it to the parent shv */ 367 SendMessageA(hWndSV, WM_COMMAND, MAKEWPARAM(LOWORD(lpcmi->lpVerb), 0),0 ); 368 break; 369 } 370 } 371 372 IShellView_Release(lpSV); /* QueryActiveShellView does AddRef*/ 373 } 374 return NOERROR; 219 375 } 220 376 … … 300 456 * ISVBgCm_Constructor() 301 457 */ 302 IContextMenu *ISvBgCm_Constructor( void)458 IContextMenu *ISvBgCm_Constructor(IShellFolder* pSFParent) 303 459 { 304 460 BgCmImpl* cm; … … 307 463 cm->lpvtbl=&cmvt; 308 464 cm->ref = 1; 465 cm->pSFParent = pSFParent; 309 466 310 467 dprintf(("SHELL32:shv_bg_cmenu: ISVBgCm_Constructor(%p)\n",
Note:
See TracChangeset
for help on using the changeset viewer.