Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
wine
Manage
Activity
Members
Labels
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Terraform modules
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Herman Semenov
wine
Commits
5d288771
Commit
5d288771
authored
9 years ago
by
Nikolay Sivov
Committed by
Alexandre Julliard
9 years ago
Browse files
Options
Downloads
Patches
Plain Diff
shell32: Update to IShellView3.
parent
f57b5ea2
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
dlls/shell32/shlview.c
+175
-232
175 additions, 232 deletions
dlls/shell32/shlview.c
include/shobjidl.idl
+29
-0
29 additions, 0 deletions
include/shobjidl.idl
with
204 additions
and
232 deletions
dlls/shell32/shlview.c
+
175
−
232
View file @
5d288771
...
...
@@ -78,7 +78,7 @@ typedef struct
typedef
struct
{
IShellView
2
IShellView
2
_iface
;
IShellView
3
IShellView
3
_iface
;
IOleCommandTarget
IOleCommandTarget_iface
;
IDropTarget
IDropTarget_iface
;
IDropSource
IDropSource_iface
;
...
...
@@ -112,18 +112,9 @@ typedef struct
POINT
ptLastMousePos
;
/* Mouse position at last DragOver call */
}
IShellViewImpl
;
static
const
IShellView2Vtbl
svvt
;
static
const
IOleCommandTargetVtbl
ctvt
;
static
const
IDropTargetVtbl
dtvt
;
static
const
IDropSourceVtbl
dsvt
;
static
const
IViewObjectVtbl
vovt
;
static
const
IFolderViewVtbl
fviewvt
;
static
const
IShellFolderViewVtbl
shellfolderviewvt
;
static
const
IShellFolderViewDual3Vtbl
shellfolderviewdualvtbl
;
static
inline
IShellViewImpl
*
impl_from_IShellView2
(
IShellView2
*
iface
)
static
inline
IShellViewImpl
*
impl_from_IShellView3
(
IShellView3
*
iface
)
{
return
CONTAINING_RECORD
(
iface
,
IShellViewImpl
,
IShellView
2
_iface
);
return
CONTAINING_RECORD
(
iface
,
IShellViewImpl
,
IShellView
3
_iface
);
}
static
inline
IShellViewImpl
*
impl_from_IOleCommandTarget
(
IOleCommandTarget
*
iface
)
...
...
@@ -205,37 +196,6 @@ static const MYTOOLINFO Tools[] =
typedef
void
(
CALLBACK
*
PFNSHGETSETTINGSPROC
)(
LPSHELLFLAGSTATE
lpsfs
,
DWORD
dwMask
);
/**********************************************************
* IShellView_Constructor
*/
IShellView
*
IShellView_Constructor
(
IShellFolder
*
pFolder
)
{
IShellViewImpl
*
sv
;
sv
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
IShellViewImpl
));
sv
->
ref
=
1
;
sv
->
IShellView2_iface
.
lpVtbl
=
&
svvt
;
sv
->
IOleCommandTarget_iface
.
lpVtbl
=
&
ctvt
;
sv
->
IDropTarget_iface
.
lpVtbl
=
&
dtvt
;
sv
->
IDropSource_iface
.
lpVtbl
=
&
dsvt
;
sv
->
IViewObject_iface
.
lpVtbl
=
&
vovt
;
sv
->
IFolderView_iface
.
lpVtbl
=
&
fviewvt
;
sv
->
IShellFolderView_iface
.
lpVtbl
=
&
shellfolderviewvt
;
sv
->
IShellFolderViewDual3_iface
.
lpVtbl
=
&
shellfolderviewdualvtbl
;
sv
->
pSFParent
=
pFolder
;
if
(
pFolder
)
IShellFolder_AddRef
(
pFolder
);
IShellFolder_QueryInterface
(
sv
->
pSFParent
,
&
IID_IShellFolder2
,
(
LPVOID
*
)
&
sv
->
pSF2Parent
);
sv
->
pCurDropTarget
=
NULL
;
sv
->
pCurDataObject
=
NULL
;
sv
->
iDragOverItem
=
0
;
sv
->
cScrollDelay
=
0
;
sv
->
ptLastMousePos
.
x
=
0
;
sv
->
ptLastMousePos
.
y
=
0
;
TRACE
(
"(%p)->(%p)
\n
"
,
sv
,
pFolder
);
return
(
IShellView
*
)
sv
;
}
/**********************************************************
*
* ##### helperfunctions for communication with ICommDlgBrowser #####
...
...
@@ -712,7 +672,7 @@ static HRESULT ShellView_FillList(IShellViewImpl *This)
*/
static
LRESULT
ShellView_OnCreate
(
IShellViewImpl
*
This
)
{
IShellView
2
*
iface
=
&
This
->
IShellView
2
_iface
;
IShellView
3
*
iface
=
&
This
->
IShellView
3
_iface
;
static
const
WCHAR
accel_nameW
[]
=
{
's'
,
'h'
,
'v'
,
'_'
,
'a'
,
'c'
,
'c'
,
'e'
,
'l'
,
0
};
IPersistFolder2
*
ppf2
;
IDropTarget
*
pdt
;
...
...
@@ -726,7 +686,7 @@ static LRESULT ShellView_OnCreate(IShellViewImpl *This)
ShellView_FillList
(
This
);
}
hr
=
IShellView
2
_QueryInterface
(
iface
,
&
IID_IDropTarget
,
(
LPVOID
*
)
&
pdt
);
hr
=
IShellView
3
_QueryInterface
(
iface
,
&
IID_IDropTarget
,
(
void
*
*
)
&
pdt
);
if
(
hr
==
S_OK
)
{
RegisterDragDrop
(
This
->
hWnd
,
pdt
);
...
...
@@ -1752,19 +1712,20 @@ static LRESULT CALLBACK ShellView_WndProc(HWND hWnd, UINT uMessage, WPARAM wPara
**********************************************************
* IShellView_QueryInterface
*/
static
HRESULT
WINAPI
IShellView_fnQueryInterface
(
IShellView
2
*
iface
,
REFIID
riid
,
void
**
ppvObj
)
static
HRESULT
WINAPI
IShellView_fnQueryInterface
(
IShellView
3
*
iface
,
REFIID
riid
,
void
**
ppvObj
)
{
IShellViewImpl
*
This
=
impl_from_IShellView
2
(
iface
);
IShellViewImpl
*
This
=
impl_from_IShellView
3
(
iface
);
TRACE
(
"(%p)->(
\n\t
IID:
\t
%s,%p)
\n
"
,
This
,
debugstr_guid
(
riid
),
ppvObj
);
TRACE
(
"(%p)->(%s,
%p)
\n
"
,
This
,
debugstr_guid
(
riid
),
ppvObj
);
*
ppvObj
=
NULL
;
if
(
IsEqualIID
(
riid
,
&
IID_IUnknown
)
||
IsEqualIID
(
riid
,
&
IID_IShellView
)
||
IsEqualIID
(
riid
,
&
IID_IShellView2
))
IsEqualIID
(
riid
,
&
IID_IShellView2
)
||
IsEqualIID
(
riid
,
&
IID_IShellView3
))
{
*
ppvObj
=
&
This
->
IShellView
2
_iface
;
*
ppvObj
=
&
This
->
IShellView
3
_iface
;
}
else
if
(
IsEqualIID
(
riid
,
&
IID_IShellFolderView
))
{
...
...
@@ -1804,21 +1765,21 @@ static HRESULT WINAPI IShellView_fnQueryInterface(IShellView2 *iface, REFIID rii
/**********************************************************
* IShellView_AddRef
*/
static
ULONG
WINAPI
IShellView_fnAddRef
(
IShellView
2
*
iface
)
static
ULONG
WINAPI
IShellView_fnAddRef
(
IShellView
3
*
iface
)
{
IShellViewImpl
*
This
=
impl_from_IShellView
2
(
iface
);
ULONG
refCount
=
InterlockedIncrement
(
&
This
->
ref
);
IShellViewImpl
*
This
=
impl_from_IShellView
3
(
iface
);
ULONG
refCount
=
InterlockedIncrement
(
&
This
->
ref
);
TRACE
(
"(%p)->(count=%u)
\n
"
,
This
,
refCount
-
1
);
TRACE
(
"(%p)->(count=%u)
\n
"
,
This
,
refCount
-
1
);
return
refCount
;
return
refCount
;
}
/**********************************************************
* IShellView_Release
*/
static
ULONG
WINAPI
IShellView_fnRelease
(
IShellView
2
*
iface
)
static
ULONG
WINAPI
IShellView_fnRelease
(
IShellView
3
*
iface
)
{
IShellViewImpl
*
This
=
impl_from_IShellView
2
(
iface
);
IShellViewImpl
*
This
=
impl_from_IShellView
3
(
iface
);
ULONG
refCount
=
InterlockedDecrement
(
&
This
->
ref
);
TRACE
(
"(%p)->(count=%i)
\n
"
,
This
,
refCount
+
1
);
...
...
@@ -1848,20 +1809,19 @@ static ULONG WINAPI IShellView_fnRelease(IShellView2 *iface)
/**********************************************************
* ShellView_GetWindow
*/
static
HRESULT
WINAPI
IShellView_fnGetWindow
(
IShellView
2
*
iface
,
HWND
*
phWnd
)
static
HRESULT
WINAPI
IShellView_fnGetWindow
(
IShellView
3
*
iface
,
HWND
*
phWnd
)
{
IShellViewImpl
*
This
=
impl_from_IShellView2
(
iface
);
TRACE
(
"(%p)
\n
"
,
This
);
IShellViewImpl
*
This
=
impl_from_IShellView3
(
iface
);
*
phWnd
=
This
->
hWnd
;
TRACE
(
"(%p)
\n
"
,
This
)
;
return
S_OK
;
*
phWnd
=
This
->
hWnd
;
return
S_OK
;
}
static
HRESULT
WINAPI
IShellView_fnContextSensitiveHelp
(
IShellView
2
*
iface
,
BOOL
mode
)
static
HRESULT
WINAPI
IShellView_fnContextSensitiveHelp
(
IShellView
3
*
iface
,
BOOL
mode
)
{
IShellViewImpl
*
This
=
impl_from_IShellView
2
(
iface
);
IShellViewImpl
*
This
=
impl_from_IShellView
3
(
iface
);
TRACE
(
"(%p)->(%d)
\n
"
,
This
,
mode
);
return
E_NOTIMPL
;
}
...
...
@@ -1872,7 +1832,7 @@ static HRESULT WINAPI IShellView_fnContextSensitiveHelp(IShellView2 *iface, BOOL
* FIXME:
* use the accel functions
*/
static
HRESULT
WINAPI
IShellView_fnTranslateAccelerator
(
IShellView
2
*
iface
,
LP
MSG
lpmsg
)
static
HRESULT
WINAPI
IShellView_fnTranslateAccelerator
(
IShellView
3
*
iface
,
MSG
*
lpmsg
)
{
#if 0
IShellViewImpl *This = (IShellViewImpl *)iface;
...
...
@@ -1887,18 +1847,18 @@ static HRESULT WINAPI IShellView_fnTranslateAccelerator(IShellView2 * iface,LPMS
return
S_FALSE
;
/* not handled */
}
static
HRESULT
WINAPI
IShellView_fnEnableModeless
(
IShellView
2
*
iface
,
BOOL
fEnable
)
static
HRESULT
WINAPI
IShellView_fnEnableModeless
(
IShellView
3
*
iface
,
BOOL
fEnable
)
{
IShellViewImpl
*
This
=
impl_from_IShellView
2
(
iface
);
IShellViewImpl
*
This
=
impl_from_IShellView
3
(
iface
);
FIXME
(
"(%p) stub
\n
"
,
This
);
FIXME
(
"(%p) stub
\n
"
,
This
);
return
E_NOTIMPL
;
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
IShellView_fnUIActivate
(
IShellView
2
*
iface
,
UINT
uState
)
static
HRESULT
WINAPI
IShellView_fnUIActivate
(
IShellView
3
*
iface
,
UINT
uState
)
{
IShellViewImpl
*
This
=
impl_from_IShellView
2
(
iface
);
IShellViewImpl
*
This
=
impl_from_IShellView
3
(
iface
);
/*
CHAR szName[MAX_PATH];
...
...
@@ -1939,19 +1899,19 @@ static HRESULT WINAPI IShellView_fnUIActivate(IShellView2 *iface, UINT uState)
return
S_OK
;
}
static
HRESULT
WINAPI
IShellView_fnRefresh
(
IShellView
2
*
iface
)
static
HRESULT
WINAPI
IShellView_fnRefresh
(
IShellView
3
*
iface
)
{
IShellViewImpl
*
This
=
impl_from_IShellView
2
(
iface
);
IShellViewImpl
*
This
=
impl_from_IShellView
3
(
iface
);
TRACE
(
"(%p)
\n
"
,
This
);
TRACE
(
"(%p)
\n
"
,
This
);
SendMessageW
(
This
->
hWndList
,
LVM_DELETEALLITEMS
,
0
,
0
);
ShellView_FillList
(
This
);
SendMessageW
(
This
->
hWndList
,
LVM_DELETEALLITEMS
,
0
,
0
);
ShellView_FillList
(
This
);
return
S_OK
;
return
S_OK
;
}
static
HRESULT
WINAPI
IShellView_fnCreateViewWindow
(
IShellView
2
*
iface
,
IShellView
*
lpPrevView
,
static
HRESULT
WINAPI
IShellView_fnCreateViewWindow
(
IShellView
3
*
iface
,
IShellView
*
lpPrevView
,
LPCFOLDERSETTINGS
lpfs
,
IShellBrowser
*
psb
,
RECT
*
prcView
,
HWND
*
phWnd
)
{
HRESULT
hr
;
...
...
@@ -1966,25 +1926,23 @@ static HRESULT WINAPI IShellView_fnCreateViewWindow(IShellView2 *iface, IShellVi
TRACE
(
"(%p) Forwarding to CreateViewWindow2
\n
"
,
iface
);
hr
=
IShellView
2
_CreateViewWindow2
(
iface
,
&
view_params
);
hr
=
IShellView
3
_CreateViewWindow2
(
iface
,
&
view_params
);
*
phWnd
=
view_params
.
hwndView
;
return
hr
;
}
static
HRESULT
WINAPI
IShellView_fnDestroyViewWindow
(
IShellView
2
*
iface
)
static
HRESULT
WINAPI
IShellView_fnDestroyViewWindow
(
IShellView
3
*
iface
)
{
IShellViewImpl
*
This
=
impl_from_IShellView
2
(
iface
);
IShellViewImpl
*
This
=
impl_from_IShellView
3
(
iface
);
TRACE
(
"(%p)
\n
"
,
This
);
/*Make absolutely sure all our UI is cleaned up.*/
IShellView_UIActivate
(
(
IShellView
*
)
This
,
SVUIA_DEACTIVATE
);
IShellView
3
_UIActivate
(
iface
,
SVUIA_DEACTIVATE
);
if
(
This
->
hMenu
)
{
DestroyMenu
(
This
->
hMenu
);
}
DestroyWindow
(
This
->
hWnd
);
if
(
This
->
pShellBrowser
)
IShellBrowser_Release
(
This
->
pShellBrowser
);
...
...
@@ -1994,41 +1952,36 @@ static HRESULT WINAPI IShellView_fnDestroyViewWindow(IShellView2 *iface)
return
S_OK
;
}
static
HRESULT
WINAPI
IShellView_fnGetCurrentInfo
(
IShellView
2
*
iface
,
LPFOLDERSETTINGS
lpfs
)
static
HRESULT
WINAPI
IShellView_fnGetCurrentInfo
(
IShellView
3
*
iface
,
LPFOLDERSETTINGS
lpfs
)
{
IShellViewImpl
*
This
=
impl_from_IShellView2
(
iface
);
TRACE
(
"(%p)->(%p) vmode=%x flags=%x
\n
"
,
This
,
lpfs
,
This
->
FolderSettings
.
ViewMode
,
This
->
FolderSettings
.
fFlags
);
IShellViewImpl
*
This
=
impl_from_IShellView3
(
iface
);
if
(
!
lpfs
)
return
E_INVALIDARG
;
TRACE
(
"(%p)->(%p) vmode=%x flags=%x
\n
"
,
This
,
lpfs
,
This
->
FolderSettings
.
ViewMode
,
This
->
FolderSettings
.
fFlags
);
*
lpfs
=
This
->
FolderSettings
;
return
S_OK
;
if
(
!
lpfs
)
return
E_INVALIDARG
;
*
lpfs
=
This
->
FolderSettings
;
return
S_OK
;
}
static
HRESULT
WINAPI
IShellView_fnAddPropertySheetPages
(
IShellView
2
*
iface
,
DWORD
dwReserved
,
static
HRESULT
WINAPI
IShellView_fnAddPropertySheetPages
(
IShellView
3
*
iface
,
DWORD
dwReserved
,
LPFNADDPROPSHEETPAGE
lpfn
,
LPARAM
lparam
)
{
IShellViewImpl
*
This
=
impl_from_IShellView2
(
iface
);
FIXME
(
"(%p) stub
\n
"
,
This
);
return
E_NOTIMPL
;
IShellViewImpl
*
This
=
impl_from_IShellView3
(
iface
);
FIXME
(
"(%p) stub
\n
"
,
This
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
IShellView_fnSaveViewState
(
IShellView
2
*
iface
)
static
HRESULT
WINAPI
IShellView_fnSaveViewState
(
IShellView
3
*
iface
)
{
IShellViewImpl
*
This
=
impl_from_IShellView2
(
iface
);
FIXME
(
"(%p) stub
\n
"
,
This
);
return
S_OK
;
IShellViewImpl
*
This
=
impl_from_IShellView3
(
iface
);
FIXME
(
"(%p) stub
\n
"
,
This
);
return
S_OK
;
}
static
HRESULT
WINAPI
IShellView_fnSelectItem
(
IShellView
2
*
iface
,
LPCITEMIDLIST
pidl
,
UINT
flags
)
static
HRESULT
WINAPI
IShellView_fnSelectItem
(
IShellView
3
*
iface
,
LPCITEMIDLIST
pidl
,
UINT
flags
)
{
IShellViewImpl
*
This
=
impl_from_IShellView
2
(
iface
);
IShellViewImpl
*
This
=
impl_from_IShellView
3
(
iface
);
IFolderView
*
view
=
&
This
->
IFolderView_iface
;
int
i
;
...
...
@@ -2040,10 +1993,10 @@ static HRESULT WINAPI IShellView_fnSelectItem(IShellView2 *iface, LPCITEMIDLIST
return
IFolderView_SelectItem
(
view
,
i
,
flags
);
}
static
HRESULT
WINAPI
IShellView_fnGetItemObject
(
IShellView
2
*
iface
,
UINT
uItem
,
REFIID
riid
,
static
HRESULT
WINAPI
IShellView_fnGetItemObject
(
IShellView
3
*
iface
,
UINT
uItem
,
REFIID
riid
,
void
**
ppvOut
)
{
IShellViewImpl
*
This
=
impl_from_IShellView
2
(
iface
);
IShellViewImpl
*
This
=
impl_from_IShellView
3
(
iface
);
HRESULT
hr
=
E_NOINTERFACE
;
TRACE
(
"(%p)->(0x%08x, %s, %p)
\n
"
,
This
,
uItem
,
debugstr_guid
(
riid
),
ppvOut
);
...
...
@@ -2079,16 +2032,15 @@ static HRESULT WINAPI IShellView_fnGetItemObject(IShellView2 *iface, UINT uItem,
return
hr
;
}
static
HRESULT
WINAPI
IShellView2_fnGetView
(
IShellView
2
*
iface
,
SHELLVIEWID
*
view_guid
,
ULONG
view_type
)
static
HRESULT
WINAPI
IShellView2_fnGetView
(
IShellView
3
*
iface
,
SHELLVIEWID
*
view_guid
,
ULONG
view_type
)
{
FIXME
(
"(%p)->(
view_guid %s, view_type
%#x) stub!
\n
"
,
iface
,
debugstr_guid
(
view_guid
),
view_type
);
FIXME
(
"(%p)->(
%s,
%#x) stub!
\n
"
,
iface
,
debugstr_guid
(
view_guid
),
view_type
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
IShellView2_fnCreateViewWindow2
(
IShellView2
*
iface
,
LPSV2CVW2_PARAMS
view_params
)
static
HRESULT
WINAPI
IShellView2_fnCreateViewWindow2
(
IShellView3
*
iface
,
SV2CVW2_PARAMS
*
view_params
)
{
IShellViewImpl
*
This
=
impl_from_IShellView
2
(
iface
);
IShellViewImpl
*
This
=
impl_from_IShellView
3
(
iface
);
INITCOMMONCONTROLSEX
icex
;
WNDCLASSW
wc
;
HRESULT
hr
;
...
...
@@ -2185,22 +2137,22 @@ static HRESULT WINAPI IShellView2_fnCreateViewWindow2(IShellView2 *iface,
return
S_OK
;
}
static
HRESULT
WINAPI
IShellView2_fnHandleRename
(
IShellView
2
*
iface
,
LPCITEMIDLIST
new_pidl
)
static
HRESULT
WINAPI
IShellView2_fnHandleRename
(
IShellView
3
*
iface
,
LPCITEMIDLIST
new_pidl
)
{
FIXME
(
"(%p)->(new_pidl %p) stub!
\n
"
,
iface
,
new_pidl
);
return
E_NOTIMPL
;
}
static
HRESULT
WINAPI
IShellView2_fnSelectAndPositionItem
(
IShellView
2
*
iface
,
LPCITEMIDLIST
item
,
static
HRESULT
WINAPI
IShellView2_fnSelectAndPositionItem
(
IShellView
3
*
iface
,
LPCITEMIDLIST
item
,
UINT
flags
,
POINT
*
point
)
{
IShellViewImpl
*
This
=
impl_from_IShellView
2
(
iface
);
IShellViewImpl
*
This
=
impl_from_IShellView
3
(
iface
);
IFolderView
*
view
;
HRESULT
hr
;
TRACE
(
"(%p)->(item %p, flags %#x, point %p)
\n
"
,
This
,
item
,
flags
,
point
);
hr
=
IShellView
2
_QueryInterface
(
iface
,
&
IID_IFolderView
,
(
void
**
)
&
view
);
hr
=
IShellView
3
_QueryInterface
(
iface
,
&
IID_IFolderView
,
(
void
**
)
&
view
);
if
(
hr
==
S_OK
)
{
hr
=
IFolderView_SelectAndPositionItems
(
view
,
1
,
&
item
,
point
,
flags
);
...
...
@@ -2210,7 +2162,17 @@ static HRESULT WINAPI IShellView2_fnSelectAndPositionItem(IShellView2 *iface, LP
return
hr
;
}
static
const
IShellView2Vtbl
svvt
=
static
HRESULT
WINAPI
IShellView3_fnCreateViewWindow3
(
IShellView3
*
iface
,
IShellBrowser
*
owner
,
IShellView
*
prev_view
,
SV3CVW3_FLAGS
view_flags
,
FOLDERFLAGS
mask
,
FOLDERFLAGS
flags
,
FOLDERVIEWMODE
mode
,
const
SHELLVIEWID
*
view_id
,
const
RECT
*
rect
,
HWND
*
hwnd
)
{
IShellViewImpl
*
This
=
impl_from_IShellView3
(
iface
);
FIXME
(
"(%p)->(%p %p 0x%08x 0x%08x 0x%08x %d %s %s %p): stub
\n
"
,
This
,
owner
,
prev_view
,
view_flags
,
mask
,
flags
,
mode
,
debugstr_guid
(
view_id
),
wine_dbgstr_rect
(
rect
),
hwnd
);
return
E_NOTIMPL
;
}
static
const
IShellView3Vtbl
shellviewvtbl
=
{
IShellView_fnQueryInterface
,
IShellView_fnAddRef
,
...
...
@@ -2232,42 +2194,35 @@ static const IShellView2Vtbl svvt =
IShellView2_fnCreateViewWindow2
,
IShellView2_fnHandleRename
,
IShellView2_fnSelectAndPositionItem
,
IShellView3_fnCreateViewWindow3
};
/**********************************************************
* ISVOleCmdTarget_QueryInterface (IUnknown)
*/
static
HRESULT
WINAPI
ISVOleCmdTarget_QueryInterface
(
IOleCommandTarget
*
iface
,
REFIID
iid
,
LPVOID
*
ppvObj
)
static
HRESULT
WINAPI
ISVOleCmdTarget_QueryInterface
(
IOleCommandTarget
*
iface
,
REFIID
iid
,
void
**
ppvObj
)
{
IShellViewImpl
*
This
=
impl_from_IOleCommandTarget
(
iface
);
return
IShellView2_QueryInterface
(
&
This
->
IShellView2_iface
,
iid
,
ppvObj
);
IShellViewImpl
*
This
=
impl_from_IOleCommandTarget
(
iface
);
return
IShellView3_QueryInterface
(
&
This
->
IShellView3_iface
,
iid
,
ppvObj
);
}
/**********************************************************
* ISVOleCmdTarget_AddRef (IUnknown)
*/
static
ULONG
WINAPI
ISVOleCmdTarget_AddRef
(
IOleCommandTarget
*
iface
)
static
ULONG
WINAPI
ISVOleCmdTarget_AddRef
(
IOleCommandTarget
*
iface
)
{
IShellViewImpl
*
This
=
impl_from_IOleCommandTarget
(
iface
);
return
IShellView2_AddRef
(
&
This
->
IShellView2_iface
);
IShellViewImpl
*
This
=
impl_from_IOleCommandTarget
(
iface
);
return
IShellView3_AddRef
(
&
This
->
IShellView3_iface
);
}
/**********************************************************
* ISVOleCmdTarget_Release (IUnknown)
*/
static
ULONG
WINAPI
ISVOleCmdTarget_Release
(
IOleCommandTarget
*
iface
)
static
ULONG
WINAPI
ISVOleCmdTarget_Release
(
IOleCommandTarget
*
iface
)
{
IShellViewImpl
*
This
=
impl_from_IOleCommandTarget
(
iface
);
return
IShellView2_Release
(
&
This
->
IShellView2_iface
);
IShellViewImpl
*
This
=
impl_from_IOleCommandTarget
(
iface
);
return
IShellView3_Release
(
&
This
->
IShellView3_iface
);
}
/**********************************************************
...
...
@@ -2328,7 +2283,7 @@ static HRESULT WINAPI ISVOleCmdTarget_Exec(
return
OLECMDERR_E_UNKNOWNGROUP
;
}
static
const
IOleCommandTargetVtbl
c
tvt
=
static
const
IOleCommandTargetVtbl
olecommandtarge
tvt
bl
=
{
ISVOleCmdTarget_QueryInterface
,
ISVOleCmdTarget_AddRef
,
...
...
@@ -2341,34 +2296,22 @@ static const IOleCommandTargetVtbl ctvt =
* ISVDropTarget implementation
*/
static
HRESULT
WINAPI
ISVDropTarget_QueryInterface
(
IDropTarget
*
iface
,
REFIID
riid
,
LPVOID
*
ppvObj
)
static
HRESULT
WINAPI
ISVDropTarget_QueryInterface
(
IDropTarget
*
iface
,
REFIID
riid
,
void
**
ppvObj
)
{
IShellViewImpl
*
This
=
impl_from_IDropTarget
(
iface
);
TRACE
(
"(%p)->(
\n\t
IID:
\t
%s,%p)
\n
"
,
This
,
debugstr_guid
(
riid
),
ppvObj
);
return
IShellView2_QueryInterface
(
&
This
->
IShellView2_iface
,
riid
,
ppvObj
);
IShellViewImpl
*
This
=
impl_from_IDropTarget
(
iface
);
return
IShellView3_QueryInterface
(
&
This
->
IShellView3_iface
,
riid
,
ppvObj
);
}
static
ULONG
WINAPI
ISVDropTarget_AddRef
(
IDropTarget
*
iface
)
static
ULONG
WINAPI
ISVDropTarget_AddRef
(
IDropTarget
*
iface
)
{
IShellViewImpl
*
This
=
impl_from_IDropTarget
(
iface
);
TRACE
(
"(%p)->(count=%u)
\n
"
,
This
,
This
->
ref
);
return
IShellView2_AddRef
(
&
This
->
IShellView2_iface
);
IShellViewImpl
*
This
=
impl_from_IDropTarget
(
iface
);
return
IShellView3_AddRef
(
&
This
->
IShellView3_iface
);
}
static
ULONG
WINAPI
ISVDropTarget_Release
(
IDropTarget
*
iface
)
static
ULONG
WINAPI
ISVDropTarget_Release
(
IDropTarget
*
iface
)
{
IShellViewImpl
*
This
=
impl_from_IDropTarget
(
iface
);
TRACE
(
"(%p)->(count=%u)
\n
"
,
This
,
This
->
ref
);
return
IShellView2_Release
(
&
This
->
IShellView2_iface
);
IShellViewImpl
*
This
=
impl_from_IDropTarget
(
iface
);
return
IShellView3_Release
(
&
This
->
IShellView3_iface
);
}
/******************************************************************************
...
...
@@ -2516,7 +2459,7 @@ static HRESULT WINAPI ISVDropTarget_Drop(IDropTarget *iface, IDataObject* pDataO
return
S_OK
;
}
static
const
IDropTargetVtbl
dtvt
=
static
const
IDropTargetVtbl
d
roptarge
tvt
bl
=
{
ISVDropTarget_QueryInterface
,
ISVDropTarget_AddRef
,
...
...
@@ -2531,34 +2474,22 @@ static const IDropTargetVtbl dtvt =
* ISVDropSource implementation
*/
static
HRESULT
WINAPI
ISVDropSource_QueryInterface
(
IDropSource
*
iface
,
REFIID
riid
,
LPVOID
*
ppvObj
)
static
HRESULT
WINAPI
ISVDropSource_QueryInterface
(
IDropSource
*
iface
,
REFIID
riid
,
void
**
ppvObj
)
{
IShellViewImpl
*
This
=
impl_from_IDropSource
(
iface
);
TRACE
(
"(%p)->(
\n\t
IID:
\t
%s,%p)
\n
"
,
This
,
debugstr_guid
(
riid
),
ppvObj
);
return
IShellView2_QueryInterface
(
&
This
->
IShellView2_iface
,
riid
,
ppvObj
);
IShellViewImpl
*
This
=
impl_from_IDropSource
(
iface
);
return
IShellView3_QueryInterface
(
&
This
->
IShellView3_iface
,
riid
,
ppvObj
);
}
static
ULONG
WINAPI
ISVDropSource_AddRef
(
IDropSource
*
iface
)
static
ULONG
WINAPI
ISVDropSource_AddRef
(
IDropSource
*
iface
)
{
IShellViewImpl
*
This
=
impl_from_IDropSource
(
iface
);
TRACE
(
"(%p)->(count=%u)
\n
"
,
This
,
This
->
ref
);
return
IShellView2_AddRef
(
&
This
->
IShellView2_iface
);
IShellViewImpl
*
This
=
impl_from_IDropSource
(
iface
);
return
IShellView3_AddRef
(
&
This
->
IShellView3_iface
);
}
static
ULONG
WINAPI
ISVDropSource_Release
(
IDropSource
*
iface
)
static
ULONG
WINAPI
ISVDropSource_Release
(
IDropSource
*
iface
)
{
IShellViewImpl
*
This
=
impl_from_IDropSource
(
iface
);
TRACE
(
"(%p)->(count=%u)
\n
"
,
This
,
This
->
ref
);
return
IShellView2_Release
(
&
This
->
IShellView2_iface
);
IShellViewImpl
*
This
=
impl_from_IDropSource
(
iface
);
return
IShellView3_Release
(
&
This
->
IShellView3_iface
);
}
static
HRESULT
WINAPI
ISVDropSource_QueryContinueDrag
(
...
...
@@ -2587,7 +2518,7 @@ static HRESULT WINAPI ISVDropSource_GiveFeedback(
return
DRAGDROP_S_USEDEFAULTCURSORS
;
}
static
const
IDropSourceVtbl
d
svt
=
static
const
IDropSourceVtbl
d
ropsourcevtbl
=
{
ISVDropSource_QueryInterface
,
ISVDropSource_AddRef
,
...
...
@@ -2599,34 +2530,22 @@ static const IDropSourceVtbl dsvt =
* ISVViewObject implementation
*/
static
HRESULT
WINAPI
ISVViewObject_QueryInterface
(
IViewObject
*
iface
,
REFIID
riid
,
LPVOID
*
ppvObj
)
static
HRESULT
WINAPI
ISVViewObject_QueryInterface
(
IViewObject
*
iface
,
REFIID
riid
,
void
**
ppvObj
)
{
IShellViewImpl
*
This
=
impl_from_IViewObject
(
iface
);
TRACE
(
"(%p)->(
\n\t
IID:
\t
%s,%p)
\n
"
,
This
,
debugstr_guid
(
riid
),
ppvObj
);
return
IShellView2_QueryInterface
(
&
This
->
IShellView2_iface
,
riid
,
ppvObj
);
IShellViewImpl
*
This
=
impl_from_IViewObject
(
iface
);
return
IShellView3_QueryInterface
(
&
This
->
IShellView3_iface
,
riid
,
ppvObj
);
}
static
ULONG
WINAPI
ISVViewObject_AddRef
(
IViewObject
*
iface
)
static
ULONG
WINAPI
ISVViewObject_AddRef
(
IViewObject
*
iface
)
{
IShellViewImpl
*
This
=
impl_from_IViewObject
(
iface
);
TRACE
(
"(%p)->(count=%u)
\n
"
,
This
,
This
->
ref
);
return
IShellView2_AddRef
(
&
This
->
IShellView2_iface
);
IShellViewImpl
*
This
=
impl_from_IViewObject
(
iface
);
return
IShellView3_AddRef
(
&
This
->
IShellView3_iface
);
}
static
ULONG
WINAPI
ISVViewObject_Release
(
IViewObject
*
iface
)
static
ULONG
WINAPI
ISVViewObject_Release
(
IViewObject
*
iface
)
{
IShellViewImpl
*
This
=
impl_from_IViewObject
(
iface
);
TRACE
(
"(%p)->(count=%u)
\n
"
,
This
,
This
->
ref
);
return
IShellView2_Release
(
&
This
->
IShellView2_iface
);
IShellViewImpl
*
This
=
impl_from_IViewObject
(
iface
);
return
IShellView3_Release
(
&
This
->
IShellView3_iface
);
}
static
HRESULT
WINAPI
ISVViewObject_Draw
(
...
...
@@ -2736,7 +2655,7 @@ static HRESULT WINAPI ISVViewObject_GetAdvise(
}
static
const
IViewObjectVtbl
v
ovt
=
static
const
IViewObjectVtbl
v
iewobjectvtbl
=
{
ISVViewObject_QueryInterface
,
ISVViewObject_AddRef
,
...
...
@@ -2750,28 +2669,22 @@ static const IViewObjectVtbl vovt =
};
/* IFolderView */
static
HRESULT
WINAPI
IFView_QueryInterface
(
IFolderView
*
iface
,
REFIID
riid
,
LPVOID
*
ppvObj
)
static
HRESULT
WINAPI
IFView_QueryInterface
(
IFolderView
*
iface
,
REFIID
riid
,
void
**
ppvObj
)
{
IShellViewImpl
*
This
=
impl_from_IFolderView
(
iface
);
TRACE
(
"(%p)->(IID:%s,%p)
\n
"
,
This
,
debugstr_guid
(
riid
),
ppvObj
);
return
IShellView2_QueryInterface
(
&
This
->
IShellView2_iface
,
riid
,
ppvObj
);
IShellViewImpl
*
This
=
impl_from_IFolderView
(
iface
);
return
IShellView3_QueryInterface
(
&
This
->
IShellView3_iface
,
riid
,
ppvObj
);
}
static
ULONG
WINAPI
IFView_AddRef
(
IFolderView
*
iface
)
static
ULONG
WINAPI
IFView_AddRef
(
IFolderView
*
iface
)
{
IShellViewImpl
*
This
=
impl_from_IFolderView
(
iface
);
TRACE
(
"(%p)->(count=%u)
\n
"
,
This
,
This
->
ref
);
return
IShellView2_AddRef
(
&
This
->
IShellView2_iface
);
IShellViewImpl
*
This
=
impl_from_IFolderView
(
iface
);
return
IShellView3_AddRef
(
&
This
->
IShellView3_iface
);
}
static
ULONG
WINAPI
IFView_Release
(
IFolderView
*
iface
)
static
ULONG
WINAPI
IFView_Release
(
IFolderView
*
iface
)
{
IShellViewImpl
*
This
=
impl_from_IFolderView
(
iface
);
TRACE
(
"(%p)->(count=%u)
\n
"
,
This
,
This
->
ref
);
return
IShellView2_Release
(
&
This
->
IShellView2_iface
);
IShellViewImpl
*
This
=
impl_from_IFolderView
(
iface
);
return
IShellView3_Release
(
&
This
->
IShellView3_iface
);
}
static
HRESULT
WINAPI
IFView_GetCurrentViewMode
(
IFolderView
*
iface
,
UINT
*
mode
)
...
...
@@ -2973,7 +2886,7 @@ static HRESULT WINAPI IFView_SelectAndPositionItems(IFolderView *iface, UINT cid
return
E_NOTIMPL
;
}
static
const
IFolderViewVtbl
fviewvt
=
static
const
IFolderViewVtbl
f
older
viewvt
bl
=
{
IFView_QueryInterface
,
IFView_AddRef
,
...
...
@@ -2995,28 +2908,22 @@ static const IFolderViewVtbl fviewvt =
};
/* IShellFolderView */
static
HRESULT
WINAPI
IShellFolderView_fnQueryInterface
(
IShellFolderView
*
iface
,
REFIID
riid
,
LPVOID
*
ppvObj
)
static
HRESULT
WINAPI
IShellFolderView_fnQueryInterface
(
IShellFolderView
*
iface
,
REFIID
riid
,
void
**
ppvObj
)
{
IShellViewImpl
*
This
=
impl_from_IShellFolderView
(
iface
);
TRACE
(
"(%p)->(IID:%s,%p)
\n
"
,
This
,
debugstr_guid
(
riid
),
ppvObj
);
return
IShellView2_QueryInterface
(
&
This
->
IShellView2_iface
,
riid
,
ppvObj
);
return
IShellView3_QueryInterface
(
&
This
->
IShellView3_iface
,
riid
,
ppvObj
);
}
static
ULONG
WINAPI
IShellFolderView_fnAddRef
(
IShellFolderView
*
iface
)
{
IShellViewImpl
*
This
=
impl_from_IShellFolderView
(
iface
);
TRACE
(
"(%p)->(count=%u)
\n
"
,
This
,
This
->
ref
);
return
IShellView2_AddRef
(
&
This
->
IShellView2_iface
);
return
IShellView3_AddRef
(
&
This
->
IShellView3_iface
);
}
static
ULONG
WINAPI
IShellFolderView_fnRelease
(
IShellFolderView
*
iface
)
{
IShellViewImpl
*
This
=
impl_from_IShellFolderView
(
iface
);
TRACE
(
"(%p)->(count=%u)
\n
"
,
This
,
This
->
ref
);
return
IShellView2_Release
(
&
This
->
IShellView2_iface
);
return
IShellView3_Release
(
&
This
->
IShellView3_iface
);
}
static
HRESULT
WINAPI
IShellFolderView_fnRearrange
(
IShellFolderView
*
iface
,
LPARAM
sort
)
...
...
@@ -3307,7 +3214,7 @@ static HRESULT WINAPI IShellFolderView_fnSetAutomationObject(
return
E_NOTIMPL
;
}
static
const
IShellFolderViewVtbl
shellfolderviewvt
=
static
const
IShellFolderViewVtbl
shellfolderviewvt
bl
=
{
IShellFolderView_fnQueryInterface
,
IShellFolderView_fnAddRef
,
...
...
@@ -3366,13 +3273,13 @@ static HRESULT WINAPI shellfolderviewdual_QueryInterface(IShellFolderViewDual3 *
static
ULONG
WINAPI
shellfolderviewdual_AddRef
(
IShellFolderViewDual3
*
iface
)
{
IShellViewImpl
*
This
=
impl_from_IShellFolderViewDual3
(
iface
);
return
IShellView
2
_AddRef
(
&
This
->
IShellView
2
_iface
);
return
IShellView
3
_AddRef
(
&
This
->
IShellView
3
_iface
);
}
static
ULONG
WINAPI
shellfolderviewdual_Release
(
IShellFolderViewDual3
*
iface
)
{
IShellViewImpl
*
This
=
impl_from_IShellFolderViewDual3
(
iface
);
return
IShellView
2
_Release
(
&
This
->
IShellView
2
_iface
);
return
IShellView
3
_Release
(
&
This
->
IShellView
3
_iface
);
}
static
HRESULT
WINAPI
shellfolderviewdual_GetTypeInfoCount
(
IShellFolderViewDual3
*
iface
,
UINT
*
pctinfo
)
...
...
@@ -3591,3 +3498,39 @@ static const IShellFolderViewDual3Vtbl shellfolderviewdualvtbl =
shellfolderviewdual_get_IconSize
,
shellfolderviewdual_FilterView
};
/**********************************************************
* IShellView_Constructor
*/
IShellView
*
IShellView_Constructor
(
IShellFolder
*
folder
)
{
IShellViewImpl
*
sv
;
sv
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
IShellViewImpl
));
if
(
!
sv
)
return
NULL
;
sv
->
ref
=
1
;
sv
->
IShellView3_iface
.
lpVtbl
=
&
shellviewvtbl
;
sv
->
IOleCommandTarget_iface
.
lpVtbl
=
&
olecommandtargetvtbl
;
sv
->
IDropTarget_iface
.
lpVtbl
=
&
droptargetvtbl
;
sv
->
IDropSource_iface
.
lpVtbl
=
&
dropsourcevtbl
;
sv
->
IViewObject_iface
.
lpVtbl
=
&
viewobjectvtbl
;
sv
->
IFolderView_iface
.
lpVtbl
=
&
folderviewvtbl
;
sv
->
IShellFolderView_iface
.
lpVtbl
=
&
shellfolderviewvtbl
;
sv
->
IShellFolderViewDual3_iface
.
lpVtbl
=
&
shellfolderviewdualvtbl
;
sv
->
pSFParent
=
folder
;
if
(
folder
)
IShellFolder_AddRef
(
folder
);
IShellFolder_QueryInterface
(
sv
->
pSFParent
,
&
IID_IShellFolder2
,
(
void
**
)
&
sv
->
pSF2Parent
);
sv
->
pCurDropTarget
=
NULL
;
sv
->
pCurDataObject
=
NULL
;
sv
->
iDragOverItem
=
0
;
sv
->
cScrollDelay
=
0
;
sv
->
ptLastMousePos
.
x
=
0
;
sv
->
ptLastMousePos
.
y
=
0
;
TRACE
(
"(%p)->(%p)
\n
"
,
sv
,
folder
);
return
(
IShellView
*
)
&
sv
->
IShellView3_iface
;
}
This diff is collapsed.
Click to expand it.
include/shobjidl.idl
+
29
−
0
View file @
5d288771
...
...
@@ -801,6 +801,35 @@ cpp_quote("#include <poppack.h>")
)
;
}
[
object
,
uuid
(
ec39fa88
-
f8af
-
41
c5
-
8421
-
38b
ed28f4673
),
pointer_default
(
unique
)
]
interface
IShellView3
:
IShellView2
{
[
v1_enum
]
enum
_SV3CVW3_FLAGS
{
SV3CVW3_DEFAULT
=
0
x00000000
,
SV3CVW3_NONINTERACTIVE
=
0
x00000001
,
SV3CVW3_FORCEVIEWMODE
=
0
x00000002
,
SV3CVW3_FORCEFOLDERFLAGS
=
0
x00000004
}
;
typedef
DWORD
SV3CVW3_FLAGS
;
HRESULT
CreateViewWindow3
(
[
in
]
IShellBrowser
*
owner
,
[
in
,
unique
]
IShellView
*
prev_view
,
[
in
]
SV3CVW3_FLAGS
view_flags
,
[
in
]
FOLDERFLAGS
mask
,
[
in
]
FOLDERFLAGS
flags
,
[
in
]
FOLDERVIEWMODE
mode
,
[
in
,
unique
]
const
SHELLVIEWID
*
view_id
,
[
in
]
const
RECT
*
rect
,
[
out
]
HWND
*
hwnd
)
;
}
/*****************************************************************************
*
IFolderView
interface
*/
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment