Ignore:
Timestamp:
Nov 2, 1999, 9:38:48 PM (26 years ago)
Author:
phaller
Message:

Add: update to wine/shell32 1999/11/02 #4

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/shell32/shv_bg_cmenu.cpp

    r1214 r1558  
    1 /* $Id: shv_bg_cmenu.cpp,v 1.1 1999-10-09 11:13:25 sandervl Exp $ */
     1/* $Id: shv_bg_cmenu.cpp,v 1.2 1999-11-02 20:38:48 phaller Exp $ */
    22
    33/*
     
    88
    99/*
    10  *      IContextMenu
    11  *      ShellView Background Context Menu (shv_bg_cm)
     10 * IContextMenu
     11 * ShellView Background Context Menu (shv_bg_cm)
    1212 *
    13  *      Copyright 1999  Juergen Schmied <juergen.schmied@metronet.de>
     13 * Copyright 1999 Juergen Schmied <juergen.schmied@metronet.de>
    1414 */
    1515
     
    4545*/
    4646typedef struct
    47 {       ICOM_VTABLE(IContextMenu)* lpvtbl;
    48         DWORD           ref;
     47{  ICOM_VTABLE(IContextMenu)* lpvtbl;
     48   DWORD    ref;
    4949} BgCmImpl;
    5050
     
    5757static HRESULT WINAPI ISVBgCm_fnQueryInterface(IContextMenu *iface, REFIID riid, LPVOID *ppvObj)
    5858{
    59         ICOM_THIS(BgCmImpl, iface);
    60 
    61         char    xriid[50];
    62         WINE_StringFromCLSID((LPCLSID)riid,xriid);
     59   ICOM_THIS(BgCmImpl, iface);
     60
     61   char    xriid[50];
     62   WINE_StringFromCLSID((LPCLSID)riid,xriid);
    6363
    6464  dprintf(("SHELL32:shv_bg_cmenu: ISVBgCm_fnQueryInterface(%08xh,%s,%08xh)\n",
     
    6767           ppvObj));
    6868
    69         *ppvObj = NULL;
    70 
    71         if(IsEqualIID(riid, &IID_IUnknown))          /*IUnknown*/
    72         {
    73           *ppvObj = This;
    74         }
    75         else if(IsEqualIID(riid, &IID_IContextMenu))  /*IContextMenu*/
    76         {
    77           *ppvObj = This;
    78         }
    79         else if(IsEqualIID(riid, &IID_IShellExtInit))  /*IShellExtInit*/
    80         {
    81           FIXME("-- LPSHELLEXTINIT pointer requested\n");
    82         }
    83 
    84         if(*ppvObj)
    85         {
    86           IUnknown_AddRef((IUnknown*)*ppvObj);
    87           TRACE("-- Interface: (%p)->(%p)\n",ppvObj,*ppvObj);
    88           return S_OK;
    89         }
    90         TRACE("-- Interface: E_NOINTERFACE\n");
    91         return E_NOINTERFACE;
     69   *ppvObj = NULL;
     70
     71   if(IsEqualIID(riid, &IID_IUnknown))          /*IUnknown*/
     72   {
     73     *ppvObj = This;
     74   }
     75   else if(IsEqualIID(riid, &IID_IContextMenu))  /*IContextMenu*/
     76   {
     77     *ppvObj = This;
     78   }
     79   else if(IsEqualIID(riid, &IID_IShellExtInit))  /*IShellExtInit*/
     80   {
     81     FIXME("-- LPSHELLEXTINIT pointer requested\n");
     82   }
     83
     84   if(*ppvObj)
     85   {
     86     IUnknown_AddRef((IUnknown*)*ppvObj);
     87     TRACE("-- Interface: (%p)->(%p)\n",ppvObj,*ppvObj);
     88     return S_OK;
     89   }
     90   TRACE("-- Interface: E_NOINTERFACE\n");
     91   return E_NOINTERFACE;
    9292}
    9393
     
    9797static ULONG WINAPI ISVBgCm_fnAddRef(IContextMenu *iface)
    9898{
    99         ICOM_THIS(BgCmImpl, iface);
     99   ICOM_THIS(BgCmImpl, iface);
    100100
    101101  dprintf(("SHELL32:shv_bg_cmenu: ISVBgCm_fnAddRef(%08xh,%u)\n",
     
    103103           This->ref));
    104104
    105         shell32_ObjCount++;
    106         return ++(This->ref);
     105   shell32_ObjCount++;
     106   return ++(This->ref);
    107107}
    108108
     
    112112static ULONG WINAPI ISVBgCm_fnRelease(IContextMenu *iface)
    113113{
    114         ICOM_THIS(BgCmImpl, iface);
     114   ICOM_THIS(BgCmImpl, iface);
    115115
    116116  dprintf(("SHELL32:shv_bg_cmenu: ISVBgCm_fnRelease(%08xh)\n",
    117117           This));
    118118
    119         shell32_ObjCount--;
    120 
    121         if (!--(This->ref))
    122         { TRACE(" destroying IContextMenu(%p)\n",This);
    123 
    124           HeapFree(GetProcessHeap(),0,This);
    125           return 0;
    126         }
    127         return This->ref;
     119   shell32_ObjCount--;
     120
     121   if (!--(This->ref))
     122   { TRACE(" destroying IContextMenu(%p)\n",This);
     123
     124     HeapFree(GetProcessHeap(),0,This);
     125     return 0;
     126   }
     127   return This->ref;
    128128}
    129129
     
    133133
    134134static HRESULT WINAPI ISVBgCm_fnQueryContextMenu(
    135         IContextMenu *iface,
    136         HMENU hMenu,
    137         UINT indexMenu,
    138         UINT idCmdFirst,
    139         UINT idCmdLast,
    140         UINT uFlags)
    141 {
    142         HMENU   hMyMenu;
    143         UINT    idMax;
    144        
    145         ICOM_THIS(BgCmImpl, iface);
     135   IContextMenu *iface,
     136   HMENU hMenu,
     137   UINT indexMenu,
     138   UINT idCmdFirst,
     139   UINT idCmdLast,
     140   UINT uFlags)
     141{
     142   HMENU hMyMenu;
     143   UINT  idMax;
     144
     145   ICOM_THIS(BgCmImpl, iface);
    146146
    147147  dprintf(("SHELL32:shv_bg_cmenu: ISVBgCm_fnQueryContextMenu(%08xh,%08xh,%08xh,%08xh,%08xh,%08xh)\n",
     
    153153           uFlags));
    154154
    155         hMyMenu = LoadMenuA(shell32_hInstance, "MENU_002");
    156 
    157         idMax = Shell_MergeMenus (hMenu, GetSubMenu(hMyMenu,0), indexMenu, idCmdFirst, idCmdLast, MM_SUBMENUSHAVEIDS);
    158 
    159         DestroyMenu(hMyMenu);
    160 
    161         return ResultFromShort(idMax - idCmdFirst);
     155   hMyMenu = LoadMenuA(shell32_hInstance, "MENU_002");
     156
     157   idMax = Shell_MergeMenus (hMenu, GetSubMenu(hMyMenu,0), indexMenu, idCmdFirst, idCmdLast, MM_SUBMENUSHAVEIDS);
     158
     159   DestroyMenu(hMyMenu);
     160
     161   return ResultFromShort(idMax - idCmdFirst);
    162162}
    163163
     
    166166*/
    167167static HRESULT WINAPI ISVBgCm_fnInvokeCommand(
    168         IContextMenu *iface,
    169         LPCMINVOKECOMMANDINFO lpcmi)
    170 {
    171         ICOM_THIS(BgCmImpl, iface);
    172 
    173         LPSHELLBROWSER  lpSB;
    174         LPSHELLVIEW     lpSV;
    175         HWND    hWndSV;
     168   IContextMenu *iface,
     169   LPCMINVOKECOMMANDINFO lpcmi)
     170{
     171   ICOM_THIS(BgCmImpl, iface);
     172
     173   LPSHELLBROWSER lpSB;
     174   LPSHELLVIEW lpSV;
     175   HWND  hWndSV;
    176176
    177177  dprintf(("SHELL32:shv_bg_cmenu: ISVBgCm_fnInvokeCommand((%p)->(invcom=%p verb=%p wnd=%x)\n",
     
    181181           lpcmi->hwnd));
    182182
    183         /* get the active IShellView */
    184         lpSB = (LPSHELLBROWSER)SendMessageA(lpcmi->hwnd, CWM_GETISHELLBROWSER,0,0);
    185         IShellBrowser_QueryActiveShellView(lpSB, &lpSV);
    186         IShellView_GetWindow(lpSV, &hWndSV);
    187 
    188         if(HIWORD(lpcmi->lpVerb))
    189         {
    190           TRACE("%s\n",lpcmi->lpVerb);
    191 
    192           if (! strcmp(lpcmi->lpVerb,CMDSTR_NEWFOLDERA))
    193           {
    194             FIXME("%s not implemented\n",lpcmi->lpVerb);
    195           }
    196           else if (! strcmp(lpcmi->lpVerb,CMDSTR_VIEWLISTA))
    197           {
    198             SendMessageA(hWndSV, WM_COMMAND, MAKEWPARAM(FCIDM_SHVIEW_LISTVIEW,0),0 );
    199           }
    200           else if (! strcmp(lpcmi->lpVerb,CMDSTR_VIEWDETAILSA))
    201           {
    202             SendMessageA(hWndSV, WM_COMMAND, MAKEWPARAM(FCIDM_SHVIEW_REPORTVIEW,0),0 );
    203           }
    204           else
    205           {
    206             FIXME("please report: unknown verb %s\n",lpcmi->lpVerb);
    207           }
    208         }
    209         else
    210         {
    211           switch(LOWORD(lpcmi->lpVerb))
    212           {
    213             case FCIDM_SHVIEW_BIGICON:
    214               SendMessageA(hWndSV, WM_COMMAND, MAKEWPARAM(FCIDM_SHVIEW_BIGICON,0),0 );
    215               break;
    216 
    217             case FCIDM_SHVIEW_SMALLICON:
    218               SendMessageA(hWndSV, WM_COMMAND, MAKEWPARAM(FCIDM_SHVIEW_SMALLICON,0),0 );
    219 
    220             case FCIDM_SHVIEW_LISTVIEW:
    221               SendMessageA(hWndSV, WM_COMMAND, MAKEWPARAM(FCIDM_SHVIEW_LISTVIEW,0),0 );
    222               break;
    223 
    224             case FCIDM_SHVIEW_REPORTVIEW:
    225               SendMessageA(hWndSV, WM_COMMAND, MAKEWPARAM(FCIDM_SHVIEW_REPORTVIEW,0),0 );
    226               break;
    227           }
    228         }
    229        
    230         IShellView_Release(lpSV);       /* QueryActiveShellView does AddRef*/
    231         return NOERROR;
     183   /* get the active IShellView */
     184   lpSB = (LPSHELLBROWSER)SendMessageA(lpcmi->hwnd, CWM_GETISHELLBROWSER,0,0);
     185   IShellBrowser_QueryActiveShellView(lpSB, &lpSV);
     186   IShellView_GetWindow(lpSV, &hWndSV);
     187
     188   if(HIWORD(lpcmi->lpVerb))
     189   {
     190     TRACE("%s\n",lpcmi->lpVerb);
     191
     192     if (! strcmp(lpcmi->lpVerb,CMDSTR_NEWFOLDERA))
     193     {
     194       FIXME("%s not implemented\n",lpcmi->lpVerb);
     195     }
     196     else if (! strcmp(lpcmi->lpVerb,CMDSTR_VIEWLISTA))
     197     {
     198       SendMessageA(hWndSV, WM_COMMAND, MAKEWPARAM(FCIDM_SHVIEW_LISTVIEW,0),0 );
     199     }
     200     else if (! strcmp(lpcmi->lpVerb,CMDSTR_VIEWDETAILSA))
     201     {
     202       SendMessageA(hWndSV, WM_COMMAND, MAKEWPARAM(FCIDM_SHVIEW_REPORTVIEW,0),0 );
     203     }
     204     else
     205     {
     206       FIXME("please report: unknown verb %s\n",lpcmi->lpVerb);
     207     }
     208   }
     209   else
     210   {
     211     /* if it's a id just pass it to the parent shv */
     212     SendMessageA(hWndSV, WM_COMMAND, MAKEWPARAM(LOWORD(lpcmi->lpVerb), 0),0 );
     213   }
     214
     215   IShellView_Release(lpSV);             /* QueryActiveShellView does AddRef*/
     216   return NOERROR;
    232217}
    233218
     
    237222 */
    238223static HRESULT WINAPI ISVBgCm_fnGetCommandString(
    239         IContextMenu *iface,
    240         UINT idCommand,
    241         UINT uFlags,
    242         LPUINT lpReserved,
    243         LPSTR lpszName,
    244         UINT uMaxNameLen)
    245 {       
    246         ICOM_THIS(BgCmImpl, iface);
     224   IContextMenu *iface,
     225   UINT idCommand,
     226   UINT uFlags,
     227   LPUINT lpReserved,
     228   LPSTR lpszName,
     229   UINT uMaxNameLen)
     230{
     231   ICOM_THIS(BgCmImpl, iface);
    247232
    248233  dprintf(("SHELL32:shv_bg_cmenu: ISVBgCm_fnGetCommandString((%p)->(idcom=%x flags=%x %p name=%p len=%x)\n",
     
    254239           uMaxNameLen));
    255240
    256         /* test the existance of the menu items, the file dialog enables
    257            the buttons according to this */
    258         if (uFlags == GCS_VALIDATEA)
    259         {
    260           if(HIWORD(idCommand))
    261           {
    262             if (!strcmp((LPSTR)idCommand, CMDSTR_VIEWLISTA) ||
    263                 !strcmp((LPSTR)idCommand, CMDSTR_VIEWDETAILSA) ||
    264                 !strcmp((LPSTR)idCommand, CMDSTR_NEWFOLDERA))
    265             {   
    266               return NOERROR;
    267             }
    268           }
    269         }
    270 
    271         FIXME("unknown command string\n");
    272         return E_FAIL;
     241   /* test the existance of the menu items, the file dialog enables
     242      the buttons according to this */
     243   if (uFlags == GCS_VALIDATEA)
     244   {
     245     if(HIWORD(idCommand))
     246     {
     247       if (!strcmp((LPSTR)idCommand, CMDSTR_VIEWLISTA) ||
     248           !strcmp((LPSTR)idCommand, CMDSTR_VIEWDETAILSA) ||
     249           !strcmp((LPSTR)idCommand, CMDSTR_NEWFOLDERA))
     250       {
     251         return NOERROR;
     252       }
     253     }
     254   }
     255
     256   FIXME("unknown command string\n");
     257   return E_FAIL;
    273258}
    274259
     
    277262*/
    278263static HRESULT WINAPI ISVBgCm_fnHandleMenuMsg(
    279         IContextMenu *iface,
    280         UINT uMsg,
    281         WPARAM wParam,
    282         LPARAM lParam)
    283 {
    284         ICOM_THIS(BgCmImpl, iface);
     264   IContextMenu *iface,
     265   UINT uMsg,
     266   WPARAM wParam,
     267   LPARAM lParam)
     268{
     269   ICOM_THIS(BgCmImpl, iface);
    285270
    286271  dprintf(("SHELL32:shv_bg_cmenu: ISVBgCm_fnHandleMenuMsg((%p)->(msg=%x wp=%x lp=%lx)\n",
     
    290275           lParam));
    291276
    292         return E_NOTIMPL;
     277   return E_NOTIMPL;
    293278}
    294279
     
    298283*/
    299284static struct ICOM_VTABLE(IContextMenu) cmvt =
    300 {       
    301         ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
    302         ISVBgCm_fnQueryInterface,
    303         ISVBgCm_fnAddRef,
    304         ISVBgCm_fnRelease,
    305         ISVBgCm_fnQueryContextMenu,
    306         ISVBgCm_fnInvokeCommand,
    307         ISVBgCm_fnGetCommandString,
    308         ISVBgCm_fnHandleMenuMsg,
    309         (void *) 0xdeadbabe     /* just paranoia (IContextMenu3) */
     285{
     286   ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
     287   ISVBgCm_fnQueryInterface,
     288   ISVBgCm_fnAddRef,
     289   ISVBgCm_fnRelease,
     290   ISVBgCm_fnQueryContextMenu,
     291   ISVBgCm_fnInvokeCommand,
     292   ISVBgCm_fnGetCommandString,
     293   ISVBgCm_fnHandleMenuMsg,
     294   (void *) 0xdeadbabe                   /* just paranoia (IContextMenu3) */
    310295};
    311296
     
    315300IContextMenu *ISvBgCm_Constructor(void)
    316301{
    317         BgCmImpl* cm;
    318 
    319         cm = (BgCmImpl*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(BgCmImpl));
    320         cm->lpvtbl=&cmvt;
    321         cm->ref = 1;
     302   BgCmImpl* cm;
     303
     304   cm = (BgCmImpl*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(BgCmImpl));
     305   cm->lpvtbl=&cmvt;
     306   cm->ref = 1;
    322307
    323308  dprintf(("SHELL32:shv_bg_cmenu: ISVBgCm_Constructor(%p)\n",
    324309           cm));
    325310
    326         shell32_ObjCount++;
    327         return (IContextMenu*)cm;
    328 }
    329 
    330 
     311   shell32_ObjCount++;
     312   return (IContextMenu*)cm;
     313}
     314
     315
Note: See TracChangeset for help on using the changeset viewer.