Michael Stefaniuc : shell32: COM cleanup in shv_bg_cmenu.c.
Alexandre Julliard
julliard at winehq.org
Wed Aug 31 13:19:23 CDT 2011
Module: wine
Branch: master
Commit: 47a705965b8f5c9ca5fdd42e54df3a9a104bdcad
URL: http://source.winehq.org/git/wine.git/?a=commit;h=47a705965b8f5c9ca5fdd42e54df3a9a104bdcad
Author: Michael Stefaniuc <mstefani at redhat.de>
Date: Wed Aug 31 14:15:45 2011 +0200
shell32: COM cleanup in shv_bg_cmenu.c.
---
dlls/shell32/shv_bg_cmenu.c | 33 ++++++++++++++++++---------------
1 files changed, 18 insertions(+), 15 deletions(-)
diff --git a/dlls/shell32/shv_bg_cmenu.c b/dlls/shell32/shv_bg_cmenu.c
index bd99d3a..7b9e6c6 100644
--- a/dlls/shell32/shv_bg_cmenu.c
+++ b/dlls/shell32/shv_bg_cmenu.c
@@ -42,7 +42,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell);
*/
typedef struct
{
- const IContextMenu2Vtbl *lpVtbl;
+ IContextMenu2 IContextMenu2_iface;
IShellFolder* pSFParent;
LONG ref;
BOOL bDesktop;
@@ -52,6 +52,11 @@ typedef struct
static const IContextMenu2Vtbl cmvt;
+static inline BgCmImpl *impl_from_IContextMenu2(IContextMenu2 *iface)
+{
+ return CONTAINING_RECORD(iface, BgCmImpl, IContextMenu2_iface);
+}
+
/**************************************************************************
* ISVBgCm_Constructor()
*/
@@ -60,14 +65,14 @@ IContextMenu2 *ISvBgCm_Constructor(IShellFolder* pSFParent, BOOL bDesktop)
BgCmImpl* cm;
cm = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(BgCmImpl));
- cm->lpVtbl = &cmvt;
+ cm->IContextMenu2_iface.lpVtbl = &cmvt;
cm->ref = 1;
cm->pSFParent = pSFParent;
cm->bDesktop = bDesktop;
if(pSFParent) IShellFolder_AddRef(pSFParent);
TRACE("(%p)->()\n",cm);
- return (IContextMenu2*)cm;
+ return &cm->IContextMenu2_iface;
}
/**************************************************************************
@@ -75,7 +80,7 @@ IContextMenu2 *ISvBgCm_Constructor(IShellFolder* pSFParent, BOOL bDesktop)
*/
static HRESULT WINAPI ISVBgCm_fnQueryInterface(IContextMenu2 *iface, REFIID riid, LPVOID *ppvObj)
{
- BgCmImpl *This = (BgCmImpl *)iface;
+ BgCmImpl *This = impl_from_IContextMenu2(iface);
TRACE("(%p)->(\n\tIID:\t%s,%p)\n",This,debugstr_guid(riid),ppvObj);
@@ -107,7 +112,7 @@ static HRESULT WINAPI ISVBgCm_fnQueryInterface(IContextMenu2 *iface, REFIID riid
*/
static ULONG WINAPI ISVBgCm_fnAddRef(IContextMenu2 *iface)
{
- BgCmImpl *This = (BgCmImpl *)iface;
+ BgCmImpl *This = impl_from_IContextMenu2(iface);
ULONG refCount = InterlockedIncrement(&This->ref);
TRACE("(%p)->(count=%u)\n", This, refCount - 1);
@@ -120,7 +125,7 @@ static ULONG WINAPI ISVBgCm_fnAddRef(IContextMenu2 *iface)
*/
static ULONG WINAPI ISVBgCm_fnRelease(IContextMenu2 *iface)
{
- BgCmImpl *This = (BgCmImpl *)iface;
+ BgCmImpl *This = impl_from_IContextMenu2(iface);
ULONG refCount = InterlockedDecrement(&This->ref);
TRACE("(%p)->(count=%i)\n", This, refCount + 1);
@@ -149,12 +154,11 @@ static HRESULT WINAPI ISVBgCm_fnQueryContextMenu(
UINT idCmdLast,
UINT uFlags)
{
- HMENU hMyMenu;
- UINT idMax;
+ BgCmImpl *This = impl_from_IContextMenu2(iface);
+ HMENU hMyMenu;
+ UINT idMax;
HRESULT hr;
- BgCmImpl *This = (BgCmImpl *)iface;
-
TRACE("(%p)->(hmenu=%p indexmenu=%x cmdfirst=%x cmdlast=%x flags=%x )\n",
This, hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags);
@@ -318,9 +322,8 @@ static HRESULT WINAPI ISVBgCm_fnInvokeCommand(
IContextMenu2 *iface,
LPCMINVOKECOMMANDINFO lpcmi)
{
- BgCmImpl *This = (BgCmImpl *)iface;
-
- LPSHELLBROWSER lpSB;
+ BgCmImpl *This = impl_from_IContextMenu2(iface);
+ LPSHELLBROWSER lpSB;
LPSHELLVIEW lpSV = NULL;
HWND hWndSV = 0;
@@ -405,7 +408,7 @@ static HRESULT WINAPI ISVBgCm_fnGetCommandString(
LPSTR lpszName,
UINT uMaxNameLen)
{
- BgCmImpl *This = (BgCmImpl *)iface;
+ BgCmImpl *This = impl_from_IContextMenu2(iface);
TRACE("(%p)->(idcom=%lx flags=%x %p name=%p len=%x)\n",This, idCommand, uFlags, lpReserved, lpszName, uMaxNameLen);
@@ -437,7 +440,7 @@ static HRESULT WINAPI ISVBgCm_fnHandleMenuMsg(
WPARAM wParam,
LPARAM lParam)
{
- BgCmImpl *This = (BgCmImpl *)iface;
+ BgCmImpl *This = impl_from_IContextMenu2(iface);
FIXME("(%p)->(msg=%x wp=%lx lp=%lx)\n",This, uMsg, wParam, lParam);
More information about the wine-cvs
mailing list