Many bugfixes, new stubs SHGetRealIDL, SHRegQueryValue32W,
SHRegQueryValueEx32W, StrRetToStrN, StrChrW, SHAllocShared, SHLockShared, SHUnlockShared, SHFreeShared, SetAppStartingCursor32, SHLoadOLE32, Shell_MergeMenus32, PathGetDriveNumber32, DriveType32, SHAbortInvokeCommand, SHOutOfMemoryMessageBox, SHFlushClipboard.
This commit is contained in:
parent
828537111a
commit
6101324f3b
|
@ -119,6 +119,9 @@ LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl)
|
||||||
{ DWORD len;
|
{ DWORD len;
|
||||||
LPITEMIDLIST newpidl=NULL;
|
LPITEMIDLIST newpidl=NULL;
|
||||||
|
|
||||||
|
TRACE(pidl,"pidl=%p \n",pidl);
|
||||||
|
pdump(pidl);
|
||||||
|
|
||||||
if (pidl)
|
if (pidl)
|
||||||
{ len = pidl->mkid.cb;
|
{ len = pidl->mkid.cb;
|
||||||
newpidl = (LPITEMIDLIST) SHAlloc (len+2);
|
newpidl = (LPITEMIDLIST) SHAlloc (len+2);
|
||||||
|
@ -126,8 +129,8 @@ LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl)
|
||||||
{ memcpy(newpidl,pidl,len);
|
{ memcpy(newpidl,pidl,len);
|
||||||
ILGetNext(newpidl)->mkid.cb = 0x00;
|
ILGetNext(newpidl)->mkid.cb = 0x00;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
TRACE(pidl,"pidl=%p newpidl=%p\n",pidl, newpidl);
|
TRACE(pidl,"-- newpidl=%p\n",newpidl);
|
||||||
|
|
||||||
return newpidl;
|
return newpidl;
|
||||||
}
|
}
|
||||||
|
@ -195,6 +198,16 @@ LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2)
|
||||||
/* TRACE(pidl,"--new pidl=%p\n",pidlNew);*/
|
/* TRACE(pidl,"--new pidl=%p\n",pidlNew);*/
|
||||||
return pidlNew;
|
return pidlNew;
|
||||||
}
|
}
|
||||||
|
/*************************************************************************
|
||||||
|
* SHGetRealIDL [SHELL32.98]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
*/
|
||||||
|
LPITEMIDLIST WINAPI SHGetRealIDL(DWORD x, DWORD y, DWORD z)
|
||||||
|
{ FIXME(pidl,"0x%04lx 0x%04lx 0x%04lx\n",x,y,z);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* SHLogILFromFSIL [SHELL32.95]
|
* SHLogILFromFSIL [SHELL32.95]
|
||||||
*
|
*
|
||||||
|
@ -263,12 +276,24 @@ LPITEMIDLIST WINAPI ILGetNext(LPITEMIDLIST pidl)
|
||||||
* NOTES
|
* NOTES
|
||||||
* Adds the single item to the idlist indicated by pidl.
|
* Adds the single item to the idlist indicated by pidl.
|
||||||
* if bEnd is 0, adds the item to the front of the list,
|
* if bEnd is 0, adds the item to the front of the list,
|
||||||
* otherwise adds the item to the end.
|
* otherwise adds the item to the end. (???)
|
||||||
* Destroys the passed in idlist!
|
* Destroys the passed in idlist! (???)
|
||||||
*/
|
*/
|
||||||
LPITEMIDLIST WINAPI ILAppend(LPITEMIDLIST pidl,LPCITEMIDLIST item,BOOL32 bEnd)
|
LPITEMIDLIST WINAPI ILAppend(LPITEMIDLIST pidl,LPCITEMIDLIST item,BOOL32 bEnd)
|
||||||
{ FIXME(pidl,"(pidl=%p,pidl=%p,%08u)stub\n",pidl,item,bEnd);
|
{ LPITEMIDLIST idlRet;
|
||||||
return NULL;
|
WARN(pidl,"(pidl=%p,pidl=%p,%08u)semi-stub\n",pidl,item,bEnd);
|
||||||
|
pdump (pidl);
|
||||||
|
pdump (item);
|
||||||
|
|
||||||
|
if (_ILIsDesktop(pidl))
|
||||||
|
{ idlRet = ILClone(item);
|
||||||
|
if (pidl)
|
||||||
|
SHFree (pidl);
|
||||||
|
return idlRet;
|
||||||
|
}
|
||||||
|
idlRet=ILCombine(pidl,item);
|
||||||
|
SHFree(pidl);
|
||||||
|
return idlRet;
|
||||||
}
|
}
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* ILFree [SHELL32.155]
|
* ILFree [SHELL32.155]
|
||||||
|
|
|
@ -451,10 +451,11 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITE
|
||||||
enum
|
enum
|
||||||
{ FT_UNKNOWN= 0x00000000,
|
{ FT_UNKNOWN= 0x00000000,
|
||||||
FT_DIR= 0x00000001,
|
FT_DIR= 0x00000001,
|
||||||
FT_DESKTOP= 0x00000002
|
FT_DESKTOP= 0x00000002,
|
||||||
|
FT_SPECIAL= 0x00000003
|
||||||
} tFolder;
|
} tFolder;
|
||||||
|
|
||||||
TRACE(shell,"(%04x,%d,%p)\n", hwndOwner,nFolder,ppidl);
|
TRACE(shell,"(%04x,0x%x,%p)\n", hwndOwner,nFolder,ppidl);
|
||||||
|
|
||||||
strcpy(buffer,"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\");
|
strcpy(buffer,"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\");
|
||||||
|
|
||||||
|
@ -467,15 +468,15 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITE
|
||||||
tFolder=FT_DIR;
|
tFolder=FT_DIR;
|
||||||
switch (nFolder)
|
switch (nFolder)
|
||||||
{ case CSIDL_BITBUCKET:
|
{ case CSIDL_BITBUCKET:
|
||||||
strcpy (buffer,"xxx"); /*not in the registry*/
|
strcpy (buffer,"xxx"); /*not in the registry*/
|
||||||
TRACE (shell,"looking for Recycler\n");
|
TRACE (shell,"looking for Recycler\n");
|
||||||
tFolder=FT_UNKNOWN;
|
|
||||||
break;
|
|
||||||
case CSIDL_CONTROLS:
|
|
||||||
strcpy (buffer,"xxx"); /*virtual folder*/
|
|
||||||
TRACE (shell,"looking for Control\n");
|
|
||||||
tFolder=FT_UNKNOWN;
|
tFolder=FT_UNKNOWN;
|
||||||
break;
|
break;
|
||||||
|
case CSIDL_CONTROLS:
|
||||||
|
strcpy (buffer,"xxx"); /*virtual folder*/
|
||||||
|
TRACE (shell,"looking for Control\n");
|
||||||
|
tFolder=FT_UNKNOWN;
|
||||||
|
break;
|
||||||
case CSIDL_DESKTOP:
|
case CSIDL_DESKTOP:
|
||||||
strcpy (buffer,"xxx"); /*virtual folder*/
|
strcpy (buffer,"xxx"); /*virtual folder*/
|
||||||
TRACE (shell,"looking for Desktop\n");
|
TRACE (shell,"looking for Desktop\n");
|
||||||
|
@ -487,7 +488,7 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITE
|
||||||
case CSIDL_DRIVES:
|
case CSIDL_DRIVES:
|
||||||
strcpy (buffer,"xxx"); /*virtual folder*/
|
strcpy (buffer,"xxx"); /*virtual folder*/
|
||||||
TRACE (shell,"looking for Drives\n");
|
TRACE (shell,"looking for Drives\n");
|
||||||
tFolder=FT_UNKNOWN;
|
tFolder=FT_SPECIAL;
|
||||||
break;
|
break;
|
||||||
case CSIDL_FONTS:
|
case CSIDL_FONTS:
|
||||||
strcpy (buffer,"Fonts");
|
strcpy (buffer,"Fonts");
|
||||||
|
@ -545,7 +546,7 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITE
|
||||||
{ GetWindowsDirectory32A(npath,MAX_PATH);
|
{ GetWindowsDirectory32A(npath,MAX_PATH);
|
||||||
PathAddBackslash(npath);
|
PathAddBackslash(npath);
|
||||||
switch (nFolder)
|
switch (nFolder)
|
||||||
{ case CSIDL_DESKTOPDIRECTORY:
|
{ case CSIDL_DESKTOPDIRECTORY:
|
||||||
strcat (npath,"Desktop");
|
strcat (npath,"Desktop");
|
||||||
break;
|
break;
|
||||||
case CSIDL_FONTS:
|
case CSIDL_FONTS:
|
||||||
|
@ -554,13 +555,13 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITE
|
||||||
case CSIDL_NETHOOD:
|
case CSIDL_NETHOOD:
|
||||||
strcat (npath,"NetHood");
|
strcat (npath,"NetHood");
|
||||||
break;
|
break;
|
||||||
case CSIDL_PERSONAL:
|
case CSIDL_PERSONAL:
|
||||||
strcpy (npath,"C:\\Personal");
|
strcpy (npath,"C:\\Personal");
|
||||||
break;
|
break;
|
||||||
case CSIDL_FAVORITES:
|
case CSIDL_FAVORITES:
|
||||||
strcat (npath,"Favorites");
|
strcat (npath,"Favorites");
|
||||||
break;
|
break;
|
||||||
case CSIDL_PRINTERS:
|
case CSIDL_PRINTERS:
|
||||||
strcat (npath,"PrintHood");
|
strcat (npath,"PrintHood");
|
||||||
break;
|
break;
|
||||||
case CSIDL_PROGRAMS:
|
case CSIDL_PROGRAMS:
|
||||||
|
@ -596,16 +597,19 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITE
|
||||||
}
|
}
|
||||||
TRACE(shell,"value %s=%s created\n",buffer,npath);
|
TRACE(shell,"value %s=%s created\n",buffer,npath);
|
||||||
CreateDirectory32A(npath,NULL);
|
CreateDirectory32A(npath,NULL);
|
||||||
strcpy(tpath,npath);
|
strcpy(tpath,npath);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case FT_DESKTOP:
|
case FT_DESKTOP:
|
||||||
strcpy (tpath,"Desktop");
|
strcpy (tpath,"Desktop");
|
||||||
break;
|
|
||||||
default:
|
|
||||||
RegCloseKey(key);
|
|
||||||
return E_OUTOFMEMORY;
|
|
||||||
break;
|
break;
|
||||||
|
case FT_SPECIAL:
|
||||||
|
if (nFolder==CSIDL_DRIVES)
|
||||||
|
strcpy (tpath,"My Computer");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
RegCloseKey(key);
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
RegCloseKey(key);
|
RegCloseKey(key);
|
||||||
|
|
|
@ -990,54 +990,66 @@ HRESULT WINAPI SHGetDataFromIDListA(DWORD u, DWORD v, DWORD w, DWORD x, DWORD y)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* SHRegCloseKey [SHELL32.505]
|
* SHRegCloseKey32 [NT4.0:SHELL32.505]
|
||||||
*
|
*
|
||||||
* XXX I am not sure if the given param is correct. :-)
|
|
||||||
*/
|
*/
|
||||||
HRESULT WINAPI SHRegCloseKey(HKEY key)
|
HRESULT WINAPI SHRegCloseKey32 (HKEY hkey)
|
||||||
{ FIXME(shell,"(0x%08lx)\n", key);
|
{ TRACE(shell,"0x%04x\n",hkey);
|
||||||
/* XXX Is this correct? */
|
return RegCloseKey( hkey );
|
||||||
return RegCloseKey(key);
|
|
||||||
}
|
}
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* SHRegOpenKey32A [SHELL32.506]
|
* SHRegOpenKey32A [SHELL32.506]
|
||||||
*
|
*
|
||||||
* XXX I am not sure if the given param is correct. :-)
|
|
||||||
*/
|
*/
|
||||||
HRESULT WINAPI SHRegOpenKey32A(HKEY hKey, LPSTR lpSubKey, LPHKEY phkResult)
|
HRESULT WINAPI SHRegOpenKey32A(HKEY hKey, LPSTR lpSubKey, LPHKEY phkResult)
|
||||||
{ FIXME(shell,"(0x%08lx, %s, 0x%08lx)\n", hKey, debugstr_a(lpSubKey),
|
{ FIXME(shell,"(0x%08x, %s, %p)\n", hKey, debugstr_a(lpSubKey),
|
||||||
phkResult);
|
phkResult);
|
||||||
/* XXX Is this correct? */
|
|
||||||
return RegOpenKey32A(hKey, lpSubKey, phkResult);
|
return RegOpenKey32A(hKey, lpSubKey, phkResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* SHRegOpenKey32W [SHELL32.507]
|
* SHRegOpenKey32W [NT4.0:SHELL32.507]
|
||||||
*
|
*
|
||||||
* XXX I am not sure if the given param is correct. :-)
|
|
||||||
*/
|
*/
|
||||||
HRESULT WINAPI SHRegOpenKey32W(HKEY hKey, LPWSTR lpSubKey, LPHKEY phkResult)
|
HRESULT WINAPI SHRegOpenKey32W (HKEY hkey, LPCWSTR lpszSubKey, LPHKEY retkey)
|
||||||
{ FIXME(shell,"(0x%08lx, %s, 0x%08lx)\n", hKey, debugstr_w(lpSubKey),
|
{ WARN(shell,"0x%04x %s %p\n",hkey,debugstr_w(lpszSubKey),retkey);
|
||||||
phkResult);
|
return RegOpenKey32W( hkey, lpszSubKey, retkey );
|
||||||
/* XXX Is this correct? */
|
|
||||||
return RegOpenKey32W(hKey, lpSubKey, phkResult);
|
|
||||||
}
|
}
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* SHRegQueryValueExA [SHELL32.509]
|
* SHRegQueryValueExA [SHELL32.509]
|
||||||
*
|
*
|
||||||
* XXX I know this is not the correct parameter. Check with documentation.
|
|
||||||
*/
|
*/
|
||||||
HRESULT WINAPI SHRegQueryValueEx32A(DWORD u, LPSTR v, DWORD w, DWORD x,
|
HRESULT WINAPI SHRegQueryValueEx32A(DWORD u, LPSTR v, DWORD w, DWORD x,
|
||||||
DWORD y, DWORD z)
|
DWORD y, DWORD z)
|
||||||
{ FIXME(shell,"0x%04lx %s 0x%04lx 0x%04lx 0x%04lx 0x%04lx stub\n",u,debugstr_a(v),w,x,y,z);
|
{ FIXME(shell,"0x%04lx %s 0x%04lx 0x%04lx 0x%04lx 0x%04lx stub\n",
|
||||||
|
u,debugstr_a(v),w,x,y,z);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* SHRegQueryValueEx32W [NT4.0:SHELL32.511]
|
* SHRegQueryValue32W [NT4.0:SHELL32.510]
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
HRESULT WINAPI SHRegQueryValueEx32W (DWORD u, LPWSTR v, DWORD w, DWORD x, DWORD y, DWORD z)
|
HRESULT WINAPI SHRegQueryValue32W (HKEY hkey, LPWSTR lpszSubKey,
|
||||||
{ FIXME(shell,"0x%04lx %s 0x%04lx 0x%04lx 0x%04lx 0x%04lx stub\n",u,debugstr_w(v),w,x,y,z);
|
LPWSTR lpszData, LPDWORD lpcbData )
|
||||||
return 0;
|
{ WARN(shell,"0x%04x %s %p %p semi-stub\n",
|
||||||
|
hkey, debugstr_w(lpszSubKey), lpszData, lpcbData);
|
||||||
|
return RegQueryValue32W( hkey, lpszSubKey, lpszData, lpcbData );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* SHRegQueryValueEx32W [NT4.0:SHELL32.511]
|
||||||
|
*
|
||||||
|
* FIXME
|
||||||
|
* if the datatype REG_EXPAND_SZ then expand the string and change
|
||||||
|
* *pdwType to REG_SZ.
|
||||||
|
*/
|
||||||
|
HRESULT WINAPI SHRegQueryValueEx32W (HKEY hkey, LPWSTR pszValue, LPDWORD pdwReserved,
|
||||||
|
LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData)
|
||||||
|
{ DWORD ret;
|
||||||
|
WARN(shell,"0x%04x %s %p %p %p %p semi-stub\n",
|
||||||
|
hkey, debugstr_w(pszValue), pdwReserved, pdwType, pvData, pcbData);
|
||||||
|
ret = RegQueryValueEx32W ( hkey, pszValue, pdwReserved, pdwType, pvData, pcbData);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
|
@ -1072,11 +1084,287 @@ HRESULT WINAPI IsUserAdmin()
|
||||||
{ FIXME(shell,"stub\n");
|
{ FIXME(shell,"stub\n");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
/*************************************************************************
|
||||||
|
* StrRetToStrN [SHELL32.96]
|
||||||
|
*
|
||||||
|
* converts a STRRET to a normal string
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* FIXME the string handling is to simple (different STRRET choices)
|
||||||
|
* at the moment only CSTR
|
||||||
|
* the pidl is for STRRET OFFSET
|
||||||
|
*/
|
||||||
|
HRESULT WINAPI StrRetToStrN (LPSTR dest, DWORD len, LPSTRRET src, LPITEMIDLIST x)
|
||||||
|
{ FIXME(shell,"dest=0x%p len=0x%lx strret=0x%p pidl=%p stub\n",dest,len,src,x);
|
||||||
|
strncpy(dest,src->u.cStr,len);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* StrChrW [NT 4.0:SHELL32.651]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
HRESULT WINAPI StrChrW (LPWSTR u, DWORD v)
|
||||||
|
{ FIXME(shell,"%s 0x%lx stub\n",debugstr_w(u),v);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/*************************************************************************
|
||||||
|
* SHAllocShared [SHELL32.520]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* parameter1 is return value from HeapAlloc
|
||||||
|
* parameter2 is equal to the size allocated with HeapAlloc
|
||||||
|
* parameter3 is return value from GetCurrentProcessId
|
||||||
|
*
|
||||||
|
* the return value is posted as lParam with 0x402 (WM_USER+2) to somewhere
|
||||||
|
* WM_USER+2 could be the undocumented CWM_SETPATH
|
||||||
|
* the allocated memory contains a pidl
|
||||||
|
*/
|
||||||
|
HGLOBAL32 WINAPI SHAllocShared(LPVOID psrc, DWORD size, DWORD procID)
|
||||||
|
{ HGLOBAL32 hmem;
|
||||||
|
LPVOID pmem;
|
||||||
|
|
||||||
|
TRACE(shell,"ptr=%p size=0x%04lx procID=0x%04lx\n",psrc,size,procID);
|
||||||
|
hmem = GlobalAlloc32(GMEM_FIXED, size);
|
||||||
|
if (!hmem)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
pmem = GlobalLock32 (hmem);
|
||||||
|
|
||||||
|
if (! pmem)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
memcpy (pmem, psrc, size);
|
||||||
|
GlobalUnlock32(hmem);
|
||||||
|
return hmem;
|
||||||
|
}
|
||||||
|
/*************************************************************************
|
||||||
|
* SHLockShared [SHELL32.521]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* parameter1 is return value from SHAllocShared
|
||||||
|
* parameter2 is return value from GetCurrentProcessId
|
||||||
|
* the receiver of (WM_USER+2) trys to lock the HANDLE (?)
|
||||||
|
* the returnvalue seems to be a memoryadress
|
||||||
|
*/
|
||||||
|
void * WINAPI SHLockShared(HANDLE32 hmem, DWORD procID)
|
||||||
|
{ TRACE(shell,"handle=0x%04x procID=0x%04lx\n",hmem,procID);
|
||||||
|
return GlobalLock32(hmem);
|
||||||
|
}
|
||||||
|
/*************************************************************************
|
||||||
|
* SHUnlockShared [SHELL32.522]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* parameter1 is return value from SHLockShared
|
||||||
|
*/
|
||||||
|
BOOL32 WINAPI SHUnlockShared(HANDLE32 pmem)
|
||||||
|
{ TRACE(shell,"handle=0x%04x\n",pmem);
|
||||||
|
return GlobalUnlock32(pmem);
|
||||||
|
}
|
||||||
|
/*************************************************************************
|
||||||
|
* SHFreeShared [SHELL32.523]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* parameter1 is return value from SHAllocShared
|
||||||
|
* parameter2 is return value from GetCurrentProcessId
|
||||||
|
*/
|
||||||
|
HANDLE32 WINAPI SHFreeShared(HANDLE32 hmem, DWORD procID)
|
||||||
|
{ TRACE(shell,"handle=0x%04x 0x%04lx\n",hmem,procID);
|
||||||
|
return GlobalFree32(hmem);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* SetAppStartingCursor32 [SHELL32.99]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
HRESULT WINAPI SetAppStartingCursor32(DWORD u, DWORD v)
|
||||||
|
{ FIXME(shell,"0x%04lx 0x%04lx stub\n",u,v );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/*************************************************************************
|
||||||
|
* SHLoadOLE32 [SHELL32.151]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
HRESULT WINAPI SHLoadOLE32(DWORD u)
|
||||||
|
{ FIXME(shell,"0x%04lx stub\n",u);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
/*************************************************************************
|
||||||
|
* Shell_MergeMenus32 [SHELL32.67]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
BOOL32 _SHIsMenuSeparator(HMENU32 hm, int i)
|
||||||
|
{
|
||||||
|
MENUITEMINFO32A mii;
|
||||||
|
|
||||||
|
mii.cbSize = sizeof(MENUITEMINFO32A);
|
||||||
|
mii.fMask = MIIM_TYPE;
|
||||||
|
mii.cch = 0; /* WARNING: We MUST initialize it to 0*/
|
||||||
|
if (!GetMenuItemInfo32A(hm, i, TRUE, &mii))
|
||||||
|
{ return(FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mii.fType & MFT_SEPARATOR)
|
||||||
|
{ return(TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
return(FALSE);
|
||||||
|
}
|
||||||
|
#define MM_ADDSEPARATOR 0x00000001L
|
||||||
|
#define MM_SUBMENUSHAVEIDS 0x00000002L
|
||||||
|
HRESULT WINAPI Shell_MergeMenus32 (HMENU32 hmDst, HMENU32 hmSrc, UINT32 uInsert, UINT32 uIDAdjust, UINT32 uIDAdjustMax, ULONG uFlags)
|
||||||
|
{ int nItem;
|
||||||
|
HMENU32 hmSubMenu;
|
||||||
|
BOOL32 bAlreadySeparated;
|
||||||
|
MENUITEMINFO32A miiSrc;
|
||||||
|
char szName[256];
|
||||||
|
UINT32 uTemp, uIDMax = uIDAdjust;
|
||||||
|
|
||||||
|
FIXME(shell,"hmenu1=0x%04x hmenu2=0x%04x 0x%04x 0x%04x 0x%04x 0x%04lx stub\n",
|
||||||
|
hmDst, hmSrc, uInsert, uIDAdjust, uIDAdjustMax, uFlags);
|
||||||
|
|
||||||
|
if (!hmDst || !hmSrc)
|
||||||
|
{ return uIDMax;
|
||||||
|
}
|
||||||
|
|
||||||
|
nItem = GetMenuItemCount32(hmDst);
|
||||||
|
if (uInsert >= (UINT32)nItem)
|
||||||
|
{ uInsert = (UINT32)nItem;
|
||||||
|
bAlreadySeparated = TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ bAlreadySeparated = _SHIsMenuSeparator(hmDst, uInsert);;
|
||||||
|
}
|
||||||
|
if ((uFlags & MM_ADDSEPARATOR) && !bAlreadySeparated)
|
||||||
|
{ /* Add a separator between the menus */
|
||||||
|
InsertMenu32A(hmDst, uInsert, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);
|
||||||
|
bAlreadySeparated = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Go through the menu items and clone them*/
|
||||||
|
for (nItem = GetMenuItemCount32(hmSrc) - 1; nItem >= 0; nItem--)
|
||||||
|
{ miiSrc.cbSize = sizeof(MENUITEMINFO32A);
|
||||||
|
miiSrc.fMask = MIIM_STATE | MIIM_ID | MIIM_SUBMENU | MIIM_CHECKMARKS | MIIM_TYPE | MIIM_DATA;
|
||||||
|
/* We need to reset this every time through the loop in case
|
||||||
|
menus DON'T have IDs*/
|
||||||
|
miiSrc.fType = MFT_STRING;
|
||||||
|
miiSrc.dwTypeData = szName;
|
||||||
|
miiSrc.dwItemData = 0;
|
||||||
|
miiSrc.cch = sizeof(szName);
|
||||||
|
|
||||||
|
if (!GetMenuItemInfo32A(hmSrc, nItem, TRUE, &miiSrc))
|
||||||
|
{ continue;
|
||||||
|
}
|
||||||
|
if (miiSrc.fType & MFT_SEPARATOR)
|
||||||
|
{ /* This is a separator; don't put two of them in a row*/
|
||||||
|
if (bAlreadySeparated)
|
||||||
|
{ continue;
|
||||||
|
}
|
||||||
|
bAlreadySeparated = TRUE;
|
||||||
|
}
|
||||||
|
else if (miiSrc.hSubMenu)
|
||||||
|
{ if (uFlags & MM_SUBMENUSHAVEIDS)
|
||||||
|
{ /* Adjust the ID and check it*/
|
||||||
|
miiSrc.wID += uIDAdjust;
|
||||||
|
if (miiSrc.wID > uIDAdjustMax)
|
||||||
|
{ continue;
|
||||||
|
}
|
||||||
|
if (uIDMax <= miiSrc.wID)
|
||||||
|
{ uIDMax = miiSrc.wID + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ /* Don't set IDs for submenus that didn't have them already */
|
||||||
|
miiSrc.fMask &= ~MIIM_ID;
|
||||||
|
}
|
||||||
|
hmSubMenu = miiSrc.hSubMenu;
|
||||||
|
miiSrc.hSubMenu = CreatePopupMenu32();
|
||||||
|
if (!miiSrc.hSubMenu)
|
||||||
|
{ return(uIDMax);
|
||||||
|
}
|
||||||
|
uTemp = Shell_MergeMenus32(miiSrc.hSubMenu, hmSubMenu, 0, uIDAdjust, uIDAdjustMax, uFlags&MM_SUBMENUSHAVEIDS);
|
||||||
|
if (uIDMax <= uTemp)
|
||||||
|
{ uIDMax = uTemp;
|
||||||
|
}
|
||||||
|
bAlreadySeparated = FALSE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ /* Adjust the ID and check it*/
|
||||||
|
miiSrc.wID += uIDAdjust;
|
||||||
|
if (miiSrc.wID > uIDAdjustMax)
|
||||||
|
{ continue;
|
||||||
|
}
|
||||||
|
if (uIDMax <= miiSrc.wID)
|
||||||
|
{ uIDMax = miiSrc.wID + 1;
|
||||||
|
}
|
||||||
|
bAlreadySeparated = FALSE;
|
||||||
|
}
|
||||||
|
if (!InsertMenuItem32A(hmDst, uInsert, TRUE, &miiSrc))
|
||||||
|
{ return(uIDMax);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ensure the correct number of separators at the beginning of the
|
||||||
|
inserted menu items*/
|
||||||
|
if (uInsert == 0)
|
||||||
|
{ if (bAlreadySeparated)
|
||||||
|
{ DeleteMenu32(hmDst, uInsert, MF_BYPOSITION);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ if (_SHIsMenuSeparator(hmDst, uInsert-1))
|
||||||
|
{ if (bAlreadySeparated)
|
||||||
|
{ DeleteMenu32(hmDst, uInsert, MF_BYPOSITION);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ if ((uFlags & MM_ADDSEPARATOR) && !bAlreadySeparated)
|
||||||
|
{ /* Add a separator between the menus*/
|
||||||
|
InsertMenu32A(hmDst, uInsert, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return(uIDMax);
|
||||||
|
|
||||||
|
}
|
||||||
|
/*************************************************************************
|
||||||
|
* PathGetDriveNumber32 [SHELL32.57]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
HRESULT WINAPI PathGetDriveNumber32(LPSTR u)
|
||||||
|
{ FIXME(shell,"%s stub\n",debugstr_a(u));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/*************************************************************************
|
||||||
|
* DriveType32 [SHELL32.64]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
HRESULT WINAPI DriveType32(DWORD u)
|
||||||
|
{ FIXME(shell,"0x%04lx stub\n",u);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/*************************************************************************
|
||||||
|
* SHAbortInvokeCommand [SHELL32.198]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
HRESULT WINAPI SHAbortInvokeCommand()
|
||||||
|
{ FIXME(shell,"stub\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
/*************************************************************************
|
||||||
|
* SHOutOfMemoryMessageBox [SHELL32.126]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
HRESULT WINAPI SHOutOfMemoryMessageBox(DWORD u, DWORD v, DWORD w)
|
||||||
|
{ FIXME(shell,"0x%04lx 0x%04lx 0x%04lx stub\n",u,v,w);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* SHFlushClipboard [SHELL32.121]
|
* SHFlushClipboard [SHELL32.121]
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
HRESULT WINAPI SHFlushClipboard(VOID)
|
HRESULT WINAPI SHFlushClipboard()
|
||||||
{ FIXME(shell,"stub\n");
|
{ FIXME(shell,"stub\n");
|
||||||
return 0;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -242,6 +242,9 @@ static HRESULT WINAPI IShellFolder_ParseDisplayName(
|
||||||
{ pidlFull = (LPITEMIDLIST)HeapAlloc(GetProcessHeap(),0,2);
|
{ pidlFull = (LPITEMIDLIST)HeapAlloc(GetProcessHeap(),0,2);
|
||||||
pidlFull->mkid.cb = 0;
|
pidlFull->mkid.cb = 0;
|
||||||
}
|
}
|
||||||
|
else if (strcmp(pszTemp,"My Computer")==0)
|
||||||
|
{ pidlFull = _ILCreateMyComputer();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{ pidlFull = _ILCreateMyComputer();
|
{ pidlFull = _ILCreateMyComputer();
|
||||||
|
|
||||||
|
@ -394,6 +397,8 @@ static HRESULT WINAPI IShellFolder_CompareIDs(LPSHELLFOLDER this,
|
||||||
LPCITEMIDLIST pidlTemp1 = pidl1, pidlTemp2 = pidl2;
|
LPCITEMIDLIST pidlTemp1 = pidl1, pidlTemp2 = pidl2;
|
||||||
|
|
||||||
TRACE(shell,"(%p)->(0x%08lx,pidl1=%p,pidl2=%p)\n",this,lParam,pidl1,pidl2);
|
TRACE(shell,"(%p)->(0x%08lx,pidl1=%p,pidl2=%p)\n",this,lParam,pidl1,pidl2);
|
||||||
|
pdump (pidl1);
|
||||||
|
pdump (pidl2);
|
||||||
|
|
||||||
if (!pidl1 && !pidl2)
|
if (!pidl1 && !pidl2)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -601,13 +606,13 @@ static HRESULT WINAPI IShellFolder_GetUIObjectOf( LPSHELLFOLDER this,HWND32 hwnd
|
||||||
#define GET_SHGDN_RELATION(dwFlags) ((DWORD)dwFlags & (DWORD)0x000000FF)
|
#define GET_SHGDN_RELATION(dwFlags) ((DWORD)dwFlags & (DWORD)0x000000FF)
|
||||||
|
|
||||||
static HRESULT WINAPI IShellFolder_GetDisplayNameOf( LPSHELLFOLDER this, LPCITEMIDLIST pidl, DWORD dwFlags, LPSTRRET lpName)
|
static HRESULT WINAPI IShellFolder_GetDisplayNameOf( LPSHELLFOLDER this, LPCITEMIDLIST pidl, DWORD dwFlags, LPSTRRET lpName)
|
||||||
{ CHAR szText[MAX_PATH];
|
{ CHAR szText[MAX_PATH];
|
||||||
CHAR szTemp[MAX_PATH];
|
CHAR szTemp[MAX_PATH];
|
||||||
CHAR szSpecial[MAX_PATH];
|
CHAR szSpecial[MAX_PATH];
|
||||||
CHAR szDrive[MAX_PATH];
|
CHAR szDrive[MAX_PATH];
|
||||||
DWORD dwVolumeSerialNumber,dwMaximumComponetLength,dwFileSystemFlags;
|
DWORD dwVolumeSerialNumber,dwMaximumComponetLength,dwFileSystemFlags;
|
||||||
LPITEMIDLIST pidlTemp=NULL;
|
LPITEMIDLIST pidlTemp=NULL;
|
||||||
BOOL32 bSimplePidl=FALSE;
|
BOOL32 bSimplePidl=FALSE;
|
||||||
|
|
||||||
TRACE(shell,"(%p)->(pidl=%p,0x%08lx,%p)\n",this,pidl,dwFlags,lpName);
|
TRACE(shell,"(%p)->(pidl=%p,0x%08lx,%p)\n",this,pidl,dwFlags,lpName);
|
||||||
|
|
||||||
|
@ -740,7 +745,10 @@ static BOOL32 WINAPI IShellFolder_GetFolderPath(LPSHELLFOLDER this, LPSTR lpszOu
|
||||||
}
|
}
|
||||||
|
|
||||||
*lpszOut=0;
|
*lpszOut=0;
|
||||||
|
|
||||||
|
if (! this->mlpszFolder)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
dwSize = strlen (this->mlpszFolder) +1;
|
dwSize = strlen (this->mlpszFolder) +1;
|
||||||
if ( dwSize > dwOutSize)
|
if ( dwSize > dwOutSize)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
|
@ -361,10 +361,10 @@ LRESULT ShellView_OnSize(LPSHELLVIEW this, WORD wWidth, WORD wHeight)
|
||||||
* ShellView_BuildFileMenu()
|
* ShellView_BuildFileMenu()
|
||||||
*/
|
*/
|
||||||
HMENU32 ShellView_BuildFileMenu(LPSHELLVIEW this)
|
HMENU32 ShellView_BuildFileMenu(LPSHELLVIEW this)
|
||||||
{ CHAR szText[MAX_PATH];
|
{ CHAR szText[MAX_PATH];
|
||||||
MENUITEMINFO32A mii;
|
MENUITEMINFO32A mii;
|
||||||
int nTools,i;
|
int nTools,i;
|
||||||
HMENU32 hSubMenu;
|
HMENU32 hSubMenu;
|
||||||
|
|
||||||
TRACE(shell,"(%p) semi-stub\n",this);
|
TRACE(shell,"(%p) semi-stub\n",this);
|
||||||
|
|
||||||
|
@ -381,7 +381,7 @@ HMENU32 ShellView_BuildFileMenu(LPSHELLVIEW this)
|
||||||
mii.cbSize = sizeof(mii);
|
mii.cbSize = sizeof(mii);
|
||||||
mii.fMask = MIIM_TYPE | MIIM_ID | MIIM_STATE;
|
mii.fMask = MIIM_TYPE | MIIM_ID | MIIM_STATE;
|
||||||
|
|
||||||
if(TBSTYLE_SEP != g_Tools[i].bStyle)
|
if(TBSTYLE_SEP != g_Tools[i].bStyle) /* no seperator*/
|
||||||
{ mii.fType = MFT_STRING;
|
{ mii.fType = MFT_STRING;
|
||||||
mii.fState = MFS_ENABLED;
|
mii.fState = MFS_ENABLED;
|
||||||
mii.dwTypeData = szText;
|
mii.dwTypeData = szText;
|
||||||
|
@ -394,13 +394,14 @@ HMENU32 ShellView_BuildFileMenu(LPSHELLVIEW this)
|
||||||
InsertMenuItem32A(hSubMenu, (UINT32)-1, TRUE, &mii);
|
InsertMenuItem32A(hSubMenu, (UINT32)-1, TRUE, &mii);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
TRACE(shell,"-- return (menu=0x%x)\n",hSubMenu);
|
||||||
return hSubMenu;
|
return hSubMenu;
|
||||||
}
|
}
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* ShellView_MergeFileMenu()
|
* ShellView_MergeFileMenu()
|
||||||
*/
|
*/
|
||||||
void ShellView_MergeFileMenu(LPSHELLVIEW this, HMENU32 hSubMenu)
|
void ShellView_MergeFileMenu(LPSHELLVIEW this, HMENU32 hSubMenu)
|
||||||
{ MENUITEMINFO32A mii;
|
{ MENUITEMINFO32A mii;
|
||||||
CHAR szText[MAX_PATH];
|
CHAR szText[MAX_PATH];
|
||||||
|
|
||||||
TRACE(shell,"(%p)->(submenu=0x%08x) stub\n",this,hSubMenu);
|
TRACE(shell,"(%p)->(submenu=0x%08x) stub\n",this,hSubMenu);
|
||||||
|
@ -416,7 +417,7 @@ void ShellView_MergeFileMenu(LPSHELLVIEW this, HMENU32 hSubMenu)
|
||||||
InsertMenuItem32A(hSubMenu, 0, TRUE, &mii);
|
InsertMenuItem32A(hSubMenu, 0, TRUE, &mii);
|
||||||
|
|
||||||
/*add the file menu items */
|
/*add the file menu items */
|
||||||
strcpy(szText,"dummy 45");
|
strcpy(szText,"dummy 45");
|
||||||
|
|
||||||
mii.cbSize = sizeof(mii);
|
mii.cbSize = sizeof(mii);
|
||||||
mii.fMask = MIIM_TYPE | MIIM_ID | MIIM_STATE;
|
mii.fMask = MIIM_TYPE | MIIM_ID | MIIM_STATE;
|
||||||
|
@ -428,14 +429,15 @@ void ShellView_MergeFileMenu(LPSHELLVIEW this, HMENU32 hSubMenu)
|
||||||
/*insert this item at the beginning of the menu */
|
/*insert this item at the beginning of the menu */
|
||||||
InsertMenuItem32A(hSubMenu, 0, TRUE, &mii);
|
InsertMenuItem32A(hSubMenu, 0, TRUE, &mii);
|
||||||
}
|
}
|
||||||
|
TRACE(shell,"--\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* ShellView_MergeViewMenu()
|
* ShellView_MergeViewMenu()
|
||||||
*/
|
*/
|
||||||
void ShellView_MergeViewMenu(LPSHELLVIEW this, HMENU32 hSubMenu)
|
void ShellView_MergeViewMenu(LPSHELLVIEW this, HMENU32 hSubMenu)
|
||||||
{ MENUITEMINFO32A mii;
|
{ MENUITEMINFO32A mii;
|
||||||
CHAR szText[MAX_PATH];
|
CHAR szText[MAX_PATH];
|
||||||
|
|
||||||
TRACE(shell,"(%p)->(submenu=0x%08x) stub\n",this,hSubMenu);
|
TRACE(shell,"(%p)->(submenu=0x%08x) stub\n",this,hSubMenu);
|
||||||
if(hSubMenu)
|
if(hSubMenu)
|
||||||
|
@ -448,7 +450,7 @@ void ShellView_MergeViewMenu(LPSHELLVIEW this, HMENU32 hSubMenu)
|
||||||
InsertMenuItem32A(hSubMenu, FCIDM_MENU_VIEW_SEP_OPTIONS, FALSE, &mii);
|
InsertMenuItem32A(hSubMenu, FCIDM_MENU_VIEW_SEP_OPTIONS, FALSE, &mii);
|
||||||
|
|
||||||
/*add the view menu items at the correct position in the menu*/
|
/*add the view menu items at the correct position in the menu*/
|
||||||
strcpy(szText,"Dummy 46");
|
strcpy(szText,"Dummy 46");
|
||||||
|
|
||||||
mii.cbSize = sizeof(mii);
|
mii.cbSize = sizeof(mii);
|
||||||
mii.fMask = MIIM_TYPE | MIIM_ID | MIIM_STATE;
|
mii.fMask = MIIM_TYPE | MIIM_ID | MIIM_STATE;
|
||||||
|
@ -463,7 +465,7 @@ void ShellView_MergeViewMenu(LPSHELLVIEW this, HMENU32 hSubMenu)
|
||||||
* ShellView_UpdateMenu()
|
* ShellView_UpdateMenu()
|
||||||
*/
|
*/
|
||||||
LRESULT ShellView_UpdateMenu(LPSHELLVIEW this, HMENU32 hMenu)
|
LRESULT ShellView_UpdateMenu(LPSHELLVIEW this, HMENU32 hMenu)
|
||||||
{ TRACE(shell,"(%p)->(menu=0x%08x\n",this,hMenu);
|
{ TRACE(shell,"(%p)->(menu=0x%08x)\n",this,hMenu);
|
||||||
CheckMenuItem32(hMenu, IDM_VIEW_FILES, MF_BYCOMMAND | (g_bViewKeys ? MF_CHECKED: MF_UNCHECKED));
|
CheckMenuItem32(hMenu, IDM_VIEW_FILES, MF_BYCOMMAND | (g_bViewKeys ? MF_CHECKED: MF_UNCHECKED));
|
||||||
|
|
||||||
if(ShellView_CanDoIDockingWindow(this))
|
if(ShellView_CanDoIDockingWindow(this))
|
||||||
|
@ -474,7 +476,7 @@ LRESULT ShellView_UpdateMenu(LPSHELLVIEW this, HMENU32 hMenu)
|
||||||
{ EnableMenuItem32(hMenu, IDM_VIEW_IDW, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
|
{ EnableMenuItem32(hMenu, IDM_VIEW_IDW, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
|
||||||
CheckMenuItem32(hMenu, IDM_VIEW_IDW, MF_BYCOMMAND | MF_UNCHECKED);
|
CheckMenuItem32(hMenu, IDM_VIEW_IDW, MF_BYCOMMAND | MF_UNCHECKED);
|
||||||
}
|
}
|
||||||
return 0;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
|
@ -498,7 +500,7 @@ void ShellView_OnDeactivate(LPSHELLVIEW this)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* CShellView_OnActivate()
|
* ShellView_OnActivate()
|
||||||
*/
|
*/
|
||||||
LRESULT ShellView_OnActivate(LPSHELLVIEW this, UINT32 uState)
|
LRESULT ShellView_OnActivate(LPSHELLVIEW this, UINT32 uState)
|
||||||
{ OLEMENUGROUPWIDTHS32 omw = { {0, 0, 0, 0, 0, 0} };
|
{ OLEMENUGROUPWIDTHS32 omw = { {0, 0, 0, 0, 0, 0} };
|
||||||
|
@ -521,7 +523,7 @@ LRESULT ShellView_OnActivate(LPSHELLVIEW this, UINT32 uState)
|
||||||
|
|
||||||
if(this->hMenu)
|
if(this->hMenu)
|
||||||
{ this->pShellBrowser->lpvtbl->fnInsertMenusSB(this->pShellBrowser, this->hMenu, &omw);
|
{ this->pShellBrowser->lpvtbl->fnInsertMenusSB(this->pShellBrowser, this->hMenu, &omw);
|
||||||
|
TRACE(shell,"-- after fnInsertMenusSB\n");
|
||||||
/*build the top level menu get the menu item's text*/
|
/*build the top level menu get the menu item's text*/
|
||||||
strcpy(szText,"dummy 31");
|
strcpy(szText,"dummy 31");
|
||||||
|
|
||||||
|
@ -558,11 +560,13 @@ LRESULT ShellView_OnActivate(LPSHELLVIEW this, UINT32 uState)
|
||||||
{ ShellView_MergeFileMenu(this, mii.hSubMenu);
|
{ ShellView_MergeFileMenu(this, mii.hSubMenu);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
TRACE(shell,"-- before fnSetMenuSB\n");
|
||||||
this->pShellBrowser->lpvtbl->fnSetMenuSB(this->pShellBrowser, this->hMenu, 0, this->hWnd);
|
this->pShellBrowser->lpvtbl->fnSetMenuSB(this->pShellBrowser, this->hMenu, 0, this->hWnd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this->uState = uState;
|
this->uState = uState;
|
||||||
return 0;
|
TRACE(shell,"--\n");
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
|
@ -600,7 +604,7 @@ BOOL32 ShellView_AddRemoveDockingWindow(LPSHELLVIEW this, BOOL32 bAdd)
|
||||||
LPSERVICEPROVIDER pSP;
|
LPSERVICEPROVIDER pSP;
|
||||||
LPDOCKINGWINDOWFRAME pFrame;
|
LPDOCKINGWINDOWFRAME pFrame;
|
||||||
|
|
||||||
FIXME(shell,"(%p)->(badd=0x%08x) stub\n",this,bAdd);
|
WARN(shell,"(%p)->(badd=0x%08x) semi-stub\n",this,bAdd);
|
||||||
|
|
||||||
/* get the browser's IServiceProvider */
|
/* get the browser's IServiceProvider */
|
||||||
hr = this->pShellBrowser->lpvtbl->fnQueryInterface(this->pShellBrowser, (REFIID)&IID_IServiceProvider, (LPVOID*)&pSP);
|
hr = this->pShellBrowser->lpvtbl->fnQueryInterface(this->pShellBrowser, (REFIID)&IID_IServiceProvider, (LPVOID*)&pSP);
|
||||||
|
@ -610,6 +614,7 @@ BOOL32 ShellView_AddRemoveDockingWindow(LPSHELLVIEW this, BOOL32 bAdd)
|
||||||
if(SUCCEEDED(hr))
|
if(SUCCEEDED(hr))
|
||||||
{ if(bAdd)
|
{ if(bAdd)
|
||||||
{ hr = S_OK;
|
{ hr = S_OK;
|
||||||
|
FIXME(shell,"no docking implemented\n");
|
||||||
/*if(!this->pDockingWindow)
|
/*if(!this->pDockingWindow)
|
||||||
{ //create the toolbar object
|
{ //create the toolbar object
|
||||||
this->pDockingWindow = DockingWindow_Constructor(this, this->hWnd);
|
this->pDockingWindow = DockingWindow_Constructor(this, this->hWnd);
|
||||||
|
@ -625,8 +630,9 @@ BOOL32 ShellView_AddRemoveDockingWindow(LPSHELLVIEW this, BOOL32 bAdd)
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ /*if(this->pDockingWindow)
|
{ FIXME(shell,"no docking implemented\n");
|
||||||
{ hr = pFrame->->lpvtbl->fnRemoveToolbar(pFrame, (IDockingWindow*)this->pDockingWindow, DWFRF_NORMAL);
|
/* if(this->pDockingWindow)
|
||||||
|
{ hr = pFrame->lpvtbl->fnRemoveToolbar(pFrame, (IDockingWindow*)this->pDockingWindow, DWFRF_NORMAL);
|
||||||
|
|
||||||
if(SUCCEEDED(hr))
|
if(SUCCEEDED(hr))
|
||||||
{ // RemoveToolbar should release the toolbar object which will cause
|
{ // RemoveToolbar should release the toolbar object which will cause
|
||||||
|
@ -820,7 +826,7 @@ void ShellView_DoContextMenu(LPSHELLVIEW this, WORD x, WORD y, BOOL32 fDefault)
|
||||||
}
|
}
|
||||||
else /* we are acting with a full featured IShellBrowser */
|
else /* we are acting with a full featured IShellBrowser */
|
||||||
{ TRACE(shell,"-- fnBrowseObject pidl =%p\n", this->aSelectedItems[0]);
|
{ TRACE(shell,"-- fnBrowseObject pidl =%p\n", this->aSelectedItems[0]);
|
||||||
wFlags = SBSP_DEFBROWSER | SBSP_DEFMODE | SBSP_RELATIVE;
|
wFlags = SBSP_SAMEBROWSER | SBSP_DEFMODE | SBSP_RELATIVE;
|
||||||
this->pShellBrowser->lpvtbl->fnBrowseObject(this->pShellBrowser,
|
this->pShellBrowser->lpvtbl->fnBrowseObject(this->pShellBrowser,
|
||||||
this->aSelectedItems[0],
|
this->aSelectedItems[0],
|
||||||
wFlags);
|
wFlags);
|
||||||
|
|
|
@ -61,6 +61,9 @@ DEFINE_SHLGUID(IID_IPersist, 0x0000010CL, 0, 0);
|
||||||
DEFINE_SHLGUID(IID_IViewObject, 0x0000010DL, 0, 0);
|
DEFINE_SHLGUID(IID_IViewObject, 0x0000010DL, 0, 0);
|
||||||
DEFINE_SHLGUID(IID_IDataObject, 0x0000010EL, 0, 0);
|
DEFINE_SHLGUID(IID_IDataObject, 0x0000010EL, 0, 0);
|
||||||
|
|
||||||
|
DEFINE_SHLGUID(IID_IDropSource, 0x00000121L, 0, 0);
|
||||||
|
DEFINE_SHLGUID(IID_IDropTarget, 0x00000122L, 0, 0);
|
||||||
|
|
||||||
DEFINE_GUID (IID_IServiceProvider, 0x6D5140C1L, 0x7436, 0x11CE, 0x80, 0x34, 0x00, 0xAA, 0x00, 0x60, 0x09, 0xFA);
|
DEFINE_GUID (IID_IServiceProvider, 0x6D5140C1L, 0x7436, 0x11CE, 0x80, 0x34, 0x00, 0xAA, 0x00, 0x60, 0x09, 0xFA);
|
||||||
DEFINE_GUID (IID_IDockingWindow, 0x012dd920L, 0x7B26, 0x11D0, 0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8);
|
DEFINE_GUID (IID_IDockingWindow, 0x012dd920L, 0x7B26, 0x11D0, 0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8);
|
||||||
DEFINE_GUID (IID_IDockingWindowSite, 0x2A342FC2L, 0x7B26, 0x11D0, 0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8);
|
DEFINE_GUID (IID_IDockingWindowSite, 0x2A342FC2L, 0x7B26, 0x11D0, 0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8);
|
||||||
|
|
|
@ -52,27 +52,27 @@ init Shell32LibMain
|
||||||
44 stub DoEnvironmentSubstA # exported by name
|
44 stub DoEnvironmentSubstA # exported by name
|
||||||
45 stdcall PathFileExists(str) PathFileExists
|
45 stdcall PathFileExists(str) PathFileExists
|
||||||
46 stdcall PathMatchSpec (str str) PathMatchSpec
|
46 stdcall PathMatchSpec (str str) PathMatchSpec
|
||||||
47 stub PathMakeUniqueName
|
47 stub PathMakeUniqueName@20
|
||||||
48 stub PathSetDlgItemPath
|
48 stub PathSetDlgItemPath@12
|
||||||
49 stub PathQualify
|
49 stub PathQualify@4
|
||||||
50 stub PathStripToRoot
|
50 stub PathStripToRoot
|
||||||
51 stdcall PathResolve(str long long) PathResolve
|
51 stdcall PathResolve(str long long) PathResolve
|
||||||
52 stdcall PathGetArgs(str) PathGetArgs
|
52 stdcall PathGetArgs(str) PathGetArgs
|
||||||
53 stub DoEnvironmentSubstW # exported by name
|
53 stub DoEnvironmentSubstW@8 # exported by name
|
||||||
54 stdcall DragAcceptFiles(long long) DragAcceptFiles # exported by name
|
54 stdcall DragAcceptFiles(long long) DragAcceptFiles # exported by name
|
||||||
55 stub PathQuoteSpaces
|
55 stub PathQuoteSpaces
|
||||||
56 stdcall PathUnquoteSpaces(str) PathUnquoteSpaces
|
56 stdcall PathUnquoteSpaces(str) PathUnquoteSpaces
|
||||||
57 stub PathGetDriveNumber
|
57 stdcall PathGetDriveNumber (str) PathGetDriveNumber32
|
||||||
58 stdcall ParseField(str long str long) ParseField
|
58 stdcall ParseField(str long str long) ParseField
|
||||||
59 stub RestartDialog
|
59 stub RestartDialog
|
||||||
60 stdcall ExitWindowsDialog(long) ExitWindowsDialog
|
60 stdcall ExitWindowsDialog(long) ExitWindowsDialog
|
||||||
61 stdcall RunFileDlg(long long long str str long) RunFileDlg
|
61 stdcall RunFileDlg(long long long str str long) RunFileDlg
|
||||||
62 stdcall PickIconDlg(long long long long) PickIconDlg
|
62 stdcall PickIconDlg(long long long long) PickIconDlg
|
||||||
63 stdcall GetFileNameFromBrowse(long long long long str str str) GetFileNameFromBrowse
|
63 stdcall GetFileNameFromBrowse(long long long long str str str) GetFileNameFromBrowse
|
||||||
64 stub DriveType
|
64 stdcall DriveType (long) DriveType32
|
||||||
65 stub InvalidateDriveType
|
65 stub InvalidateDriveType
|
||||||
66 stub IsNetDrive
|
66 stub IsNetDrive
|
||||||
67 stub Shell_MergeMenus
|
67 stdcall Shell_MergeMenus (long long long long long long) Shell_MergeMenus32
|
||||||
68 stdcall SHGetSettings(long long long) SHGetSettings
|
68 stdcall SHGetSettings(long long long) SHGetSettings
|
||||||
69 stub SHGetNetResource
|
69 stub SHGetNetResource
|
||||||
70 stub SHCreateDefClassObject
|
70 stub SHCreateDefClassObject
|
||||||
|
@ -101,10 +101,10 @@ init Shell32LibMain
|
||||||
93 stub Win32CreateDirectory
|
93 stub Win32CreateDirectory
|
||||||
94 stub Win32RemoveDirectory
|
94 stub Win32RemoveDirectory
|
||||||
95 stdcall SHLogILFromFSIL (ptr) SHLogILFromFSIL
|
95 stdcall SHLogILFromFSIL (ptr) SHLogILFromFSIL
|
||||||
96 stub StrRetToStrN
|
96 stdcall StrRetToStrN (long long long long) StrRetToStrN
|
||||||
97 stub SHWaitForFileToOpen
|
97 stub SHWaitForFileToOpen
|
||||||
98 stub SHGetRealIDL
|
98 stdcall SHGetRealIDL (long long long) SHGetRealIDL
|
||||||
99 stub SetAppStartingCursor
|
99 stdcall SetAppStartingCursor (long long) SetAppStartingCursor32
|
||||||
100 stdcall SHRestricted(long) SHRestricted
|
100 stdcall SHRestricted(long) SHRestricted
|
||||||
101 stub DragQueryFileAorW # exported by name
|
101 stub DragQueryFileAorW # exported by name
|
||||||
102 stdcall SHCoCreateInstance(ptr ptr long ptr ptr) SHCoCreateInstance
|
102 stdcall SHCoCreateInstance(ptr ptr long ptr ptr) SHCoCreateInstance
|
||||||
|
@ -126,12 +126,12 @@ init Shell32LibMain
|
||||||
118 stdcall FileMenu_Destroy (long) FileMenu_Destroy
|
118 stdcall FileMenu_Destroy (long) FileMenu_Destroy
|
||||||
119 stdcall IsLFNDrive(str) IsLFNDrive
|
119 stdcall IsLFNDrive(str) IsLFNDrive
|
||||||
120 stub FileMenu_AbortInitMenu
|
120 stub FileMenu_AbortInitMenu
|
||||||
121 stdcall SHFlushClipboard() SHFlushClipboard
|
121 stdcall SHFlushClipboard () SHFlushClipboard
|
||||||
122 stub RunDLL_CallEntry16
|
122 stub RunDLL_CallEntry16
|
||||||
123 stdcall SHFreeUnusedLibraries (long) SHFreeUnusedLibraries
|
123 stdcall SHFreeUnusedLibraries (long) SHFreeUnusedLibraries
|
||||||
124 stub FileMenu_AppendFilesForPidl
|
124 stub FileMenu_AppendFilesForPidl
|
||||||
125 stub FileMenu_AddFilesForPidl
|
125 stub FileMenu_AddFilesForPidl
|
||||||
126 stub SHOutOfMemoryMessageBox
|
126 stdcall SHOutOfMemoryMessageBox (long long long) SHOutOfMemoryMessageBox
|
||||||
127 stdcall SHWinHelp (long long long long) SHWinHelp
|
127 stdcall SHWinHelp (long long long long) SHWinHelp
|
||||||
128 stdcall DllGetClassObject(long long ptr) SHELL32_DllGetClassObject
|
128 stdcall DllGetClassObject(long long ptr) SHELL32_DllGetClassObject
|
||||||
129 stub DAD_AutoScroll
|
129 stub DAD_AutoScroll
|
||||||
|
@ -156,17 +156,17 @@ init Shell32LibMain
|
||||||
148 stdcall ExtractAssociatedIconA(long ptr long) ExtractAssociatedIcon32A # exported by name
|
148 stdcall ExtractAssociatedIconA(long ptr long) ExtractAssociatedIcon32A # exported by name
|
||||||
149 stdcall SHFind_InitMenuPopup(long long long long) SHFind_InitMenuPopup
|
149 stdcall SHFind_InitMenuPopup(long long long long) SHFind_InitMenuPopup
|
||||||
150 stub ExtractAssociatedIconExA # exported by name
|
150 stub ExtractAssociatedIconExA # exported by name
|
||||||
151 stub SHLoadOLE
|
151 stdcall SHLoadOLE (long) SHLoadOLE32
|
||||||
152 stdcall ILGetSize(ptr) ILGetSize
|
152 stdcall ILGetSize(ptr) ILGetSize
|
||||||
153 stdcall ILGetNext(ptr) ILGetNext
|
153 stdcall ILGetNext(ptr) ILGetNext
|
||||||
154 stub ILAppend
|
154 stdcall ILAppend (long long long) ILAppend
|
||||||
155 stdcall ILFree(ptr) ILFree
|
155 stdcall ILFree(ptr) ILFree
|
||||||
156 stub ILGlobalFree
|
156 stub ILGlobalFree
|
||||||
157 stdcall ILCreateFromPath (ptr) ILCreateFromPath
|
157 stdcall ILCreateFromPath (ptr) ILCreateFromPath
|
||||||
158 stdcall PathGetExtension(str long long) PathGetExtension
|
158 stdcall PathGetExtension(str long long) PathGetExtension
|
||||||
159 stub PathIsDirectory
|
159 stub PathIsDirectory
|
||||||
160 stub SHNetConnectionDialog
|
160 stub SHNetConnectionDialog
|
||||||
161 stdcall SHRunControlPanel (long long)SHRunControlPanel
|
161 stdcall SHRunControlPanel (long long) SHRunControlPanel
|
||||||
162 stub SHSimpleIDListFromPath
|
162 stub SHSimpleIDListFromPath
|
||||||
163 stub StrToOleStr
|
163 stub StrToOleStr
|
||||||
164 stub Win32DeleteFile
|
164 stub Win32DeleteFile
|
||||||
|
@ -203,7 +203,7 @@ init Shell32LibMain
|
||||||
195 stdcall SHFree(ptr) SHFree
|
195 stdcall SHFree(ptr) SHFree
|
||||||
196 stdcall SHAlloc(long) SHAlloc
|
196 stdcall SHAlloc(long) SHAlloc
|
||||||
197 stub SHGlobalDefect
|
197 stub SHGlobalDefect
|
||||||
198 stub SHAbortInvokeCommand
|
198 stdcall SHAbortInvokeCommand () SHAbortInvokeCommand
|
||||||
199 stub SHGetFileIcon
|
199 stub SHGetFileIcon
|
||||||
200 stub SHLocalAlloc
|
200 stub SHLocalAlloc
|
||||||
201 stub SHLocalFree
|
201 stub SHLocalFree
|
||||||
|
@ -310,7 +310,7 @@ init Shell32LibMain
|
||||||
301 stub StrChrA # proper ordinal unknown
|
301 stub StrChrA # proper ordinal unknown
|
||||||
302 stub StrChrIA # proper ordinal unknown
|
302 stub StrChrIA # proper ordinal unknown
|
||||||
303 stub StrChrIW # proper ordinal unknown
|
303 stub StrChrIW # proper ordinal unknown
|
||||||
304 stub StrChrW # proper ordinal unknown
|
304 stdcall StrChrW (ptr ptr) StrChrW # proper ordinal unknown
|
||||||
305 stub StrCmpNA # proper ordinal unknown
|
305 stub StrCmpNA # proper ordinal unknown
|
||||||
306 stub StrCmpNIA # proper ordinal unknown
|
306 stub StrCmpNIA # proper ordinal unknown
|
||||||
307 stub StrCmpNIW # proper ordinal unknown
|
307 stub StrCmpNIW # proper ordinal unknown
|
||||||
|
@ -337,19 +337,19 @@ init Shell32LibMain
|
||||||
328 stub StrStrW # proper ordinal unknown
|
328 stub StrStrW # proper ordinal unknown
|
||||||
329 stub WOWShellExecute # proper ordinal unknown
|
329 stub WOWShellExecute # proper ordinal unknown
|
||||||
|
|
||||||
505 stdcall SHRegCloseKey (long) SHRegCloseKey
|
505 stdcall SHRegCloseKey (long) SHRegCloseKey32
|
||||||
506 stdcall SHRegOpenKeyA (long str long) SHRegOpenKey32A
|
506 stdcall SHRegOpenKeyA (long str long) SHRegOpenKey32A
|
||||||
507 stdcall SHRegOpenKeyW (long wstr long) SHRegOpenKey32W
|
507 stdcall SHRegOpenKeyW (long wstr long long) SHRegOpenKey32W
|
||||||
508 stub SHRegQueryValueA@16
|
508 stub SHRegQueryValueA@16
|
||||||
509 stdcall SHRegQueryValueExA(long str ptr ptr ptr ptr) SHRegQueryValueEx32A
|
509 stdcall SHRegQueryValueExA(long str ptr ptr ptr ptr) SHRegQueryValueEx32A
|
||||||
510 stub SHRegQueryValueW@16
|
510 stdcall SHRegQueryValueW (long long long long) SHRegQueryValue32W
|
||||||
511 stdcall SHRegQueryValueExW (long wstr ptr ptr ptr ptr) SHRegQueryValueEx32W
|
511 stdcall SHRegQueryValueExW (long wstr ptr ptr ptr ptr) SHRegQueryValueEx32W
|
||||||
512 stub SHRegDeleteKeyW@8
|
512 stub SHRegDeleteKeyW@8
|
||||||
|
|
||||||
520 stub SHAllocShared@12
|
520 stdcall SHAllocShared (long long long) SHAllocShared
|
||||||
521 stub SHLockShared@8
|
521 stdcall SHLockShared (long long) SHLockShared
|
||||||
522 stub SHUnlockShared@4
|
522 stdcall SHUnlockShared (long) SHUnlockShared
|
||||||
523 stub SHFreeShared@8
|
523 stdcall SHFreeShared (long long) SHFreeShared
|
||||||
524 stub RealDriveType@8
|
524 stub RealDriveType@8
|
||||||
525 stub RealDriveTypeFlags@8
|
525 stub RealDriveTypeFlags@8
|
||||||
|
|
||||||
|
@ -360,13 +360,13 @@ init Shell32LibMain
|
||||||
644 stub SHChangeNotification_Lock@16
|
644 stub SHChangeNotification_Lock@16
|
||||||
645 stub SHChangeNotification_Unlock@4
|
645 stub SHChangeNotification_Unlock@4
|
||||||
646 stub SHChangeRegistrationReceive@8
|
646 stub SHChangeRegistrationReceive@8
|
||||||
647 stub ReceiveAddToRecentDocs
|
647 stub ReceiveAddToRecentDocs@8
|
||||||
648 stub SHWaitOp_Operate@8
|
648 stub SHWaitOp_Operate@8
|
||||||
|
|
||||||
650 stub PathIsSameRoot
|
650 stub PathIsSameRoot@8
|
||||||
651 stdcall ReadCabinetState (long long) ReadCabinetState
|
651 stdcall ReadCabinetState (long long) ReadCabinetState
|
||||||
652 stdcall WriteCabinetState (long) WriteCabinetState
|
652 stdcall WriteCabinetState (long) WriteCabinetState
|
||||||
653 stub PathProcessCommand
|
653 stub PathProcessCommand@16
|
||||||
|
|
||||||
660 stdcall FileIconInit (long) FileIconInit
|
660 stdcall FileIconInit (long) FileIconInit
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue