Commit 6101324f authored by Juergen Schmied's avatar Juergen Schmied Committed by Alexandre Julliard

Many bugfixes, new stubs SHGetRealIDL, SHRegQueryValue32W,

SHRegQueryValueEx32W, StrRetToStrN, StrChrW, SHAllocShared, SHLockShared, SHUnlockShared, SHFreeShared, SetAppStartingCursor32, SHLoadOLE32, Shell_MergeMenus32, PathGetDriveNumber32, DriveType32, SHAbortInvokeCommand, SHOutOfMemoryMessageBox, SHFlushClipboard.
parent 82853711
......@@ -119,6 +119,9 @@ LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl)
{ DWORD len;
LPITEMIDLIST newpidl=NULL;
TRACE(pidl,"pidl=%p \n",pidl);
pdump(pidl);
if (pidl)
{ len = pidl->mkid.cb;
newpidl = (LPITEMIDLIST) SHAlloc (len+2);
......@@ -127,7 +130,7 @@ LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl)
ILGetNext(newpidl)->mkid.cb = 0x00;
}
}
TRACE(pidl,"pidl=%p newpidl=%p\n",pidl, newpidl);
TRACE(pidl,"-- newpidl=%p\n",newpidl);
return newpidl;
}
......@@ -196,6 +199,16 @@ LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2)
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]
*
* NOTES
......@@ -263,12 +276,24 @@ LPITEMIDLIST WINAPI ILGetNext(LPITEMIDLIST pidl)
* NOTES
* Adds the single item to the idlist indicated by pidl.
* if bEnd is 0, adds the item to the front of the list,
* otherwise adds the item to the end.
* Destroys the passed in idlist!
* otherwise adds the item to the end. (???)
* Destroys the passed in idlist! (???)
*/
LPITEMIDLIST WINAPI ILAppend(LPITEMIDLIST pidl,LPCITEMIDLIST item,BOOL32 bEnd)
{ FIXME(pidl,"(pidl=%p,pidl=%p,%08u)stub\n",pidl,item,bEnd);
return NULL;
{ LPITEMIDLIST idlRet;
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]
......
......@@ -451,10 +451,11 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITE
enum
{ FT_UNKNOWN= 0x00000000,
FT_DIR= 0x00000001,
FT_DESKTOP= 0x00000002
FT_DESKTOP= 0x00000002,
FT_SPECIAL= 0x00000003
} 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\\");
......@@ -487,7 +488,7 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITE
case CSIDL_DRIVES:
strcpy (buffer,"xxx"); /*virtual folder*/
TRACE (shell,"looking for Drives\n");
tFolder=FT_UNKNOWN;
tFolder=FT_SPECIAL;
break;
case CSIDL_FONTS:
strcpy (buffer,"Fonts");
......@@ -602,10 +603,13 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITE
case FT_DESKTOP:
strcpy (tpath,"Desktop");
break;
case FT_SPECIAL:
if (nFolder==CSIDL_DRIVES)
strcpy (tpath,"My Computer");
break;
default:
RegCloseKey(key);
return E_OUTOFMEMORY;
break;
}
RegCloseKey(key);
......
......@@ -242,6 +242,9 @@ static HRESULT WINAPI IShellFolder_ParseDisplayName(
{ pidlFull = (LPITEMIDLIST)HeapAlloc(GetProcessHeap(),0,2);
pidlFull->mkid.cb = 0;
}
else if (strcmp(pszTemp,"My Computer")==0)
{ pidlFull = _ILCreateMyComputer();
}
else
{ pidlFull = _ILCreateMyComputer();
......@@ -394,6 +397,8 @@ static HRESULT WINAPI IShellFolder_CompareIDs(LPSHELLFOLDER this,
LPCITEMIDLIST pidlTemp1 = pidl1, pidlTemp2 = pidl2;
TRACE(shell,"(%p)->(0x%08lx,pidl1=%p,pidl2=%p)\n",this,lParam,pidl1,pidl2);
pdump (pidl1);
pdump (pidl2);
if (!pidl1 && !pidl2)
return 0;
......@@ -741,6 +746,9 @@ static BOOL32 WINAPI IShellFolder_GetFolderPath(LPSHELLFOLDER this, LPSTR lpszOu
*lpszOut=0;
if (! this->mlpszFolder)
return FALSE;
dwSize = strlen (this->mlpszFolder) +1;
if ( dwSize > dwOutSize)
return FALSE;
......
......@@ -381,7 +381,7 @@ HMENU32 ShellView_BuildFileMenu(LPSHELLVIEW this)
mii.cbSize = sizeof(mii);
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.fState = MFS_ENABLED;
mii.dwTypeData = szText;
......@@ -394,6 +394,7 @@ HMENU32 ShellView_BuildFileMenu(LPSHELLVIEW this)
InsertMenuItem32A(hSubMenu, (UINT32)-1, TRUE, &mii);
}
}
TRACE(shell,"-- return (menu=0x%x)\n",hSubMenu);
return hSubMenu;
}
/**************************************************************************
......@@ -428,6 +429,7 @@ void ShellView_MergeFileMenu(LPSHELLVIEW this, HMENU32 hSubMenu)
/*insert this item at the beginning of the menu */
InsertMenuItem32A(hSubMenu, 0, TRUE, &mii);
}
TRACE(shell,"--\n");
}
/**************************************************************************
......@@ -463,7 +465,7 @@ void ShellView_MergeViewMenu(LPSHELLVIEW this, HMENU32 hSubMenu)
* ShellView_UpdateMenu()
*/
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));
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);
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)
{ OLEMENUGROUPWIDTHS32 omw = { {0, 0, 0, 0, 0, 0} };
......@@ -521,7 +523,7 @@ LRESULT ShellView_OnActivate(LPSHELLVIEW this, UINT32 uState)
if(this->hMenu)
{ 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*/
strcpy(szText,"dummy 31");
......@@ -558,11 +560,13 @@ LRESULT ShellView_OnActivate(LPSHELLVIEW this, UINT32 uState)
{ ShellView_MergeFileMenu(this, mii.hSubMenu);
}
}
TRACE(shell,"-- before fnSetMenuSB\n");
this->pShellBrowser->lpvtbl->fnSetMenuSB(this->pShellBrowser, this->hMenu, 0, this->hWnd);
}
}
this->uState = uState;
return 0;
TRACE(shell,"--\n");
return S_OK;
}
/**************************************************************************
......@@ -600,7 +604,7 @@ BOOL32 ShellView_AddRemoveDockingWindow(LPSHELLVIEW this, BOOL32 bAdd)
LPSERVICEPROVIDER pSP;
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 */
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(bAdd)
{ hr = S_OK;
FIXME(shell,"no docking implemented\n");
/*if(!this->pDockingWindow)
{ //create the toolbar object
this->pDockingWindow = DockingWindow_Constructor(this, this->hWnd);
......@@ -625,8 +630,9 @@ BOOL32 ShellView_AddRemoveDockingWindow(LPSHELLVIEW this, BOOL32 bAdd)
}*/
}
else
{ /*if(this->pDockingWindow)
{ hr = pFrame->->lpvtbl->fnRemoveToolbar(pFrame, (IDockingWindow*)this->pDockingWindow, DWFRF_NORMAL);
{ FIXME(shell,"no docking implemented\n");
/* if(this->pDockingWindow)
{ hr = pFrame->lpvtbl->fnRemoveToolbar(pFrame, (IDockingWindow*)this->pDockingWindow, DWFRF_NORMAL);
if(SUCCEEDED(hr))
{ // 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 */
{ 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->aSelectedItems[0],
wFlags);
......
......@@ -61,6 +61,9 @@ DEFINE_SHLGUID(IID_IPersist, 0x0000010CL, 0, 0);
DEFINE_SHLGUID(IID_IViewObject, 0x0000010DL, 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_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);
......
......@@ -52,27 +52,27 @@ init Shell32LibMain
44 stub DoEnvironmentSubstA # exported by name
45 stdcall PathFileExists(str) PathFileExists
46 stdcall PathMatchSpec (str str) PathMatchSpec
47 stub PathMakeUniqueName
48 stub PathSetDlgItemPath
49 stub PathQualify
47 stub PathMakeUniqueName@20
48 stub PathSetDlgItemPath@12
49 stub PathQualify@4
50 stub PathStripToRoot
51 stdcall PathResolve(str long long) PathResolve
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
55 stub PathQuoteSpaces
56 stdcall PathUnquoteSpaces(str) PathUnquoteSpaces
57 stub PathGetDriveNumber
57 stdcall PathGetDriveNumber (str) PathGetDriveNumber32
58 stdcall ParseField(str long str long) ParseField
59 stub RestartDialog
60 stdcall ExitWindowsDialog(long) ExitWindowsDialog
61 stdcall RunFileDlg(long long long str str long) RunFileDlg
62 stdcall PickIconDlg(long long long long) PickIconDlg
63 stdcall GetFileNameFromBrowse(long long long long str str str) GetFileNameFromBrowse
64 stub DriveType
64 stdcall DriveType (long) DriveType32
65 stub InvalidateDriveType
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
69 stub SHGetNetResource
70 stub SHCreateDefClassObject
......@@ -101,10 +101,10 @@ init Shell32LibMain
93 stub Win32CreateDirectory
94 stub Win32RemoveDirectory
95 stdcall SHLogILFromFSIL (ptr) SHLogILFromFSIL
96 stub StrRetToStrN
96 stdcall StrRetToStrN (long long long long) StrRetToStrN
97 stub SHWaitForFileToOpen
98 stub SHGetRealIDL
99 stub SetAppStartingCursor
98 stdcall SHGetRealIDL (long long long) SHGetRealIDL
99 stdcall SetAppStartingCursor (long long) SetAppStartingCursor32
100 stdcall SHRestricted(long) SHRestricted
101 stub DragQueryFileAorW # exported by name
102 stdcall SHCoCreateInstance(ptr ptr long ptr ptr) SHCoCreateInstance
......@@ -126,12 +126,12 @@ init Shell32LibMain
118 stdcall FileMenu_Destroy (long) FileMenu_Destroy
119 stdcall IsLFNDrive(str) IsLFNDrive
120 stub FileMenu_AbortInitMenu
121 stdcall SHFlushClipboard() SHFlushClipboard
121 stdcall SHFlushClipboard () SHFlushClipboard
122 stub RunDLL_CallEntry16
123 stdcall SHFreeUnusedLibraries (long) SHFreeUnusedLibraries
124 stub FileMenu_AppendFilesForPidl
125 stub FileMenu_AddFilesForPidl
126 stub SHOutOfMemoryMessageBox
126 stdcall SHOutOfMemoryMessageBox (long long long) SHOutOfMemoryMessageBox
127 stdcall SHWinHelp (long long long long) SHWinHelp
128 stdcall DllGetClassObject(long long ptr) SHELL32_DllGetClassObject
129 stub DAD_AutoScroll
......@@ -156,17 +156,17 @@ init Shell32LibMain
148 stdcall ExtractAssociatedIconA(long ptr long) ExtractAssociatedIcon32A # exported by name
149 stdcall SHFind_InitMenuPopup(long long long long) SHFind_InitMenuPopup
150 stub ExtractAssociatedIconExA # exported by name
151 stub SHLoadOLE
151 stdcall SHLoadOLE (long) SHLoadOLE32
152 stdcall ILGetSize(ptr) ILGetSize
153 stdcall ILGetNext(ptr) ILGetNext
154 stub ILAppend
154 stdcall ILAppend (long long long) ILAppend
155 stdcall ILFree(ptr) ILFree
156 stub ILGlobalFree
157 stdcall ILCreateFromPath (ptr) ILCreateFromPath
158 stdcall PathGetExtension(str long long) PathGetExtension
159 stub PathIsDirectory
160 stub SHNetConnectionDialog
161 stdcall SHRunControlPanel (long long)SHRunControlPanel
161 stdcall SHRunControlPanel (long long) SHRunControlPanel
162 stub SHSimpleIDListFromPath
163 stub StrToOleStr
164 stub Win32DeleteFile
......@@ -203,7 +203,7 @@ init Shell32LibMain
195 stdcall SHFree(ptr) SHFree
196 stdcall SHAlloc(long) SHAlloc
197 stub SHGlobalDefect
198 stub SHAbortInvokeCommand
198 stdcall SHAbortInvokeCommand () SHAbortInvokeCommand
199 stub SHGetFileIcon
200 stub SHLocalAlloc
201 stub SHLocalFree
......@@ -310,7 +310,7 @@ init Shell32LibMain
301 stub StrChrA # proper ordinal unknown
302 stub StrChrIA # 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
306 stub StrCmpNIA # proper ordinal unknown
307 stub StrCmpNIW # proper ordinal unknown
......@@ -337,19 +337,19 @@ init Shell32LibMain
328 stub StrStrW # 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
507 stdcall SHRegOpenKeyW (long wstr long) SHRegOpenKey32W
507 stdcall SHRegOpenKeyW (long wstr long long) SHRegOpenKey32W
508 stub SHRegQueryValueA@16
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
512 stub SHRegDeleteKeyW@8
520 stub SHAllocShared@12
521 stub SHLockShared@8
522 stub SHUnlockShared@4
523 stub SHFreeShared@8
520 stdcall SHAllocShared (long long long) SHAllocShared
521 stdcall SHLockShared (long long) SHLockShared
522 stdcall SHUnlockShared (long) SHUnlockShared
523 stdcall SHFreeShared (long long) SHFreeShared
524 stub RealDriveType@8
525 stub RealDriveTypeFlags@8
......@@ -360,13 +360,13 @@ init Shell32LibMain
644 stub SHChangeNotification_Lock@16
645 stub SHChangeNotification_Unlock@4
646 stub SHChangeRegistrationReceive@8
647 stub ReceiveAddToRecentDocs
647 stub ReceiveAddToRecentDocs@8
648 stub SHWaitOp_Operate@8
650 stub PathIsSameRoot
650 stub PathIsSameRoot@8
651 stdcall ReadCabinetState (long long) ReadCabinetState
652 stdcall WriteCabinetState (long) WriteCabinetState
653 stub PathProcessCommand
653 stub PathProcessCommand@16
660 stdcall FileIconInit (long) FileIconInit
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment