ReactOS 0.4.16-dev-597-gdbf7844
COpenWithMenu Class Reference

#include <COpenWithMenu.h>

Inheritance diagram for COpenWithMenu:
Collaboration diagram for COpenWithMenu:

Public Member Functions

 COpenWithMenu ()
 
 ~COpenWithMenu ()
 
STDMETHOD() QueryContextMenu (HMENU hMenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags) override
 
STDMETHOD() InvokeCommand (LPCMINVOKECOMMANDINFO lpcmi) override
 
STDMETHOD() GetCommandString (UINT_PTR idCommand, UINT uFlags, UINT *lpReserved, LPSTR lpszName, UINT uMaxNameLen) override
 
STDMETHOD() HandleMenuMsg (UINT uMsg, WPARAM wParam, LPARAM lParam) override
 
STDMETHOD() Initialize (PCIDLIST_ABSOLUTE pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID) override
 
- Public Member Functions inherited from ATL::CComObjectRootEx< CComMultiThreadModelNoCS >
 ~CComObjectRootEx ()
 
ULONG InternalAddRef ()
 
ULONG InternalRelease ()
 
void Lock ()
 
void Unlock ()
 
HRESULT _AtlInitialConstruct ()
 
- Public Member Functions inherited from ATL::CComObjectRootBase
 CComObjectRootBase ()
 
 ~CComObjectRootBase ()
 
void SetVoid (void *)
 
HRESULT _AtlFinalConstruct ()
 
HRESULT FinalConstruct ()
 
void InternalFinalConstructAddRef ()
 
void InternalFinalConstructRelease ()
 
void FinalRelease ()
 
HRESULT HandleMenuMsg ([in] UINT uMsg, [in] WPARAM wParam, [in] LPARAM lParam)
 
HRESULT QueryContextMenu ([in] HMENU hmenu, [in] UINT indexMenu, [in] UINT idCmdFirst, [in] UINT idCmdLast, [in] UINT uFlags)
 
HRESULT InvokeCommand ([in] LPCMINVOKECOMMANDINFO lpici)
 
HRESULT GetCommandString ([in] UINT_PTR idCmd, [in] UINT uType, [out] UINT *pwReserved, [out, size_is(cchMax)] LPSTR pszName, [in] UINT cchMax)
 
- Public Member Functions inherited from IUnknown
HRESULT QueryInterface ([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
 
ULONG AddRef ()
 
ULONG Release ()
 
HRESULT Initialize ([in] PCIDLIST_ABSOLUTE pidlFolder, [in] IDataObject *pdtobj, [in] HKEY hkeyProgID)
 

Private Member Functions

HBITMAP IconToBitmap (HICON hIcon)
 
VOID AddChooseProgramItem ()
 
VOID AddApp (PVOID pApp)
 

Private Attributes

UINT m_idCmdFirst
 
UINT m_idCmdLast
 
WCHAR m_wszPath [MAX_PATH]
 
HMENU m_hSubMenu
 
COpenWithListm_pAppList
 

Additional Inherited Members

- Public Types inherited from IContextMenu2
typedef IContextMenu2LPCONTEXTMENU2
 
- Public Types inherited from IContextMenu
typedef IContextMenuLPCONTEXTMENU
 
typedef struct IContextMenu::tagCMINVOKECOMMANDINFO CMINVOKECOMMANDINFO
 
typedef struct IContextMenu::tagCMINVOKECOMMANDINFOLPCMINVOKECOMMANDINFO
 
typedef struct IContextMenu::tagCMInvokeCommandInfoEx CMINVOKECOMMANDINFOEX
 
typedef struct IContextMenu::tagCMInvokeCommandInfoExLPCMINVOKECOMMANDINFOEX
 
- Public Types inherited from IUnknown
typedef IUnknownLPUNKNOWN
 
- Public Types inherited from IShellExtInit
typedef IShellExtInitLPSHELLEXTINIT
 
- Static Public Member Functions inherited from ATL::CComObjectRootBase
static void WINAPI ObjectMain (bool)
 
static const struct _ATL_CATMAP_ENTRYGetCategoryMap ()
 
static HRESULT WINAPI InternalQueryInterface (void *pThis, const _ATL_INTMAP_ENTRY *pEntries, REFIID iid, void **ppvObject)
 
- Public Attributes inherited from ATL::CComObjectRootBase
LONG m_dwRef
 
- Static Public Attributes inherited from IContextMenu
static const WCHAR CMDSTR_NEWFOLDERW [] = {'N','e','w','F','o','l','d','e','r',0}
 
static const WCHAR CMDSTR_VIEWLISTW [] = {'V','i','e','w','L','i','s','t',0}
 
static const WCHAR CMDSTR_VIEWDETAILSW [] = {'V','i','e','w','D','e','t','a','i','l','s',0}
 

Detailed Description

Definition at line 28 of file COpenWithMenu.h.

Constructor & Destructor Documentation

◆ COpenWithMenu()

COpenWithMenu::COpenWithMenu ( )

Definition at line 1136 of file COpenWithMenu.cpp.

1137{
1138 m_idCmdFirst = 0;
1139 m_idCmdLast = 0;
1141}
COpenWithList * m_pAppList
Definition: COpenWithMenu.h:38

◆ ~COpenWithMenu()

COpenWithMenu::~COpenWithMenu ( )

Definition at line 1143 of file COpenWithMenu.cpp.

1144{
1145 TRACE("Destroying COpenWithMenu(%p)\n", this);
1146
1147 if (m_hSubMenu)
1148 {
1149 INT Count, Index;
1150 MENUITEMINFOW mii;
1151
1152 /* get item count */
1154 if (Count == -1)
1155 return;
1156
1157 /* setup menuitem info */
1158 ZeroMemory(&mii, sizeof(mii));
1159 mii.cbSize = sizeof(mii);
1161
1162 for(Index = 0; Index < Count; Index++)
1163 {
1165 {
1166 if (mii.hbmpChecked)
1168 }
1169 }
1170 }
1171
1172 if (m_pAppList)
1173 delete m_pAppList;
1174}
#define TRUE
Definition: types.h:120
pKey DeleteObject()
int Count
Definition: noreturn.cpp:7
#define TRACE(s)
Definition: solgame.cpp:4
HBITMAP hbmpChecked
Definition: winuser.h:3269
int32_t INT
Definition: typedefs.h:58
_In_ WDFCOLLECTION _In_ ULONG Index
#define ZeroMemory
Definition: winbase.h:1737
int WINAPI GetMenuItemCount(_In_opt_ HMENU)
#define MIIM_CHECKMARKS
Definition: winuser.h:727
#define MIIM_FTYPE
Definition: winuser.h:732
BOOL WINAPI GetMenuItemInfoW(_In_ HMENU, _In_ UINT, _In_ BOOL, _Inout_ LPMENUITEMINFOW)
#define MIIM_DATA
Definition: winuser.h:729

Member Function Documentation

◆ AddApp()

VOID COpenWithMenu::AddApp ( PVOID  pApp)
private

Definition at line 1227 of file COpenWithMenu.cpp.

1228{
1229 MENUITEMINFOW mii;
1230 LPCWSTR pwszName = m_pAppList->GetName((COpenWithList::SApp*)pApp);
1231 if (!pwszName) return;
1232
1233 ZeroMemory(&mii, sizeof(mii));
1234 mii.cbSize = sizeof(mii);
1236 mii.fType = MFT_STRING;
1237 mii.fState = MFS_ENABLED;
1238 mii.wID = m_idCmdLast;
1239 mii.dwTypeData = const_cast<LPWSTR>(pwszName);
1240 mii.dwItemData = (ULONG_PTR)pApp;
1241
1243 if (hIcon)
1244 {
1245 mii.fMask |= MIIM_CHECKMARKS;
1247 }
1248
1249 if (InsertMenuItemW(m_hSubMenu, -1, TRUE, &mii))
1250 m_idCmdLast++;
1251}
static LPCWSTR GetName(SApp *pApp)
static HICON GetIcon(SApp *pApp)
HBITMAP IconToBitmap(HICON hIcon)
#define ULONG_PTR
Definition: config.h:101
static HICON
Definition: imagelist.c:80
HICON hIcon
Definition: msconfig.c:44
ULONG_PTR dwItemData
Definition: winuser.h:3271
LPWSTR dwTypeData
Definition: winuser.h:3272
HBITMAP hbmpUnchecked
Definition: winuser.h:3270
#define MIIM_ID
Definition: winuser.h:725
#define MIIM_STATE
Definition: winuser.h:724
#define MFS_ENABLED
Definition: winuser.h:753
#define MFT_STRING
Definition: winuser.h:749
#define MIIM_TYPE
Definition: winuser.h:728
BOOL WINAPI InsertMenuItemW(_In_ HMENU, _In_ UINT, _In_ BOOL, _In_ LPCMENUITEMINFOW)
WCHAR * LPWSTR
Definition: xmlstorage.h:184
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185

Referenced by QueryContextMenu().

◆ AddChooseProgramItem()

VOID COpenWithMenu::AddChooseProgramItem ( )
private

Definition at line 1199 of file COpenWithMenu.cpp.

1200{
1201 MENUITEMINFOW mii;
1202 WCHAR wszBuf[128];
1203
1204 ZeroMemory(&mii, sizeof(mii));
1205 mii.cbSize = sizeof(mii);
1206 mii.fMask = MIIM_TYPE | MIIM_ID;
1207 mii.fType = MFT_SEPARATOR;
1208 mii.wID = -1;
1209 InsertMenuItemW(m_hSubMenu, -1, TRUE, &mii);
1210
1212 {
1213 ERR("Failed to load string\n");
1214 return;
1215 }
1216
1218 mii.fType = MFT_STRING;
1219 mii.fState = MFS_ENABLED;
1220 mii.wID = m_idCmdLast;
1221 mii.dwTypeData = (LPWSTR)wszBuf;
1222 mii.cch = wcslen(wszBuf);
1223
1224 InsertMenuItemW(m_hSubMenu, -1, TRUE, &mii);
1225}
#define shell32_hInstance
#define ERR(fmt,...)
Definition: precomp.h:57
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define IDS_OPEN_WITH_CHOOSE
Definition: shresdef.h:135
#define _countof(array)
Definition: sndvol32.h:70
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
#define MFT_SEPARATOR
Definition: winuser.h:747
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by QueryContextMenu().

◆ GetCommandString()

HRESULT WINAPI COpenWithMenu::GetCommandString ( UINT_PTR  idCommand,
UINT  uFlags,
UINT lpReserved,
LPSTR  lpszName,
UINT  uMaxNameLen 
)
override

Implements IContextMenu.

Definition at line 1381 of file COpenWithMenu.cpp.

1383{
1384 TRACE("%p %lu %u %p %p %u\n", this,
1385 idCmd, uType, pwReserved, pszName, cchMax );
1386
1387 const SIZE_T idChooseApp = m_idCmdLast;
1388 if (m_idCmdFirst + idCmd == idChooseApp)
1389 return SHELL_GetCommandStringImpl(0, uType, pszName, cchMax, g_VerbMap);
1390
1391 return E_NOTIMPL;
1392}
static const CMVERBMAP g_VerbMap[]
UINT cchMax
#define E_NOTIMPL
Definition: ddrawi.h:99
HRESULT SHELL_GetCommandStringImpl(SIZE_T CmdId, UINT uFlags, LPSTR Buf, UINT cchBuf, const CMVERBMAP *pMap)
Definition: utils.cpp:1779
ULONG_PTR SIZE_T
Definition: typedefs.h:80

◆ HandleMenuMsg()

HRESULT WINAPI COpenWithMenu::HandleMenuMsg ( UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
override

Implements IContextMenu2.

Definition at line 1394 of file COpenWithMenu.cpp.

1398{
1399 TRACE("This %p uMsg %x\n", this, uMsg);
1400
1401 return E_NOTIMPL;
1402}

◆ IconToBitmap()

HBITMAP COpenWithMenu::IconToBitmap ( HICON  hIcon)
private

Definition at line 1176 of file COpenWithMenu.cpp.

1177{
1178 HDC hdc, hdcScr;
1179 HBITMAP hbm, hbmOld;
1180 RECT rc;
1181
1182 hdcScr = GetDC(NULL);
1183 hdc = CreateCompatibleDC(hdcScr);
1185 hbm = CreateCompatibleBitmap(hdcScr, rc.right, rc.bottom);
1186 ReleaseDC(NULL, hdcScr);
1187
1188 hbmOld = (HBITMAP)SelectObject(hdc, hbm);
1189 FillRect(hdc, &rc, (HBRUSH)(COLOR_MENU + 1));
1190 if (!DrawIconEx(hdc, 0, 0, hIcon, rc.right, rc.bottom, 0, NULL, DI_NORMAL))
1191 ERR("DrawIcon failed: %x\n", GetLastError());
1192 SelectObject(hdc, hbmOld);
1193
1194 DeleteDC(hdc);
1195
1196 return hbm;
1197}
#define NULL
Definition: types.h:112
HDC hdc
Definition: main.c:9
static HBITMAP
Definition: button.c:44
static HDC
Definition: imagelist.c:88
_In_ HBITMAP hbm
Definition: ntgdi.h:2776
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1546
#define DI_NORMAL
Definition: wingdi.h:72
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
HBITMAP WINAPI CreateCompatibleBitmap(_In_ HDC hdc, _In_ INT cx, _In_ INT cy)
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
BOOL WINAPI DeleteDC(_In_ HDC)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
#define COLOR_MENU
Definition: winuser.h:920
#define SM_CXMENUCHECK
Definition: winuser.h:1034
#define SM_CYMENUCHECK
Definition: winuser.h:1035
BOOL WINAPI DrawIconEx(_In_ HDC, _In_ int, _In_ int, _In_ HICON, _In_ int, _In_ int, _In_ UINT, _In_opt_ HBRUSH, _In_ UINT)
Definition: cursoricon.c:2114
HDC WINAPI GetDC(_In_opt_ HWND)
int WINAPI GetSystemMetrics(_In_ int)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)

Referenced by AddApp().

◆ Initialize()

HRESULT WINAPI COpenWithMenu::Initialize ( PCIDLIST_ABSOLUTE  pidlFolder,
IDataObject pdtobj,
HKEY  hkeyProgID 
)
override

Implements IShellExtInit.

Definition at line 1405 of file COpenWithMenu.cpp.

1408{
1409 LPCITEMIDLIST pidlFolder2;
1410 LPCITEMIDLIST pidlChild;
1411
1412 TRACE("This %p\n", this);
1413
1414 if (pdtobj == NULL)
1415 return E_INVALIDARG;
1416
1417 CDataObjectHIDA pida(pdtobj);
1418 if (FAILED(pida.hr()))
1419 {
1420 ERR("pdtobj->GetData failed with 0x%x\n", pida.hr());
1421 return pida.hr();
1422 }
1423
1424 ASSERT(pida->cidl >= 1);
1425
1426 pidlFolder2 = HIDA_GetPIDLFolder(pida);
1427 pidlChild = HIDA_GetPIDLItem(pida, 0);
1428
1429 if (!_ILIsValue(pidlChild))
1430 {
1431 TRACE("pidl is not a file\n");
1432 return E_FAIL;
1433 }
1434
1435 CComHeapPtr<ITEMIDLIST> pidl(ILCombine(pidlFolder2, pidlChild));
1436 if (!pidl)
1437 {
1438 ERR("no mem\n");
1439 return E_OUTOFMEMORY;
1440 }
1441
1442 if (!SHGetPathFromIDListW(pidl, m_wszPath))
1443 {
1444 ERR("SHGetPathFromIDListW failed\n");
1445 return E_FAIL;
1446 }
1447
1448 TRACE("szPath %s\n", debugstr_w(m_wszPath));
1449
1451 if (PathIsExeW(pwszExt) || !_wcsicmp(pwszExt, L".lnk"))
1452 {
1453 TRACE("file is a executable or shortcut\n");
1454 return E_FAIL;
1455 }
1456
1457 return S_OK;
1458}
EXTERN_C BOOL PathIsExeW(LPCWSTR lpszPath)
Definition: shellpath.c:539
WCHAR m_wszPath[MAX_PATH]
Definition: COpenWithMenu.h:36
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_INVALIDARG
Definition: ddrawi.h:101
#define E_FAIL
Definition: ddrawi.h:102
LPWSTR WINAPI PathFindExtensionW(LPCWSTR lpszPath)
Definition: path.c:447
#define S_OK
Definition: intsafe.h:52
#define FAILED(hr)
Definition: intsafe.h:51
#define debugstr_w
Definition: kernel32.h:32
#define ASSERT(a)
Definition: mode.c:44
#define L(x)
Definition: ntvdm.h:50
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
Definition: pidl.c:816
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
Definition: pidl.c:1454
BOOL _ILIsValue(LPCITEMIDLIST pidl)
Definition: pidl.c:2127
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
static PCUIDLIST_RELATIVE HIDA_GetPIDLItem(CIDA const *pida, SIZE_T i)
Definition: shellutils.h:637
static PCUIDLIST_ABSOLUTE HIDA_GetPIDLFolder(CIDA const *pida)
Definition: shellutils.h:632
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42

◆ InvokeCommand()

HRESULT WINAPI COpenWithMenu::InvokeCommand ( LPCMINVOKECOMMANDINFO  lpcmi)
override

Implements IContextMenu.

Definition at line 1334 of file COpenWithMenu.cpp.

1335{
1336 const SIZE_T idChooseApp = m_idCmdLast;
1337 HRESULT hr = E_FAIL;
1338
1339 TRACE("This %p idFirst %u idLast %u idCmd %u\n", this, m_idCmdFirst, m_idCmdLast, m_idCmdFirst + LOWORD(lpici->lpVerb));
1340
1341 if (!IS_INTRESOURCE(lpici->lpVerb) && SHELL_MapContextMenuVerbToCmdId(lpici, g_VerbMap) == 0)
1342 goto DoChooseApp;
1343
1344 if (IS_INTRESOURCE(lpici->lpVerb) && m_idCmdFirst + LOWORD(lpici->lpVerb) <= m_idCmdLast)
1345 {
1346 if (m_idCmdFirst + LOWORD(lpici->lpVerb) == idChooseApp)
1347 {
1348DoChooseApp:
1351
1352 info.pcszFile = m_wszPath;
1353 info.oaifInFlags = OAIF_EXEC;
1354 if (pwszExt[0])
1356 info.pcszClass = NULL;
1357 hr = SHOpenWithDialog(lpici->hwnd, &info);
1358 }
1359 else
1360 {
1361 /* retrieve menu item info */
1362 MENUITEMINFOW mii;
1363 ZeroMemory(&mii, sizeof(mii));
1364 mii.cbSize = sizeof(mii);
1365 mii.fMask = MIIM_DATA | MIIM_FTYPE;
1366
1367 if (GetMenuItemInfoW(m_hSubMenu, LOWORD(lpici->lpVerb), TRUE, &mii) && mii.dwItemData)
1368 {
1369 /* launch item with specified app */
1372 hr = S_OK;
1373 }
1374 }
1375 }
1376
1377 return hr;
1378}
HRESULT WINAPI SHOpenWithDialog(HWND hwndParent, const OPENASINFO *poainfo)
static BOOL Execute(SApp *pApp, LPCWSTR pwszFilePath)
HRESULT SHELL_MapContextMenuVerbToCmdId(LPCMINVOKECOMMANDINFO pICI, const CMVERBMAP *pMap)
Definition: utils.cpp:1745
#define LOWORD(l)
Definition: pedump.c:82
HRESULT hr
Definition: shlfolder.c:183
@ OAIF_EXEC
Definition: shlobj.h:2682
@ OAIF_REGISTER_EXT
Definition: shlobj.h:2681
@ OAIF_ALLOW_REGISTRATION
Definition: shlobj.h:2680
#define IS_INTRESOURCE(i)
Definition: winuser.h:580

◆ QueryContextMenu()

HRESULT WINAPI COpenWithMenu::QueryContextMenu ( HMENU  hMenu,
UINT  indexMenu,
UINT  idCmdFirst,
UINT  idCmdLast,
UINT  uFlags 
)
override

Implements IContextMenu.

Definition at line 1258 of file COpenWithMenu.cpp.

1264{
1265 TRACE("hMenu %p indexMenu %u idFirst %u idLast %u uFlags %u\n", hMenu, indexMenu, idCmdFirst, idCmdLast, uFlags);
1266
1267 INT DefaultPos = GetMenuDefaultItem(hMenu, TRUE, 0);
1268
1269 WCHAR wszName[100];
1270 UINT NameId = (DefaultPos == -1 ? IDS_OPEN : IDS_OPEN_WITH);
1271 if (!LoadStringW(shell32_hInstance, NameId, wszName, _countof(wszName)))
1272 {
1273 ERR("Failed to load string\n");
1274 return E_FAIL;
1275 }
1276
1277 /* Init first cmd id and submenu */
1278 m_idCmdFirst = m_idCmdLast = idCmdFirst;
1279 m_hSubMenu = NULL;
1280
1281 /* We can only be a submenu if we are not the default */
1282 if (DefaultPos != -1)
1283 {
1284 /* Load applications list */
1285 m_pAppList->Load();
1287
1288 /* Create submenu only if there is more than one application and menu has a default item */
1290 {
1292
1293 for(UINT i = 0; i < m_pAppList->GetCount(); ++i)
1294 {
1296 if (pApp->bRecommended)
1297 AddApp(pApp);
1298 }
1299
1301 }
1302 }
1303
1304 /* Insert menu item */
1305 MENUITEMINFOW mii;
1306 ZeroMemory(&mii, sizeof(mii));
1307 mii.cbSize = sizeof(mii);
1309 if (m_hSubMenu)
1310 {
1311 mii.fMask |= MIIM_SUBMENU;
1312 mii.hSubMenu = m_hSubMenu;
1313 mii.wID = -1;
1314 }
1315 else
1316 mii.wID = m_idCmdLast;
1317
1318 mii.fType = MFT_STRING;
1319 mii.dwTypeData = (LPWSTR)wszName;
1320 mii.fState = MFS_ENABLED;
1321 if (DefaultPos == -1)
1322 {
1323 mii.fState |= MFS_DEFAULT;
1324 indexMenu = 0;
1325 }
1326
1327 if (!InsertMenuItemW(hMenu, indexMenu, TRUE, &mii))
1328 return E_FAIL;
1329
1331}
#define IDS_OPEN
Definition: resource.h:18
BOOL LoadRecommended(LPCWSTR pwszFilePath)
UINT GetRecommendedCount()
SApp * GetList()
VOID AddChooseProgramItem()
VOID AddApp(PVOID pApp)
UINT uFlags
Definition: api.c:59
#define MAKE_HRESULT(sev, fac, code)
Definition: dmerror.h:30
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned int UINT
Definition: ndis.h:50
#define IDS_OPEN_WITH
Definition: shresdef.h:134
#define SEVERITY_SUCCESS
Definition: winerror.h:64
HMENU WINAPI CreatePopupMenu(void)
Definition: menu.c:838
UINT WINAPI GetMenuDefaultItem(_In_ HMENU hMenu, _In_ UINT fByPos, _In_ UINT gmdiFlags)
#define MFS_DEFAULT
Definition: winuser.h:751
#define MIIM_SUBMENU
Definition: winuser.h:726

Member Data Documentation

◆ m_hSubMenu

HMENU COpenWithMenu::m_hSubMenu
private

◆ m_idCmdFirst

UINT COpenWithMenu::m_idCmdFirst
private

Definition at line 35 of file COpenWithMenu.h.

Referenced by COpenWithMenu(), GetCommandString(), InvokeCommand(), and QueryContextMenu().

◆ m_idCmdLast

UINT COpenWithMenu::m_idCmdLast
private

◆ m_pAppList

COpenWithList* COpenWithMenu::m_pAppList
private

Definition at line 38 of file COpenWithMenu.h.

Referenced by AddApp(), COpenWithMenu(), QueryContextMenu(), and ~COpenWithMenu().

◆ m_wszPath

WCHAR COpenWithMenu::m_wszPath[MAX_PATH]
private

Definition at line 36 of file COpenWithMenu.h.

Referenced by Initialize(), InvokeCommand(), and QueryContextMenu().


The documentation for this class was generated from the following files: