merged Wine commits to shell32

svn path=/trunk/; revision=8211
This commit is contained in:
Martin Fuchs 2004-02-16 21:46:12 +00:00
parent 583ae62ff8
commit 596a4b878e
10 changed files with 124 additions and 240 deletions

View file

@ -34,6 +34,34 @@ extern "C" {
#include <shobjidl.h>
LPVOID WINAPI SHAlloc(ULONG);
HRESULT WINAPI SHCoCreateInstance(LPCWSTR,const CLSID*,IUnknown*,REFIID,LPVOID*);
HRESULT WINAPI SHCreateStdEnumFmtEtc(DWORD,const FORMATETC *,IEnumFORMATETC**);
BOOL WINAPI SHFindFiles(LPCITEMIDLIST,LPCITEMIDLIST);
void WINAPI SHFree(LPVOID);
BOOL WINAPI SHGetPathFromIDListA(LPCITEMIDLIST pidl,LPSTR pszPath);
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl,LPWSTR pszPath);
#define SHGetPathFromIDList WINELIB_NAME_AW(SHGetPathFromIDList)
HRESULT WINAPI SHILCreateFromPath(LPCWSTR,LPITEMIDLIST*,DWORD*);
LPITEMIDLIST WINAPI SHSimpleIDListFromPath(LPCWSTR);
int WINAPI SHMapPIDLToSystemImageListIndex(IShellFolder*,LPCITEMIDLIST,int*);
LPITEMIDLIST WINAPI ILAppendID(LPITEMIDLIST,LPCSHITEMID,BOOL);
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST);
LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST);
LPITEMIDLIST WINAPI ILCreateFromPathA(LPCSTR);
LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR);
#define ILCreateFromPath WINELIB_NAME_AW(ILCreateFromPath)
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST,LPCITEMIDLIST);
LPITEMIDLIST WINAPI ILFindChild(LPCITEMIDLIST,LPCITEMIDLIST);
LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST);
void WINAPI ILFree(LPITEMIDLIST);
LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST);
UINT WINAPI ILGetSize(LPCITEMIDLIST);
BOOL WINAPI ILIsEqual(LPCITEMIDLIST,LPCITEMIDLIST);
BOOL WINAPI ILIsParent(LPCITEMIDLIST,LPCITEMIDLIST,BOOL);
BOOL WINAPI ILRemoveLastID(LPCITEMIDLIST);
HRESULT WINAPI SHCoCreateInstance(LPCWSTR, const CLSID*, LPUNKNOWN, REFIID, LPVOID*);
BOOL WINAPI SHGetPathFromIDListA (LPCITEMIDLIST pidl,LPSTR pszPath);
@ -872,6 +900,56 @@ struct IFileSystemBindDataVtbl {
#endif /* __IFileSystemBindData_INTERFACE_DEFINED__ */
/****************************************************************************
* Drag And Drop Routines
*/
/* DAD_AutoScroll sample structure */
#define NUM_POINTS 3
typedef struct
{
int iNextSample;
DWORD dwLastScroll;
BOOL bFull;
POINT pts[NUM_POINTS];
DWORD dwTimes[NUM_POINTS];
} AUTO_SCROLL_DATA;
BOOL WINAPI DAD_SetDragImage(HIMAGELIST,LPPOINT);
BOOL WINAPI DAD_DragEnterEx(HWND,POINT);
BOOL WINAPI DAD_DragEnterEx2(HWND,POINT,IDataObject*);
BOOL WINAPI DAD_DragMove(POINT);
BOOL WINAPI DAD_DragLeave(void);
BOOL WINAPI DAD_AutoScroll(HWND,AUTO_SCROLL_DATA*,LPPOINT);
HRESULT WINAPI SHDoDragDrop(HWND,IDataObject*,IDropSource*,DWORD,LPDWORD);
/****************************************************************************
* Cabinet functions
*/
typedef struct {
WORD cLength;
WORD nVersion;
BOOL fFullPathTitle:1;
BOOL fSaveLocalView:1;
BOOL fNotShell:1;
BOOL fSimpleDefault:1;
BOOL fDontShowDescBar:1;
BOOL fNewWindowMode:1;
BOOL fShowCompColor:1;
BOOL fDontPrettyNames:1;
BOOL fAdminsCreateCommonGroups:1;
UINT fUnusedFlags:7;
UINT fMenuEnumFilter;
} CABINETSTATE, *LPCABINETSTATE;
#define CABINETSTATE_VERSION 2
BOOL WINAPI ReadCabinetState(CABINETSTATE *, int);
BOOL WINAPI WriteCabinetState(CABINETSTATE *);
#ifdef __cplusplus
} /* extern "C" */
#endif /* defined(__cplusplus) */

View file

@ -347,7 +347,7 @@ BOOL PidlToSicIndex (
LPCITEMIDLIST pidl,
BOOL bBigIcon,
UINT uFlags,
UINT * pIndex)
int * pIndex)
{
IExtractIconA *ei;
char szIconFile[MAX_PATH]; /* file containing the icon */
@ -383,11 +383,11 @@ BOOL PidlToSicIndex (
*
*/
int WINAPI SHMapPIDLToSystemImageListIndex(
LPSHELLFOLDER sh,
IShellFolder *sh,
LPCITEMIDLIST pidl,
UINT * pIndex)
int *pIndex)
{
UINT Index;
int Index;
TRACE("(SF=%p,pidl=%p,%p)\n",sh,pidl,pIndex);
pdump(pidl);

View file

@ -764,10 +764,10 @@ LPITEMIDLIST WINAPI SHLogILFromFSIL(LPITEMIDLIST pidl)
* NOTES
* exported by ordinal
*/
DWORD WINAPI ILGetSize(LPCITEMIDLIST pidl)
UINT WINAPI ILGetSize(LPCITEMIDLIST pidl)
{
LPCSHITEMID si = &(pidl->mkid);
DWORD len=0;
UINT len=0;
if (pidl)
{ while (si->cb)
@ -776,7 +776,7 @@ DWORD WINAPI ILGetSize(LPCITEMIDLIST pidl)
}
len += 2;
}
TRACE("pidl=%p size=%lu\n",pidl, len);
TRACE("pidl=%p size=%u\n",pidl, len);
return len;
}
@ -871,13 +871,10 @@ LPITEMIDLIST WINAPI ILAppend(LPITEMIDLIST pidl, LPCITEMIDLIST item, BOOL bEnd)
* NOTES
* exported by ordinal
*/
DWORD WINAPI ILFree(LPITEMIDLIST pidl)
void WINAPI ILFree(LPITEMIDLIST pidl)
{
TRACE("(pidl=0x%08lx)\n",(DWORD)pidl);
if(!pidl) return FALSE;
SHFree(pidl);
return TRUE;
TRACE("(pidl=%p)\n",pidl);
if(pidl) SHFree(pidl);
}
/*************************************************************************

View file

@ -633,17 +633,10 @@ HINSTANCE16 WINAPI ShellExecute16( HWND16 hWnd, LPCSTR lpOperation,
WCHAR *wVerb = NULL, *wFile = NULL, *wParameters = NULL, *wDirectory = NULL;
HANDLE hProcess = 0;
if (lpOperation)
seiW.lpVerb = __SHCloneStrAtoW(&wVerb, lpOperation);
if (lpFile)
seiW.lpFile = __SHCloneStrAtoW(&wFile, lpFile);
if (lpParameters)
seiW.lpParameters = __SHCloneStrAtoW(&wParameters, lpParameters);
if (lpDirectory)
seiW.lpDirectory = __SHCloneStrAtoW(&wDirectory, lpDirectory);
seiW.lpVerb = lpOperation ? __SHCloneStrAtoW(&wVerb, lpOperation) : NULL;
seiW.lpFile = lpFile ? __SHCloneStrAtoW(&wFile, lpFile) : NULL;
seiW.lpParameters = lpParameters ? __SHCloneStrAtoW(&wParameters, lpParameters) : NULL;
seiW.lpDirectory = lpDirectory ? __SHCloneStrAtoW(&wDirectory, lpDirectory) : NULL;
seiW.cbSize = sizeof(seiW);
seiW.fMask = 0;

View file

@ -52,7 +52,7 @@ BOOL WINAPI Shell_GetImageList(HIMAGELIST * lpBigList, HIMAGELIST * lpSmallList)
#define INVALID_INDEX -1
BOOL SIC_Initialize(void);
void SIC_Destroy(void);
BOOL PidlToSicIndex (IShellFolder * sh, LPCITEMIDLIST pidl, BOOL bBigIcon, UINT uFlags, UINT * pIndex);
BOOL PidlToSicIndex (IShellFolder * sh, LPCITEMIDLIST pidl, BOOL bBigIcon, UINT uFlags, int * pIndex);
INT SIC_GetIconIndex (LPCSTR sSourceFile, INT dwSourceIndex );
/* Classes Root */

View file

@ -1025,7 +1025,7 @@ void WINAPI SHFreeUnusedLibraries (void)
* DAD_AutoScroll [SHELL32.129]
*
*/
DWORD WINAPI DAD_AutoScroll(HWND hwnd, LPSCROLLSAMPLES samples, LPPOINT pt)
BOOL WINAPI DAD_AutoScroll(HWND hwnd, AUTO_SCROLL_DATA *samples, LPPOINT pt)
{
FIXME("hwnd = %p %p %p\n",hwnd,samples,pt);
return 0;

View file

@ -44,16 +44,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell);
/************************* STRRET functions ****************************/
/*
* ***** NOTE *****
* These routines are identical to StrRetToBuf[AW] in dlls/shlwapi/string.c.
* They were duplicated here because not every version of Shlwapi.dll exports
* StrRetToBuf[AW]. If you change one routine, change them both. YOU HAVE BEEN
* WARNED.
* ***** NOTE *****
*/
HRESULT WINAPI StrRetToStrNA (LPVOID dest, DWORD len, LPSTRRET src, const ITEMIDLIST *pidl)
BOOL WINAPI StrRetToStrNA(LPSTR dest, DWORD len, LPSTRRET src, const ITEMIDLIST *pidl)
{
TRACE("dest=%p len=0x%lx strret=%p(%s) pidl=%p\n",
dest,len,src,
@ -62,33 +53,36 @@ HRESULT WINAPI StrRetToStrNA (LPVOID dest, DWORD len, LPSTRRET src, const ITEMID
(src->uType == STRRET_OFFSET) ? "STRRET_OFFSET" : "STRRET_???",
pidl);
if (!dest)
return FALSE;
switch (src->uType)
{
case STRRET_WSTR:
WideCharToMultiByte(CP_ACP, 0, src->u.pOleStr, -1, (LPSTR)dest, len, NULL, NULL);
WideCharToMultiByte(CP_ACP, 0, src->u.pOleStr, -1, dest, len, NULL, NULL);
CoTaskMemFree(src->u.pOleStr);
break;
case STRRET_CSTR:
lstrcpynA((LPSTR)dest, src->u.cStr, len);
lstrcpynA(dest, src->u.cStr, len);
break;
case STRRET_OFFSET:
lstrcpynA((LPSTR)dest, ((LPCSTR)&pidl->mkid)+src->u.uOffset, len);
lstrcpynA(dest, ((LPCSTR)&pidl->mkid)+src->u.uOffset, len);
break;
default:
FIXME("unknown type!\n");
if (len) *(LPSTR)dest = '\0';
return(FALSE);
if (len) *dest = '\0';
return FALSE;
}
TRACE("-- %s\n", debugstr_a(dest) );
return S_OK;
return TRUE;
}
/************************************************************************/
HRESULT WINAPI StrRetToStrNW (LPVOID dest, DWORD len, LPSTRRET src, const ITEMIDLIST *pidl)
BOOL WINAPI StrRetToStrNW(LPWSTR dest, DWORD len, LPSTRRET src, const ITEMIDLIST *pidl)
{
TRACE("dest=%p len=0x%lx strret=%p(%s) pidl=%p\n",
dest,len,src,
@ -97,29 +91,32 @@ HRESULT WINAPI StrRetToStrNW (LPVOID dest, DWORD len, LPSTRRET src, const ITEMID
(src->uType == STRRET_OFFSET) ? "STRRET_OFFSET" : "STRRET_???",
pidl);
if (!dest)
return FALSE;
switch (src->uType)
{
case STRRET_WSTR:
lstrcpynW((LPWSTR)dest, src->u.pOleStr, len);
lstrcpynW(dest, src->u.pOleStr, len);
CoTaskMemFree(src->u.pOleStr);
break;
case STRRET_CSTR:
if (!MultiByteToWideChar( CP_ACP, 0, src->u.cStr, -1, dest, len ) && len)
((LPWSTR)dest)[len-1] = 0;
dest[len-1] = 0;
break;
case STRRET_OFFSET:
if (!MultiByteToWideChar( CP_ACP, 0, ((LPCSTR)&pidl->mkid)+src->u.uOffset, -1, dest, len ) && len)
((LPWSTR)dest)[len-1] = 0;
dest[len-1] = 0;
break;
default:
FIXME("unknown type!\n");
if (len) *(LPWSTR)dest = '\0';
return(FALSE);
if (len) *dest = '\0';
return FALSE;
}
return S_OK;
return TRUE;
}
@ -131,11 +128,12 @@ HRESULT WINAPI StrRetToStrNW (LPVOID dest, DWORD len, LPSTRRET src, const ITEMID
* NOTES
* the pidl is for STRRET OFFSET
*/
HRESULT WINAPI StrRetToStrNAW (LPVOID dest, DWORD len, LPSTRRET src, const ITEMIDLIST *pidl)
BOOL WINAPI StrRetToStrNAW(LPVOID dest, DWORD len, LPSTRRET src, const ITEMIDLIST *pidl)
{
if(SHELL_OsIsUnicode())
return StrRetToStrNW (dest, len, src, pidl);
return StrRetToStrNA (dest, len, src, pidl);
return StrRetToStrNW(dest, len, src, pidl);
else
return StrRetToStrNA(dest, len, src, pidl);
}
/************************* OLESTR functions ****************************/

View file

@ -332,6 +332,8 @@ static UINT SHELL_ExecuteW(const WCHAR *lpCmd, void *env, BOOL shWait,
retval = ERROR_BAD_FORMAT;
}
TRACE("returning %u\n", retval);
psei_out->hInstApp = (HINSTANCE)retval;
return retval;
}
@ -1260,7 +1262,7 @@ BOOL WINAPI ShellExecuteExW32 (LPSHELLEXECUTEINFOW psei, SHELL_ExecuteW32 execfu
if (sei_tmp.lpIDList!=psei->lpIDList && sei_tmp.lpIDList)
SHFree(sei_tmp.lpIDList);
TRACE("ShellExecuteExW32 retval=%d\n", retval);
TRACE("retval %u\n", retval);
if (retval <= 32)
{

View file

@ -1293,7 +1293,7 @@ static LRESULT ShellView_OnNotify(IShellViewImpl * This, UINT CtlID, LPNMHDR lpn
}
else /* LVN_GETDISPINFOW */
{
StrRetToStrNW( lpdi->item.pszText, lpdi->item.cchTextMax, &sd.str, NULL);
StrRetToStrNW( ((NMLVDISPINFOW *)lpdi)->item.pszText, lpdi->item.cchTextMax, &sd.str, NULL);
TRACE("-- text=%s\n",debugstr_w((WCHAR*)(lpdi->item.pszText)));
}
}

View file

@ -34,37 +34,6 @@ extern "C" {
/****************************************************************************
* IDList Functions
*/
LPITEMIDLIST WINAPI ILClone (LPCITEMIDLIST pidl);
LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl);
LPITEMIDLIST WINAPI ILCombine(
LPCITEMIDLIST iil1,
LPCITEMIDLIST iil2);
DWORD WINAPI ILGetSize(LPCITEMIDLIST pidl);
LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST pidl);
LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST pidl);
BOOL WINAPI ILRemoveLastID(LPCITEMIDLIST pidl);
LPITEMIDLIST WINAPI ILFindChild(
LPCITEMIDLIST pidl1,
LPCITEMIDLIST pidl2);
LPITEMIDLIST WINAPI ILAppendID(
LPITEMIDLIST pidl,
LPCSHITEMID lpItemID,
BOOL bAddToEnd);
BOOL WINAPI ILIsEqual(
LPCITEMIDLIST pidl1,
LPCITEMIDLIST pidl2);
BOOL WINAPI ILIsParent(
LPCITEMIDLIST pidlParent,
LPCITEMIDLIST pidlChild,
BOOL bImmediate);
BOOL WINAPI ILGetDisplayName(
LPCITEMIDLIST pidl,
LPVOID path);
@ -80,8 +49,6 @@ BOOL WINAPI ILGetDisplayNameEx(
LPVOID path,
DWORD type);
DWORD WINAPI ILFree(LPITEMIDLIST pidl);
HRESULT WINAPI ILSaveToStream(
LPSTREAM pstrm,
LPCITEMIDLIST pidl);
@ -95,7 +62,6 @@ void WINAPI ILGlobalFree(LPITEMIDLIST pidl);
LPITEMIDLIST WINAPI SHSimpleIDListFromPathA (LPCSTR lpszPath);
LPITEMIDLIST WINAPI SHSimpleIDListFromPathW (LPCWSTR lpszPath);
LPITEMIDLIST WINAPI SHSimpleIDListFromPathAW (LPCVOID lpszPath);
HRESULT WINAPI SHILCreateFromPathA (
LPCSTR path,
@ -107,35 +73,14 @@ HRESULT WINAPI SHILCreateFromPathW (
LPITEMIDLIST * ppidl,
DWORD *attributes);
HRESULT WINAPI SHILCreateFromPathAW (
LPCVOID path,
LPITEMIDLIST * ppidl,
DWORD *attributes);
LPITEMIDLIST WINAPI ILCreateFromPathA(LPCSTR path);
LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR path);
LPITEMIDLIST WINAPI ILCreateFromPathAW(LPCVOID path);
/*
string functions
*/
HRESULT WINAPI StrRetToStrNA (
LPVOID dest,
DWORD len,
LPSTRRET src,
const ITEMIDLIST *pidl);
HRESULT WINAPI StrRetToStrNW (
LPVOID dest,
DWORD len,
LPSTRRET src,
const ITEMIDLIST *pidl);
HRESULT WINAPI StrRetToStrNAW (
LPVOID dest,
DWORD len,
LPSTRRET src,
const ITEMIDLIST *pidl);
BOOL WINAPI StrRetToStrNA(LPSTR,DWORD,LPSTRRET,const ITEMIDLIST*);
BOOL WINAPI StrRetToStrNW(LPWSTR,DWORD,LPSTRRET,const ITEMIDLIST*);
/****************************************************************************
@ -196,24 +141,10 @@ BOOL WINAPI GetFileNameFromBrowse(
LPCSTR lpstrFilter,
LPCSTR lpstrTitle);
BOOL WINAPI SHFindFiles(
LPCITEMIDLIST pidlRoot,
LPCITEMIDLIST pidlSavedSearch);
BOOL WINAPI SHFindComputer(
LPCITEMIDLIST pidlRoot,
LPCITEMIDLIST pidlSavedSearch);
/* SHObjectProperties flags */
#define OPF_PRINTERNAME 0x01
#define OPF_PATHNAME 0x02
BOOL WINAPI SHObjectProperties(
HWND hwndOwner,
UINT uFlags,
LPCSTR lpstrName,
LPCSTR lpstrParameters);
void WINAPI SHHandleDiskFull(HWND hwndOwner,
UINT uDrive);
@ -227,31 +158,10 @@ DWORD WINAPI SHNetConnectionDialog(
LPCSTR lpstrRemoteName,
DWORD dwType);
int WINAPIV ShellMessageBoxA(
HINSTANCE hInstance,
HWND hWnd,
LPCSTR lpText,
LPCSTR lpCaption,
UINT uType,
...);
int WINAPIV ShellMessageBoxW(
HINSTANCE hInstance,
HWND hWnd,
LPCWSTR lpText,
LPCWSTR lpCaption,
UINT uType,
...);
#define ShellMessageBox WINELIB_NAME_AW(ShellMessageBox)
/****************************************************************************
* Memory Routines
*/
LPVOID WINAPI SHAlloc(ULONG cb);
void WINAPI SHFree(LPVOID pv);
HANDLE WINAPI SHAllocShared(
LPVOID pv,
ULONG cb,
@ -311,11 +221,6 @@ HICON WINAPI SHGetFileIcon(
DWORD dwFileAttributes,
UINT uFlags);
int WINAPI SHMapPIDLToSystemImageListIndex(
LPSHELLFOLDER psf,
LPCITEMIDLIST pidl,
UINT * pOpenIndex);
BOOL WINAPI FileIconInit(BOOL bFullInit);
/****************************************************************************
@ -459,58 +364,14 @@ HRESULT WINAPI SHRegisterDragDrop(
HRESULT WINAPI SHRevokeDragDrop(HWND hWnd);
HRESULT WINAPI SHDoDragDrop(
HWND hWnd,
LPDATAOBJECT lpDataObject,
LPDROPSOURCE lpDropSource,
DWORD dwOKEffect,
LPDWORD pdwEffect);
BOOL WINAPI DAD_DragEnter(HWND hWnd);
BOOL WINAPI DAD_DragEnterEx(
HWND hWnd,
POINT pt);
BOOL WINAPI DAD_DragMove(POINT pt);
/* DAD_AutoScroll return values */
#define DAD_SCROLL_UP 1
#define DAD_SCROLL_DOWN 2
#define DAD_SCROLL_LEFT 4
#define DAD_SCROLL_RIGHT 8
/* DAD_AutoScroll sample structure */
typedef struct
{
DWORD dwCount;
DWORD dwLastTime;
BOOL bWrapped;
POINT aptPositions[3];
DWORD adwTimes[3];
} SCROLLSAMPLES, *LPSCROLLSAMPLES;
DWORD WINAPI DAD_AutoScroll(HWND hWnd,
LPSCROLLSAMPLES lpSamples,
LPPOINT lppt);
BOOL WINAPI DAD_DragLeave();
BOOL WINAPI DAD_SetDragImageFromListView(
HWND hWnd,
POINT pt);
BOOL WINAPI DAD_SetDragImage(
HIMAGELIST himlTrack,
LPPOINT lppt);
BOOL WINAPI DAD_ShowDragImage(BOOL bShow);
HRESULT WINAPI SHCreateStdEnumFmtEtc(
DWORD cFormats,
const FORMATETC *lpFormats,
LPENUMFORMATETC *ppenumFormatetc);
HRESULT WINAPI CIDLData_CreateFromIDArray(
LPCITEMIDLIST pidlFolder,
DWORD cpidlFiles,
@ -844,57 +705,12 @@ HRESULT WINAPI SHCreateLinks(
UINT uFlags,
LPITEMIDLIST *lppidlLinks);
/* SHGetNewLinkInfo flags */
#define SHGNLI_PIDL 0x01
#define SHGNLI_PREFIXNAME 0x02
#define SHGNLI_NOUNIQUE 0x04
BOOL WINAPI SHGetNewLinkInfoA(
LPCSTR pszLinkTo,
LPCSTR pszDir,
LPSTR pszName,
BOOL *pfMustCopy,
UINT uFlags);
BOOL WINAPI SHGetNewLinkInfoW(
LPCWSTR pszLinkTo,
LPCWSTR pszDir,
LPWSTR pszName,
BOOL *pfMustCopy,
UINT uFlags);
#define SHGetNewLinkInfo WINELIB_NAME_AW(SHGetNewLinkInfo)
DWORD WINAPI CheckEscapesA(LPSTR string, DWORD len);
DWORD WINAPI CheckEscapesW(LPWSTR string, DWORD len);
/* policy functions */
BOOL WINAPI SHInitRestricted(LPCVOID unused, LPCVOID inpRegKey);
/* cabinet functions */
#include "pshpack1.h"
typedef struct {
WORD cLength;
WORD nVersion;
BOOL fFullPathTitle:1;
BOOL fSaveLocalView:1;
BOOL fNotShell:1;
BOOL fSimpleDefault:1;
BOOL fDontShowDescBar:1;
BOOL fNewWindowMode:1;
BOOL fShowCompColor:1;
BOOL fDontPrettyNames:1;
BOOL fAdminsCreateCommonGroups:1;
UINT fUnusedFlags:7;
UINT fMenuEnumFilter;
} CABINETSTATE;
#include "poppack.h"
BOOL WINAPI ReadCabinetState(CABINETSTATE *, int);
BOOL WINAPI WriteCabinetState(CABINETSTATE *);
#ifdef __cplusplus
} /* extern "C" */
#endif /* defined(__cplusplus) */