Implemented SHCreateShellFolderViewEx.

This commit is contained in:
Juergen Schmied 1999-07-25 12:22:57 +00:00 committed by Alexandre Julliard
parent 6d28b6e69f
commit 43577ec09a

View File

@ -16,6 +16,7 @@
#include "shellapi.h" #include "shellapi.h"
#include "shlobj.h" #include "shlobj.h"
#include "shell32_main.h" #include "shell32_main.h"
#include "wine/undocshell.h"
DEFAULT_DEBUG_CHANNEL(shell) DEFAULT_DEBUG_CHANNEL(shell)
@ -199,10 +200,27 @@ int WINAPI SHShellFolderView_Message(HWND hwndCabinet,UINT uMsg,LPARAM lParam)
/************************************************************************* /*************************************************************************
* OleStrToStrN [SHELL32.78] * OleStrToStrN [SHELL32.78]
*/ */
BOOL WINAPI OleStrToStrN (LPSTR lpMulti, INT nMulti, LPCWSTR lpWide, INT nWide) BOOL WINAPI OleStrToStrNA (LPSTR lpStr, INT nStr, LPCWSTR lpOle, INT nOle)
{ {
TRACE("%s %x %s %x\n", lpMulti, nMulti, debugstr_w(lpWide), nWide); TRACE("%p %x %s %x\n", lpStr, nStr, debugstr_w(lpOle), nOle);
return WideCharToMultiByte (0, 0, lpWide, nWide, lpMulti, nMulti, NULL, NULL); return WideCharToMultiByte (0, 0, lpOle, nOle, lpStr, nStr, NULL, NULL);
}
BOOL WINAPI OleStrToStrNW (LPWSTR lpwStr, INT nwStr, LPCWSTR lpOle, INT nOle)
{
TRACE("%p %x %s %x\n", lpwStr, nwStr, debugstr_w(lpOle), nOle);
if (lstrcpynW ( lpwStr, lpOle, nwStr))
{ return lstrlenW (lpwStr);
}
return 0;
}
BOOL WINAPI OleStrToStrNAW (LPVOID lpOut, INT nOut, LPCVOID lpIn, INT nIn)
{
if (VERSION_OsIsUnicode())
return OleStrToStrNW (lpOut, nOut, lpIn, nIn);
return OleStrToStrNA (lpOut, nOut, lpIn, nIn);
} }
/************************************************************************* /*************************************************************************
@ -371,12 +389,21 @@ DWORD WINAPI SHCreateDirectory(LPSECURITY_ATTRIBUTES sec,LPCSTR path) {
* free_ptr() - frees memory using IMalloc * free_ptr() - frees memory using IMalloc
* exported by ordinal * exported by ordinal
*/ */
DWORD WINAPI SHFree(LPVOID x) { DWORD WINAPI SHFree(LPVOID x)
TRACE("%p\n",x); {
if (!HIWORD(x)) TRACE("%p\n",x);
{ *(LPDWORD)0xdeaf0000 = 0; #if 0
} WORD len;
return HeapFree(GetProcessHeap(),0,x); x -= 4;
if ( (*(LPWORD)x) != 0x8271)
ERR("MAGIC1!\n");
len = *(LPWORD)(x+2);
if ( *(LPWORD)( x + 4 + len) != 0x7384)
ERR("MAGIC2!\n");
#endif
return HeapFree(GetProcessHeap(), 0, x);
} }
/************************************************************************* /*************************************************************************
@ -386,11 +413,20 @@ DWORD WINAPI SHFree(LPVOID x) {
* void *task_alloc(DWORD len), uses SHMalloc allocator * void *task_alloc(DWORD len), uses SHMalloc allocator
* exported by ordinal * exported by ordinal
*/ */
LPVOID WINAPI SHAlloc(DWORD len) { LPVOID WINAPI SHAlloc(DWORD len)
/* void * ret = (LPVOID)LocalAlloc32(len,LMEM_ZEROINIT);*/ /* chrashes */ {
void * ret = (LPVOID) HeapAlloc(GetProcessHeap(),0,len); LPBYTE ret = (LPVOID) HeapAlloc(GetProcessHeap(),0,len);
TRACE("%lu bytes at %p\n",len, ret); #if 0
return ret; LPBYTE ret = (LPVOID) HeapAlloc(GetProcessHeap(),0,len + 6);
*(LPWORD)(ret) = 0x8271;
*(LPWORD)(ret+2) = len;
*(LPWORD)(ret+len+4) = 0x7384;
ret += 4;
#endif
TRACE("%lu bytes at %p\n",len, ret);
return (LPVOID)ret;
} }
/************************************************************************* /*************************************************************************
@ -556,8 +592,23 @@ DWORD WINAPI SHChangeNotify (
HRESULT WINAPI SHCreateShellFolderViewEx( HRESULT WINAPI SHCreateShellFolderViewEx(
LPSHELLVIEWDATA psvcbi, /*[in ] shelltemplate struct*/ LPSHELLVIEWDATA psvcbi, /*[in ] shelltemplate struct*/
LPVOID* ppv) /*[out] IShellView pointer*/ LPVOID* ppv) /*[out] IShellView pointer*/
{ FIXME("(%p,%p):stub.\n", psvcbi,ppv); {
return 0; IShellView * psf;
HRESULT hRes;
TRACE("sf=%p pidl=%p cb=%p mode=0x%08lx parm=0x%08lx\n",
psvcbi->pShellFolder, psvcbi->pidl, psvcbi->pCallBack, psvcbi->viewmode, psvcbi->dwUserParam);
psf = IShellView_Constructor(psvcbi->pShellFolder);
if (!psf)
return E_OUTOFMEMORY;
IShellView_AddRef(psf);
hRes = IShellView_QueryInterface(psf, &IID_IShellView, (LPVOID *)ppv);
IShellView_Release(psf);
return hRes;
} }
/************************************************************************* /*************************************************************************
* SHWinHelp [SHELL32.127] * SHWinHelp [SHELL32.127]
@ -871,7 +922,7 @@ HRESULT WINAPI StrRetToStrN (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST
if (VERSION_OsIsUnicode()) if (VERSION_OsIsUnicode())
lstrcpynAtoW((LPWSTR)dest, src->u.cStr, len); lstrcpynAtoW((LPWSTR)dest, src->u.cStr, len);
else else
strncpy((LPSTR)dest, src->u.cStr, len); lstrcpynA((LPSTR)dest, src->u.cStr, len);
break; break;
case STRRET_OFFSETA: case STRRET_OFFSETA:
@ -879,7 +930,7 @@ HRESULT WINAPI StrRetToStrN (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST
{ if(VERSION_OsIsUnicode()) { if(VERSION_OsIsUnicode())
lstrcpynAtoW((LPWSTR)dest, ((LPCSTR)&pidl->mkid)+src->u.uOffset, len); lstrcpynAtoW((LPWSTR)dest, ((LPCSTR)&pidl->mkid)+src->u.uOffset, len);
else else
strncpy((LPSTR)dest, ((LPCSTR)&pidl->mkid)+src->u.uOffset, len); lstrcpynA((LPSTR)dest, ((LPCSTR)&pidl->mkid)+src->u.uOffset, len);
break; break;
} }
@ -1072,7 +1123,7 @@ LPSTR WINAPI StrFormatByteSizeA ( DWORD dw, LPSTR pszBuf, UINT cchBuf )
else else
{ sprintf (buf,"%3.1f GB", (FLOAT)dw/1073741824L); { sprintf (buf,"%3.1f GB", (FLOAT)dw/1073741824L);
} }
strncpy (pszBuf, buf, cchBuf); lstrcpynA (pszBuf, buf, cchBuf);
return pszBuf; return pszBuf;
} }
LPWSTR WINAPI StrFormatByteSizeW ( DWORD dw, LPWSTR pszBuf, UINT cchBuf ) LPWSTR WINAPI StrFormatByteSizeW ( DWORD dw, LPWSTR pszBuf, UINT cchBuf )
@ -1137,7 +1188,7 @@ HRESULT WINAPI shell32_654 (DWORD x, DWORD y)
* NOTES * NOTES
* builds a DPA * builds a DPA
*/ */
DWORD WINAPI RLBuildListOfPaths () DWORD WINAPI RLBuildListOfPaths (void)
{ FIXME("stub\n"); { FIXME("stub\n");
return 0; return 0;
} }