void CPluginsDlg::OnRClickPluginsList(NMHDR* pNMHDR, LRESULT* pResult) { DWORD dwID = GetSelectedPluginID(); KP_PLUGIN_INSTANCE *p = m_pPiMgr->GetPluginByID(dwID); UNREFERENCED_PARAMETER(pNMHDR); *pResult = 0; POINT pt; GetCursorPos(&pt); m_popmenu.LoadMenu(IDR_PLUGINS_MENU); m_popmenu.SetMenuDrawMode(BCMENU_DRAWMODE_XP); // <<<!=>>> BCMENU_DRAWMODE_ORIGINAL m_popmenu.SetSelectDisableMode(FALSE); m_popmenu.SetXPBitmap3D(TRUE); m_popmenu.SetBitmapBackground(RGB(255, 0, 255)); m_popmenu.SetIconSize(16, 16); m_popmenu.LoadToolbar(IDR_INFOICONS, IDB_INFOICONS_EX); BCMenu* psub = NewGUI_GetBCMenu(m_popmenu.GetSubMenu(0)); if(psub == NULL) { ASSERT(FALSE); psub = &m_popmenu; } // psub->ModifyODMenu(NULL, (UINT)ID_PLUGIN_ENABLE, m_pImgList, 2); // psub->ModifyODMenu(NULL, (UINT)ID_PLUGIN_DISABLE, m_pImgList, 45); psub->ModifyODMenu(NULL, (UINT)ID_PLUGIN_CONFIG, m_pImgList, 21); psub->ModifyODMenu(NULL, (UINT)ID_PLUGIN_ABOUT, m_pImgList, 22); CPwSafeDlg::_TranslateMenu(psub, FALSE, NULL); if(p != NULL) { // if(p->bEnabled == FALSE) // { // psub->EnableMenuItem(ID_PLUGIN_DISABLE, MF_BYCOMMAND | MF_GRAYED); // psub->EnableMenuItem(ID_PLUGIN_CONFIG, MF_BYCOMMAND | MF_GRAYED); // psub->EnableMenuItem(ID_PLUGIN_ABOUT, MF_BYCOMMAND | MF_GRAYED); // } // else psub->EnableMenuItem(ID_PLUGIN_ENABLE, MF_BYCOMMAND | MF_GRAYED); if(p->hinstDLL == NULL) { psub->EnableMenuItem(ID_PLUGIN_CONFIG, MF_BYCOMMAND | MF_GRAYED); psub->EnableMenuItem(ID_PLUGIN_ABOUT, MF_BYCOMMAND | MF_GRAYED); } } else { // psub->EnableMenuItem(ID_PLUGIN_ENABLE, MF_BYCOMMAND | MF_GRAYED); // psub->EnableMenuItem(ID_PLUGIN_DISABLE, MF_BYCOMMAND | MF_GRAYED); psub->EnableMenuItem(ID_PLUGIN_CONFIG, MF_BYCOMMAND | MF_GRAYED); psub->EnableMenuItem(ID_PLUGIN_ABOUT, MF_BYCOMMAND | MF_GRAYED); } psub->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, this); m_popmenu.DestroyMenu(); }
/** * @brief Offer a context menu */ void CMergeDiffDetailView::OnContextMenu(CWnd* pWnd, CPoint point) { // Create the menu and populate it with the available functions BCMenu menu; VERIFY(menu.LoadMenu(IDR_POPUP_MERGEDETAILVIEW)); VERIFY(menu.LoadToolbar(IDR_MAINFRAME)); theApp.TranslateMenu(menu.m_hMenu); BCMenu *pSub = (BCMenu *)menu.GetSubMenu(0); ASSERT(pSub != NULL); // Context menu opened using keyboard has no coordinates if (point.x == -1 && point.y == -1) { CRect rect; GetClientRect(rect); ClientToScreen(rect); point = rect.TopLeft(); point.Offset(5, 5); } pSub->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, AfxGetMainWnd()); }
BOOL CButtonST::OnClicked() { SetFocus(); if (m_bIsCheckBox) { m_nCheck = !m_nCheck; Invalidate(); } // if else { // Handle the menu (if any) #ifdef BTNST_USE_BCMENU if (m_menuPopup.m_hMenu) #else if (m_hMenu) #endif { CRect rWnd; GetWindowRect(rWnd); m_bMenuDisplayed = TRUE; Invalidate(); #ifdef BTNST_USE_BCMENU BCMenu *psub = (BCMenu*)m_menuPopup.GetSubMenu(0); DWORD dwRetValue = psub->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON | TPM_NONOTIFY | TPM_RETURNCMD, rWnd.left, rWnd.bottom, this, NULL); #else HMENU hSubMenu = ::GetSubMenu(m_hMenu, 0); //DWORD dwRetValue = ::TrackPopupMenuEx(hSubMenu, TPM_LEFTALIGN | TPM_LEFTBUTTON, rWnd.left, rWnd.bottom, m_hParentWndMenu, NULL); DWORD dwRetValue = ::TrackPopupMenuEx(hSubMenu, TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON | TPM_NONOTIFY | TPM_RETURNCMD, rWnd.left, rWnd.bottom, m_hParentWndMenu, NULL); #endif m_bMenuDisplayed = FALSE; Invalidate(); if (dwRetValue) ::PostMessage(m_hParentWndMenu, WM_COMMAND, MAKEWPARAM(dwRetValue, 0), (LPARAM)NULL); } // if else { // Handle the URL (if any) if (_tcslen(m_szURL) > 0) { SHELLEXECUTEINFO csSEI; memset(&csSEI, 0, sizeof(csSEI)); csSEI.cbSize = sizeof(SHELLEXECUTEINFO); csSEI.fMask = SEE_MASK_FLAG_NO_UI; csSEI.lpVerb = _T("open"); csSEI.lpFile = m_szURL; csSEI.nShow = SW_SHOWMAXIMIZED; ::ShellExecuteEx(&csSEI); } // if } // else } // else return FALSE; } // End of OnClicked
void CMymenuView::OnRButtonDown(UINT /*nFlags*/, CPoint point) //SK: removed warning C4100: 'nFlags' : unreferenced formal parameter { popmenu.LoadMenu(IDR_RIGHT_CLICK); popmenu.LoadToolbar(IDR_TOOLBAR); popmenu.LoadToolbar(IDR_MAINFRAME); ClientToScreen(&point); BCMenu *psub = (BCMenu *)popmenu.GetSubMenu(0); BCMenu *pSelect = (BCMenu *)psub->GetSubMenu(1); if(pSelect){ pSelect->AppendMenu(MF_STRING,ID_WINDOW_TILE_HORZ,_T("&Tile")); pSelect->ModifyODMenu(NULL,ID_WINDOW_TILE_HORZ,IDB_WINDOW_TILE); } psub->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,AfxGetMainWnd()); popmenu.DestroyMenu(); }
void FileScrapDropDlg::OnContextMenu(CWnd* pWnd, CPoint pt) { BCMenu sMenu; if (sMenu.LoadMenu(IDR_FILE_SCRAP_DROP) == XPR_TRUE) { if (pt.x == -1 || pt.y == -1) { CRect sRect; GetClientRect(&sRect); ClientToScreen(&sRect); pt = sRect.TopLeft(); } BCMenu *sPopupMenu = (BCMenu *)sMenu.GetSubMenu(0); if (XPR_IS_NOT_NULL(sPopupMenu)) { sPopupMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt, this); } } }
void BookmarkToolBar::OnContextMenu(CWnd* pWnd, CPoint aPoint) { CToolBarCtrl &sToolBarCtrl = GetToolBarCtrl(); CPoint sClientPoint(aPoint); ScreenToClient(&sClientPoint); xpr_bool_t sSucceeded = XPR_FALSE; xpr_sint_t sIndex = sToolBarCtrl.HitTest(&sClientPoint); if (GetKeyState(VK_CONTROL) < 0 && sIndex >= 0) { BookmarkItem *sBookmarkItem = BookmarkMgr::instance().getBookmark(sIndex); if (sBookmarkItem != XPR_NULL) { LPITEMIDLIST sFullPidl = sBookmarkItem->getPidl(); if (sFullPidl != XPR_NULL) { xpr_bool_t sResult; LPSHELLFOLDER sShellFolder = XPR_NULL; LPCITEMIDLIST sPidl = XPR_NULL; sResult = fxfile::base::Pidl::getSimplePidl(sFullPidl, sShellFolder, sPidl); if (SUCCEEDED(sResult) && sShellFolder != XPR_NULL && sPidl != XPR_NULL) { ContextMenu sContextMenu(GetSafeHwnd()); if (sContextMenu.init(sShellFolder, &sPidl, 1)) { TBBUTTON sTbButton = {0}; sToolBarCtrl.GetButton(sIndex, &sTbButton); sToolBarCtrl.SetState(sTbButton.idCommand, TBSTATE_MARKED | TBSTATE_ENABLED); xpr_uint_t sId = sContextMenu.trackPopupMenu(TPM_LEFTALIGN | TPM_RETURNCMD | TPM_RIGHTBUTTON, &aPoint, CMF_EXPLORE); if (sId != -1) { sId -= sContextMenu.getFirstId(); xpr_tchar_t sVerb[0xff] = {0}; sContextMenu.getCommandVerb(sId, sVerb, 0xfe); xpr_bool_t sSelfInvoke = XPR_FALSE; if (_tcsicmp(sVerb, CMID_VERB_OPEN) == 0) { gFrame->gotoBookmark(sIndex); sSelfInvoke = XPR_TRUE; } if (sSelfInvoke == XPR_FALSE) sContextMenu.invokeCommand(sId); } sToolBarCtrl.GetButton(sIndex, &sTbButton); sToolBarCtrl.SetState(sTbButton.idCommand, TBSTATE_ENABLED); } sContextMenu.destroy(); sSucceeded = XPR_TRUE; } COM_RELEASE(sShellFolder); COM_FREE(sFullPidl); } } } if (sSucceeded == XPR_FALSE) { BCMenu sMenu; if (sMenu.LoadMenu(IDR_COOLBAR_BOOKMARKBAR) == XPR_TRUE) { BCMenu *sPopupMenu = (BCMenu *)sMenu.GetSubMenu(0); if (XPR_IS_NOT_NULL(sPopupMenu)) sPopupMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, aPoint, AfxGetMainWnd()); } } }
/** * Show context menu and handle user selection. */ void CLocationView::OnContextMenu(CWnd* pWnd, CPoint point) { if (point.x == -1 && point.y == -1) { //keystroke invocation CRect rect; GetClientRect(rect); ClientToScreen(rect); point = rect.TopLeft(); point.Offset(5, 5); } CRect rc; CPoint pt = point; GetClientRect(rc); ScreenToClient(&pt); BCMenu menu; VERIFY(menu.LoadMenu(IDR_POPUP_LOCATIONBAR)); theApp.TranslateMenu(menu.m_hMenu); BCMenu* pPopup = (BCMenu *) menu.GetSubMenu(0); ASSERT(pPopup != NULL); CCmdUI cmdUI; cmdUI.m_pMenu = pPopup; cmdUI.m_nIndexMax = cmdUI.m_pMenu->GetMenuItemCount(); for (cmdUI.m_nIndex = 0 ; cmdUI.m_nIndex < cmdUI.m_nIndexMax ; ++cmdUI.m_nIndex) { cmdUI.m_nID = cmdUI.m_pMenu->GetMenuItemID(cmdUI.m_nIndex); switch (cmdUI.m_nID) { case ID_DISPLAY_MOVED_NONE: cmdUI.SetRadio(m_displayMovedBlocks == DISPLAY_MOVED_NONE); break; case ID_DISPLAY_MOVED_ALL: cmdUI.SetRadio(m_displayMovedBlocks == DISPLAY_MOVED_ALL); break; case ID_DISPLAY_MOVED_FOLLOW_DIFF: cmdUI.SetRadio(m_displayMovedBlocks == DISPLAY_MOVED_FOLLOW_DIFF); break; } } CString strItem; CString strNum; int nLine = -1; int bar = IsInsideBar(rc, pt); // If cursor over bar, format string with linenumber, else disable item if (bar != BAR_NONE) { // If outside bar area use left bar if (bar == BAR_YAREA) bar = BAR_LEFT; nLine = GetLineFromYPos(pt.y, bar); strNum.Format(_T("%d"), nLine + 1); // Show linenumber not lineindex } else pPopup->EnableMenuItem(ID_LOCBAR_GOTODIFF, MF_GRAYED); LangFormatString1(strItem, ID_LOCBAR_GOTOLINE_FMT, strNum); pPopup->SetMenuText(ID_LOCBAR_GOTODIFF, strItem, MF_BYCOMMAND); // invoke context menu // we don't want to use the main application handlers, so we use flags TPM_NONOTIFY | TPM_RETURNCMD // and handle the command after TrackPopupMenu int command = pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_NONOTIFY | TPM_RETURNCMD, point.x, point.y, AfxGetMainWnd()); CMergeDoc* pDoc = GetDocument(); switch (command) { case ID_LOCBAR_GOTODIFF: m_view[MERGE_VIEW_LEFT]->GotoLine(nLine, true, bar); if (bar == BAR_LEFT || bar == BAR_RIGHT) m_view[bar]->SetFocus(); break; case ID_EDIT_WMGOTO: m_view[MERGE_VIEW_LEFT]->WMGoto(); break; case ID_DISPLAY_MOVED_NONE: SetConnectMovedBlocks(DISPLAY_MOVED_NONE); pDoc->SetDetectMovedBlocks(FALSE); break; case ID_DISPLAY_MOVED_ALL: SetConnectMovedBlocks(DISPLAY_MOVED_ALL); pDoc->SetDetectMovedBlocks(TRUE); break; case ID_DISPLAY_MOVED_FOLLOW_DIFF: SetConnectMovedBlocks(DISPLAY_MOVED_FOLLOW_DIFF); pDoc->SetDetectMovedBlocks(TRUE); break; } }