Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
7c6cc49c
Commit
7c6cc49c
authored
Apr 01, 1999
by
Juergen Schmied
Committed by
Alexandre Julliard
Apr 01, 1999
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
All 19 FileMenu_* functions, some as stubs, some implemented.
parent
b18f3d6f
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
633 additions
and
25 deletions
+633
-25
Makefile.in
dlls/shell32/Makefile.in
+1
-0
brsfolder.c
dlls/shell32/brsfolder.c
+1
-1
pidl.c
dlls/shell32/pidl.c
+1
-0
shelllink.c
dlls/shell32/shelllink.c
+1
-1
shlmenu.c
dlls/shell32/shlmenu.c
+558
-0
shlobj.h
include/shlobj.h
+37
-0
shell32.spec
relay32/shell32.spec
+34
-23
No files found.
dlls/shell32/Makefile.in
View file @
7c6cc49c
...
...
@@ -19,6 +19,7 @@ C_SRCS = \
shell32_main.c
\
shellguid.c
\
shelllink.c
\
shlmenu.c
\
shellole.c
\
shellord.c
\
shellpath.c
\
...
...
dlls/shell32/brsfolder.c
View file @
7c6cc49c
...
...
@@ -117,7 +117,7 @@ static void FillTreeView(IShellFolder * lpsf, LPITEMIDLIST pidl, HTREEITEM hPar
hr
=
IShellFolder_EnumObjects
(
lpsf
,
hwnd
,
SHCONTF_FOLDERS
|
SHCONTF_NONFOLDERS
,
&
lpe
);
if
(
SUCCEEDED
(
hr
))
{
while
(
NOERROR
==
lpe
->
lpvtbl
->
fn
Next
(
lpe
,
1
,
&
pidlTemp
,
&
ulFetched
))
{
while
(
NOERROR
==
IEnumIDList_
Next
(
lpe
,
1
,
&
pidlTemp
,
&
ulFetched
))
{
ULONG
ulAttrs
=
SFGAO_HASSUBFOLDER
|
SFGAO_FOLDER
;
IShellFolder_GetAttributesOf
(
lpsf
,
1
,
&
pidlTemp
,
&
ulAttrs
);
if
(
ulAttrs
&
(
SFGAO_HASSUBFOLDER
|
SFGAO_FOLDER
))
...
...
dlls/shell32/pidl.c
View file @
7c6cc49c
...
...
@@ -50,6 +50,7 @@ void pdump (LPCITEMIDLIST pidl)
else
TRACE
(
pidl
,
"empty pidl (Desktop)
\n
"
);
}
/*************************************************************************
* ILGetDisplayName [SHELL32.15]
*/
...
...
dlls/shell32/shelllink.c
View file @
7c6cc49c
...
...
@@ -562,7 +562,7 @@ static HRESULT WINAPI IShellLink_fnGetHotkey(IShellLink * iface, WORD *pwHotkey)
{
ICOM_THIS
(
IShellLinkImpl
,
iface
);
FIXME
(
shell
,
"(%p)->(%p)
\n
"
,
This
,
pwHotkey
);
FIXME
(
shell
,
"(%p)->(%p)
returning 0
\n
"
,
This
,
pwHotkey
);
*
pwHotkey
=
0x0
;
return
NOERROR
;
}
...
...
dlls/shell32/shlmenu.c
0 → 100644
View file @
7c6cc49c
/*
*
*/
#include <string.h>
#include "wine/obj_base.h"
#include "wine/obj_enumidlist.h"
#include "wine/obj_shellfolder.h"
#include "heap.h"
#include "debug.h"
#include "winversion.h"
#include "shell32_main.h"
#include "pidl.h"
BOOL
WINAPI
FileMenu_DeleteAllItems
(
HMENU
hMenu
);
/*************************************************************************
* FileMenu_Create [SHELL32.114]
*
*/
HMENU
WINAPI
FileMenu_Create
(
COLORREF
crBorderColor
,
int
nBorderWidth
,
HBITMAP
hBorderBmp
,
int
nSelHeight
,
UINT
uFlags
)
{
HMENU
ret
=
CreatePopupMenu
();
FIXME
(
shell
,
"0x%08lx 0x%08x 0x%08x 0x%08x 0x%08x ret=0x%08x
\n
"
,
crBorderColor
,
nBorderWidth
,
hBorderBmp
,
nSelHeight
,
uFlags
,
ret
);
return
ret
;
}
/*************************************************************************
* FileMenu_Destroy [SHELL32.118]
*
* NOTES
* exported by name
*/
void
WINAPI
FileMenu_Destroy
(
HMENU
hMenu
)
{
TRACE
(
shell
,
"0x%08x
\n
"
,
hMenu
);
FileMenu_DeleteAllItems
(
hMenu
);
DestroyMenu
(
hMenu
);
}
/*************************************************************************
* FileMenu_AppendItemAW [SHELL32.115]
*
*/
BOOL
WINAPI
FileMenu_AppendItemAW
(
HMENU
hMenu
,
LPCVOID
lpText
,
UINT
uID
,
int
icon
,
HMENU
hMenuPopup
,
int
nItemHeight
)
{
LPSTR
lpszText
=
(
LPSTR
)
lpText
;
MENUITEMINFOA
mii
;
ZeroMemory
(
&
mii
,
sizeof
(
MENUITEMINFOA
));
if
(
VERSION_OsIsUnicode
()
&&
(
lpszText
!=
FM_SEPARATOR
))
lpszText
=
HEAP_strdupWtoA
(
GetProcessHeap
(),
0
,
lpText
);
FIXME
(
shell
,
"0x%08x %s 0x%08x 0x%08x 0x%08x 0x%08x
\n
"
,
hMenu
,
(
lpszText
!=
FM_SEPARATOR
)
?
lpszText
:
NULL
,
uID
,
icon
,
hMenuPopup
,
nItemHeight
);
mii
.
cbSize
=
sizeof
(
mii
);
if
(
hMenuPopup
)
{
/* sub menu */
mii
.
fMask
=
MIIM_SUBMENU
|
MIIM_TYPE
|
MIIM_DATA
;;
mii
.
hSubMenu
=
hMenuPopup
;
mii
.
fType
=
MFT_STRING
;
mii
.
dwTypeData
=
lpszText
;
}
else
if
(
lpText
==
FM_SEPARATOR
)
{
mii
.
fMask
=
MIIM_ID
|
MIIM_TYPE
;
mii
.
fType
=
MFT_SEPARATOR
;
}
else
{
/* normal item */
mii
.
fMask
=
MIIM_ID
|
MIIM_TYPE
|
MIIM_STATE
;
mii
.
dwTypeData
=
lpszText
;
mii
.
fState
=
MFS_ENABLED
|
MFS_DEFAULT
;
mii
.
fType
=
MFT_STRING
;
}
mii
.
wID
=
uID
;
InsertMenuItemA
(
hMenu
,
(
UINT
)
-
1
,
TRUE
,
&
mii
);
if
(
VERSION_OsIsUnicode
())
HeapFree
(
GetProcessHeap
(),
0
,
lpszText
);
return
TRUE
;
}
/*************************************************************************
* FileMenu_InsertUsingPidl [SHELL32.110]
*
* NOTES
* uEnumFlags any SHCONTF flag
*/
int
WINAPI
FileMenu_InsertUsingPidl
(
HMENU
hMenu
,
UINT
uID
,
LPCITEMIDLIST
pidl
,
UINT
uFlags
,
UINT
uEnumFlags
,
LPFNFMCALLBACK
lpfnCallback
)
{
IShellFolder
*
lpsf
,
*
lpsf2
;
IEnumIDList
*
lpe
=
0
;
ULONG
ulFetched
;
LPITEMIDLIST
pidlTemp
=
0
;
ULONG
ulItemAttr
;
char
sTemp
[
MAX_PATH
];
int
NumberOfItems
=
0
;
FIXME
(
shell
,
"0x%08x 0x%08x %p 0x%08x 0x%08x %p
\n
"
,
hMenu
,
uID
,
pidl
,
uFlags
,
uEnumFlags
,
lpfnCallback
);
pdump
(
pidl
);
if
(
SUCCEEDED
(
SHGetDesktopFolder
(
&
lpsf
)))
{
if
(
SUCCEEDED
(
IShellFolder_BindToObject
(
lpsf
,
pidl
,
0
,(
REFIID
)
&
IID_IShellFolder
,(
LPVOID
*
)
&
lpsf2
)))
{
if
(
SUCCEEDED
(
IShellFolder_EnumObjects
(
lpsf2
,
0
,
uEnumFlags
,
&
lpe
)))
{
while
(
NOERROR
==
IEnumIDList_Next
(
lpe
,
1
,
&
pidlTemp
,
&
ulFetched
))
{
if
(
SUCCEEDED
(
IShellFolder_GetAttributesOf
(
lpsf
,
1
,
&
pidlTemp
,
&
ulItemAttr
)))
{
ILGetDisplayName
(
pidlTemp
,
sTemp
);
if
(
SFGAO_FOLDER
&
ulItemAttr
)
{
FileMenu_AppendItemAW
(
hMenu
,
sTemp
,
uID
,
FM_BLANK_ICON
,
CreatePopupMenu
(),
FM_DEFAULT_HEIGHT
);
}
else
{
FileMenu_AppendItemAW
(
hMenu
,
sTemp
,
uID
,
FM_BLANK_ICON
,
0
,
FM_DEFAULT_HEIGHT
);
}
}
TRACE
(
shell
,
"enter callback
\n
"
);
lpfnCallback
(
pidl
,
pidlTemp
);
TRACE
(
shell
,
"leave callback
\n
"
);
NumberOfItems
++
;
}
IEnumIDList_Release
(
lpe
);
}
IShellFolder_Release
(
lpsf2
);
}
IShellFolder_Release
(
lpsf
);
}
return
NumberOfItems
;
}
/*************************************************************************
* FileMenu_ReplaceUsingPidl [SHELL32.113]
*
*/
int
WINAPI
FileMenu_ReplaceUsingPidl
(
HMENU
hMenu
,
UINT
uID
,
LPCITEMIDLIST
pidl
,
UINT
uEnumFlags
,
LPFNFMCALLBACK
lpfnCallback
)
{
FIXME
(
shell
,
"0x%08x 0x%08x %p 0x%08x %p
\n
"
,
hMenu
,
uID
,
pidl
,
uEnumFlags
,
lpfnCallback
);
return
0
;
}
/*************************************************************************
* FileMenu_Invalidate [SHELL32.111]
*/
void
WINAPI
FileMenu_Invalidate
(
HMENU
hMenu
)
{
FIXME
(
shell
,
"0x%08x
\n
"
,
hMenu
);
}
/*************************************************************************
* FileMenu_FindSubMenuByPidl [SHELL32.106]
*/
HMENU
WINAPI
FileMenu_FindSubMenuByPidl
(
HMENU
hMenu
,
LPCITEMIDLIST
pidl
)
{
FIXME
(
shell
,
"0x%08x %p
\n
"
,
hMenu
,
pidl
);
return
0
;
}
/*************************************************************************
* FileMenu_AppendFilesForPidl [SHELL32.124]
*/
HMENU
WINAPI
FileMenu_AppendFilesForPidl
(
HMENU
hMenu
,
LPCITEMIDLIST
pidl
,
BOOL
bAddSeperator
)
{
FIXME
(
shell
,
"0x%08x %p 0x%08x
\n
"
,
hMenu
,
pidl
,
bAddSeperator
);
return
0
;
}
/*************************************************************************
* FileMenu_AddFilesForPidl [SHELL32.125]
*
* NOTES
* uEnumFlags any SHCONTF flag
*/
int
WINAPI
FileMenu_AddFilesForPidl
(
HMENU
hMenu
,
UINT
uReserved
,
UINT
uID
,
LPCITEMIDLIST
pidl
,
UINT
uFlags
,
UINT
uEnumFlags
,
LPFNFMCALLBACK
lpfnCallback
)
{
FIXME
(
shell
,
"0x%08x 0x%08x 0x%08x %p 0x%08x 0x%08x %p
\n
"
,
hMenu
,
uReserved
,
uID
,
pidl
,
uFlags
,
uEnumFlags
,
lpfnCallback
);
pdump
(
pidl
);
return
0
;
}
/*************************************************************************
* FileMenu_TrackPopupMenuEx [SHELL32.116]
*/
HRESULT
WINAPI
FileMenu_TrackPopupMenuEx
(
HMENU
hMenu
,
UINT
uFlags
,
int
x
,
int
y
,
HWND
hWnd
,
LPTPMPARAMS
lptpm
)
{
FIXME
(
shell
,
"0x%08x 0x%08x 0x%x 0x%x 0x%08x %p stub
\n
"
,
hMenu
,
uFlags
,
x
,
y
,
hWnd
,
lptpm
);
return
TrackPopupMenuEx
(
hMenu
,
uFlags
,
x
,
y
,
hWnd
,
lptpm
);
}
/*************************************************************************
* FileMenu_GetLastSelectedItemPidls [SHELL32.107]
*/
BOOL
WINAPI
FileMenu_GetLastSelectedItemPidls
(
UINT
uReserved
,
LPCITEMIDLIST
*
ppidlFolder
,
LPCITEMIDLIST
*
ppidlItem
)
{
FIXME
(
shell
,
"0x%08x %p %p
\n
"
,
uReserved
,
ppidlFolder
,
ppidlItem
);
return
0
;
}
/*************************************************************************
* FileMenu_MeasureItem [SHELL32.112]
*/
LRESULT
WINAPI
FileMenu_MeasureItem
(
HWND
hWnd
,
LPMEASUREITEMSTRUCT
lpmis
)
{
FIXME
(
shell
,
"0x%08x %p
\n
"
,
hWnd
,
lpmis
);
return
0
;
}
/*************************************************************************
* FileMenu_DrawItem [SHELL32.105]
*/
LRESULT
WINAPI
FileMenu_DrawItem
(
HWND
hWnd
,
LPDRAWITEMSTRUCT
lpdis
)
{
FIXME
(
shell
,
"0x%08x %p
\n
"
,
hWnd
,
lpdis
);
return
0
;
}
/*************************************************************************
* FileMenu_InitMenuPopup [SHELL32.109]
*
* NOTES
* The filemenu is a ownerdrawn menu. Call this function responding to
* WM_INITPOPUPMENU
*
*/
HRESULT
WINAPI
FileMenu_InitMenuPopup
(
DWORD
hmenu
)
{
FIXME
(
shell
,
"hmenu=0x%lx stub
\n
"
,
hmenu
);
return
0
;
}
/*************************************************************************
* FileMenu_HandleMenuChar [SHELL32.108]
*/
LRESULT
WINAPI
FileMenu_HandleMenuChar
(
HMENU
hMenu
,
WPARAM
wParam
)
{
FIXME
(
shell
,
"0x%08x 0x%08x
\n
"
,
hMenu
,
wParam
);
return
0
;
}
/*************************************************************************
* FileMenu_DeleteAllItems [SHELL32.104]
*
* NOTES
* exported by name
*/
BOOL
WINAPI
FileMenu_DeleteAllItems
(
HMENU
hMenu
)
{
FIXME
(
shell
,
"0x%08x stub
\n
"
,
hMenu
);
DestroyMenu
(
hMenu
);
return
TRUE
;
}
/*************************************************************************
* FileMenu_DeleteItemByCmd [SHELL32.]
*
*/
BOOL
WINAPI
FileMenu_DeleteItemByCmd
(
HMENU
hMenu
,
UINT
uID
)
{
TRACE
(
shell
,
"0x%08x 0x%08x
\n
"
,
hMenu
,
uID
);
DeleteMenu
(
hMenu
,
MF_BYCOMMAND
,
uID
);
return
TRUE
;
}
/*************************************************************************
* FileMenu_DeleteItemByIndex [SHELL32.140]
*/
BOOL
WINAPI
FileMenu_DeleteItemByIndex
(
HMENU
hMenu
,
UINT
uPos
)
{
TRACE
(
shell
,
"0x%08x 0x%08x
\n
"
,
hMenu
,
uPos
);
DeleteMenu
(
hMenu
,
MF_BYPOSITION
,
uPos
);
return
TRUE
;
}
/*************************************************************************
* FileMenu_DeleteItemByFirstID [SHELL32.141]
*/
BOOL
WINAPI
FileMenu_DeleteItemByFirstID
(
HMENU
hMenu
,
UINT
uID
)
{
TRACE
(
shell
,
"0x%08x 0x%08x
\n
"
,
hMenu
,
uID
);
return
0
;
}
/*************************************************************************
* FileMenu_DeleteSeparator [SHELL32.142]
*/
BOOL
WINAPI
FileMenu_DeleteSeparator
(
HMENU
hMenu
)
{
TRACE
(
shell
,
"0x%08x
\n
"
,
hMenu
);
return
0
;
}
/*************************************************************************
* FileMenu_EnableItemByCmd [SHELL32.143]
*/
BOOL
WINAPI
FileMenu_EnableItemByCmd
(
HMENU
hMenu
,
UINT
uID
,
BOOL
bEnable
)
{
TRACE
(
shell
,
"0x%08x 0x%08x 0x%08x
\n
"
,
hMenu
,
uID
,
bEnable
);
return
0
;
}
/*************************************************************************
* FileMenu_GetItemExtent [SHELL32.144]
*
*/
DWORD
WINAPI
FileMenu_GetItemExtent
(
HMENU
hMenu
,
UINT
uPos
)
{
RECT
rect
;
FIXME
(
shell
,
"0x%08x 0x%08x
\n
"
,
hMenu
,
uPos
);
if
(
GetMenuItemRect
(
0
,
hMenu
,
uPos
,
&
rect
))
{
FIXME
(
shell
,
"0x%04x 0x%04x 0x%04x 0x%04x
\n
"
,
rect
.
right
,
rect
.
left
,
rect
.
top
,
rect
.
bottom
);
return
((
rect
.
right
-
rect
.
left
)
<<
16
)
+
(
rect
.
top
-
rect
.
bottom
);
}
return
0x00200020
;
/*fixme*/
}
/*************************************************************************
* FileMenu_AbortInitMenu [SHELL32.120]
*
*/
void
WINAPI
FileMenu_AbortInitMenu
(
void
)
{
TRACE
(
shell
,
"
\n
"
);
}
/*************************************************************************
* SHFind_InitMenuPopup [SHELL32.149]
*
*
* PARAMETERS
* hMenu [in] handel of menu previously created
* hWndParent [in] parent window
* w [in] no pointer
* x [in] no pointer
*/
HRESULT
WINAPI
SHFind_InitMenuPopup
(
HMENU
hMenu
,
HWND
hWndParent
,
DWORD
w
,
DWORD
x
)
{
FIXME
(
shell
,
"hmenu=0x%08x hwnd=0x%08x 0x%08lx 0x%08lx stub
\n
"
,
hMenu
,
hWndParent
,
w
,
x
);
return
TRUE
;
}
/*************************************************************************
* Shell_MergeMenus [SHELL32.67]
*
*/
BOOL
_SHIsMenuSeparator
(
HMENU
hm
,
int
i
)
{
MENUITEMINFOA
mii
;
mii
.
cbSize
=
sizeof
(
MENUITEMINFOA
);
mii
.
fMask
=
MIIM_TYPE
;
mii
.
cch
=
0
;
/* WARNING: We MUST initialize it to 0*/
if
(
!
GetMenuItemInfoA
(
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_MergeMenus
(
HMENU
hmDst
,
HMENU
hmSrc
,
UINT
uInsert
,
UINT
uIDAdjust
,
UINT
uIDAdjustMax
,
ULONG
uFlags
)
{
int
nItem
;
HMENU
hmSubMenu
;
BOOL
bAlreadySeparated
;
MENUITEMINFOA
miiSrc
;
char
szName
[
256
];
UINT
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
=
GetMenuItemCount
(
hmDst
);
if
(
uInsert
>=
(
UINT
)
nItem
)
{
uInsert
=
(
UINT
)
nItem
;
bAlreadySeparated
=
TRUE
;
}
else
{
bAlreadySeparated
=
_SHIsMenuSeparator
(
hmDst
,
uInsert
);;
}
if
((
uFlags
&
MM_ADDSEPARATOR
)
&&
!
bAlreadySeparated
)
{
/* Add a separator between the menus */
InsertMenuA
(
hmDst
,
uInsert
,
MF_BYPOSITION
|
MF_SEPARATOR
,
0
,
NULL
);
bAlreadySeparated
=
TRUE
;
}
/* Go through the menu items and clone them*/
for
(
nItem
=
GetMenuItemCount
(
hmSrc
)
-
1
;
nItem
>=
0
;
nItem
--
)
{
miiSrc
.
cbSize
=
sizeof
(
MENUITEMINFOA
);
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
(
!
GetMenuItemInfoA
(
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
=
CreatePopupMenu
();
if
(
!
miiSrc
.
hSubMenu
)
{
return
(
uIDMax
);
}
uTemp
=
Shell_MergeMenus
(
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
(
!
InsertMenuItemA
(
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
)
{
DeleteMenu
(
hmDst
,
uInsert
,
MF_BYPOSITION
);
}
}
else
{
if
(
_SHIsMenuSeparator
(
hmDst
,
uInsert
-
1
))
{
if
(
bAlreadySeparated
)
{
DeleteMenu
(
hmDst
,
uInsert
,
MF_BYPOSITION
);
}
}
else
{
if
((
uFlags
&
MM_ADDSEPARATOR
)
&&
!
bAlreadySeparated
)
{
/* Add a separator between the menus*/
InsertMenuA
(
hmDst
,
uInsert
,
MF_BYPOSITION
|
MF_SEPARATOR
,
0
,
NULL
);
}
}
}
return
(
uIDMax
);
}
include/shlobj.h
View file @
7c6cc49c
...
...
@@ -397,6 +397,43 @@ typedef struct
DWORD
WINAPI
SHGetMalloc
(
LPMALLOC
*
lpmal
)
;
/****************************************************************************
* Shell File Menu API
*/
/* FileMenu_Create nSelHeight */
#define FM_FULL_SELHEIGHT -1;
#define FM_DEFAULT_SELHEIGHT 0
/* FileMenu_Create uFlags */
#define FMF_SMALL_ICONS 0x00
#define FMF_LARGE_ICONS 0x08
#define FMF_NO_COLUMN_BREAK 0x10
/* FileMenu_InsertUsingPidl uFlags */
#define FMF_NO_EMPTY_ITEM 0x01
#define FMF_NO_PROGRAM_GROUPS 0x04
typedef
void
(
CALLBACK
*
LPFNFMCALLBACK
)(
LPCITEMIDLIST
pidlFolder
,
LPCITEMIDLIST
pidlFile
);
/* FileMenu_AppendItem lpszText */
#define FM_SEPARATOR (LPCSTR)1
#define FM_BLANK_ICON -1
#define FM_DEFAULT_HEIGHT 0
/* fixme: move to ShellApi.h */
#define ABM_NEW 0x00000000
#define ABM_REMOVE 0x00000001
#define ABM_QUERYPOS 0x00000002
#define ABM_SETPOS 0x00000003
#define ABM_GETSTATE 0x00000004
#define ABM_GETTASKBARPOS 0x00000005
#define ABM_ACTIVATE 0x00000006
#define ABM_GETAUTOHIDEBAR 0x00000007
#define ABM_SETAUTOHIDEBAR 0x00000008
#define ABM_WINDOWPOSCHANGED 0x00000009
#define ABS_AUTOHIDE 0x00000001
#define ABS_ALWAYSONTOP 0x00000002
#undef PURE
#undef FAR
#undef THIS
...
...
relay32/shell32.spec
View file @
7c6cc49c
...
...
@@ -109,28 +109,28 @@ init Shell32LibMain
101 stub DragQueryFileAorW # exported by name
102 stdcall SHCoCreateInstance(ptr ptr long ptr ptr) SHCoCreateInstance
103 stdcall SignalFileOpen(long) SignalFileOpen
104 st
ub
FileMenu_DeleteAllItems
105 st
ub
FileMenu_DrawItem
106 st
ub
FileMenu_FindSubMenuByPidl
107 st
ub
FileMenu_GetLastSelectedItemPidls
108 st
ub
FileMenu_HandleMenuChar
104 st
dcall FileMenu_DeleteAllItems(long)
FileMenu_DeleteAllItems
105 st
dcall FileMenu_DrawItem(long ptr)
FileMenu_DrawItem
106 st
dcall FileMenu_FindSubMenuByPidl(long ptr)
FileMenu_FindSubMenuByPidl
107 st
dcall FileMenu_GetLastSelectedItemPidls(long ptr ptr)
FileMenu_GetLastSelectedItemPidls
108 st
dcall FileMenu_HandleMenuChar(long long)
FileMenu_HandleMenuChar
109 stdcall FileMenu_InitMenuPopup (long) FileMenu_InitMenuPopup
110 st
ub
FileMenu_InsertUsingPidl
111 st
ub
FileMenu_Invalidate
112 st
ub
FileMenu_MeasureItem
113 st
ub
FileMenu_ReplaceUsingPidl
110 st
dcall FileMenu_InsertUsingPidl (long long ptr long long ptr)
FileMenu_InsertUsingPidl
111 st
dcall FileMenu_Invalidate (long)
FileMenu_Invalidate
112 st
dcall FileMenu_MeasureItem(long ptr)
FileMenu_MeasureItem
113 st
dcall FileMenu_ReplaceUsingPidl (long long ptr long ptr)
FileMenu_ReplaceUsingPidl
114 stdcall FileMenu_Create (long long long long long) FileMenu_Create
115 st
ub FileMenu_AppendItem
115 st
dcall FileMenu_AppendItem (long ptr long long long long) FileMenu_AppendItemAW
116 stdcall FileMenu_TrackPopupMenuEx (long long long long long long) FileMenu_TrackPopupMenuEx
117 st
ub
FileMenu_DeleteItemByCmd
117 st
dcall FileMenu_DeleteItemByCmd(long long)
FileMenu_DeleteItemByCmd
118 stdcall FileMenu_Destroy (long) FileMenu_Destroy
119 stdcall IsLFNDrive(str) IsLFNDriveA
120 st
ub
FileMenu_AbortInitMenu
120 st
dcall FileMenu_AbortInitMenu ()
FileMenu_AbortInitMenu
121 stdcall SHFlushClipboard () SHFlushClipboard
122 stdcall RunDLL_CallEntry16 (long long long long long) RunDLL_CallEntry16 #name wrong?
123 stdcall SHFreeUnusedLibraries () SHFreeUnusedLibraries
124 st
ub
FileMenu_AppendFilesForPidl
125 st
ub
FileMenu_AddFilesForPidl
124 st
dcall FileMenu_AppendFilesForPidl(long ptr long)
FileMenu_AppendFilesForPidl
125 st
dcall FileMenu_AddFilesForPidl(long long long ptr long long ptr)
FileMenu_AddFilesForPidl
126 stdcall SHOutOfMemoryMessageBox (long long long) SHOutOfMemoryMessageBox
127 stdcall SHWinHelp (long long long long) SHWinHelp
128 stdcall DllGetClassObject(long long ptr) SHELL32_DllGetClassObject
...
...
@@ -145,13 +145,13 @@ init Shell32LibMain
137 stdcall DAD_ShowDragImage (long) DAD_ShowDragImage
138 stub DuplicateIcon # exported by name
139 stub Desktop_UpdateBriefcaseOnEvent
140 st
ub
FileMenu_DeleteItemByIndex
141 st
ub
FileMenu_DeleteItemByFirstID
142 st
ub
FileMenu_DeleteSeparator
143 st
ub
FileMenu_EnableItemByCmd
144 st
ub
FileMenu_GetItemExtent
140 st
dcall FileMenu_DeleteItemByIndex(long long)
FileMenu_DeleteItemByIndex
141 st
dcall FileMenu_DeleteItemByFirstID(long long)
FileMenu_DeleteItemByFirstID
142 st
dcall FileMenu_DeleteSeparator(long)
FileMenu_DeleteSeparator
143 st
dcall FileMenu_EnableItemByCmd(long long long)
FileMenu_EnableItemByCmd
144 st
dcall FileMenu_GetItemExtent (long long)
FileMenu_GetItemExtent
145 stdcall PathFindOnPath (ptr ptr) PathFindOnPathAW
146 st
ub
RLBuildListOfPaths
146 st
dcall RLBuildListOfPaths()
RLBuildListOfPaths
147 stdcall SHCLSIDFromString(long long) SHCLSIDFromString
148 stdcall ExtractAssociatedIconA(long ptr long) ExtractAssociatedIconA # exported by name
149 stdcall SHFind_InitMenuPopup(long long long long) SHFind_InitMenuPopup
...
...
@@ -168,7 +168,7 @@ init Shell32LibMain
160 stub SHNetConnectionDialog
161 stdcall SHRunControlPanel (long long) SHRunControlPanel
162 stdcall SHSimpleIDListFromPath (ptr) SHSimpleIDListFromPathAW
163 st
ub
StrToOleStr
163 st
dcall StrToOleStr (wstr str)
StrToOleStr
164 stub Win32DeleteFile
165 stdcall SHCreateDirectory(long long) SHCreateDirectory
166 stub CallCPLEntry16
...
...
@@ -375,5 +375,16 @@ init Shell32LibMain
1217 stub FOOBAR1217 # no joke! This is the real name!!
# later additions ... FIXME: incorrect ordinals
1218 stdcall SHGetSpecialFolderPathA(long ptr long long) SHGetSpecialFolderPathA
1219 stub DoEnvironmentSubstW
# win 98 uses 2...330, 505..511, 520..526, 640..654, 660, 680, 700..707, 711
# win98:201
1220 stdcall DllGetVersion (ptr) SHELL32_DllGetVersion
# win98:292
1221 stdcall SHGetSpecialFolderPathA(long ptr long long) SHGetSpecialFolderPathA
# win98:293
1222 stub DoEnvironmentSubstA
# win98:204
1223 stub DoEnvironmentSubstW
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment