void CHistTracksListCtrl::InitMainMenu(BCMenu& menu) { int a = GetSelectedCount(); menu.EnableMenuItem(ACMD_OpenFolder, a == 1 ? MF_ENABLED : MF_GRAYED); menu.EnableMenuItem(ACMD_History, a == 1 ? MF_ENABLED : MF_GRAYED); }
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
BOOL NewGUI_SetIcon(BCMenu& rMenu, UINT uCommand, int nResourceID) { CString strMenuItemText; if(rMenu.GetMenuText(uCommand, strMenuItemText, MF_BYCOMMAND) == FALSE) return FALSE; if(strMenuItemText.GetLength() == 0) return FALSE; if(rMenu.ModifyODMenu(NULL, uCommand, nResourceID) == FALSE) return FALSE; return TRUE; }
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(); }
void CCWArrangePage::OnRclickListTracks(NMHDR* pNMHDR, LRESULT* pResult) { POSITION pos = m_List.GetFirstSelectedItemPosition (); if (pos == NULL) return; int idx = m_List.GetNextSelectedItem (pos); BCMenu menu; if (m_List.GetItemText (idx, 0) == STR_SEPARATOR) menu.LoadMenu (IDR_MENU_SEP); else { menu.LoadMenu (IDR_MENU_TRACK); if (!m_pTracks->IsManuallyEditable ()) ((BCMenu*) menu.GetSubMenu (0))->RemoveMenu (ID_DELETETRACK, MF_BYCOMMAND); } menu.LoadToolbar (IDR_TOOLBAR_GRP); CPoint pt; GetCursorPos (&pt); menu.GetSubMenu (0)->TrackPopupMenu (TPM_RIGHTALIGN, pt.x, pt.y, this); menu.DestroyMenu (); *pResult = 0; }
void CHistTracksListCtrl::CreateMainMenu(BCMenu& menu) { PrgAPI* pAPI = PRGAPI(); menu.AppendMenu(MF_STRING, ACMD_Play, (LPTSTR) pAPI->GetString(IDS_PLAY), pAPI->GetIcon(ICO_Play16)); menu.SetDefaultItem(ACMD_Play); menu.AppendMenu(MF_STRING, ACMD_Enqueue, (LPTSTR) pAPI->GetString(IDS_ENQUEUE), pAPI->GetIcon(ICO_Add16)); menu.AppendMenu(MF_SEPARATOR, NULL, NULL); menu.AppendMenu(MF_STRING, ACMD_OpenFolder, (LPTSTR) pAPI->GetString(IDS_OPENCONTAININGFOLDER), pAPI->GetIcon(ICO_Find16)); menu.AppendMenu(MF_SEPARATOR, NULL, NULL); menu.AppendMenu(MF_STRING, ID_EXPORTSELECTION, (LPTSTR) pAPI->GetString(IDS_EXPORTSELECTEDLINES)); menu.AppendMenu(MF_STRING, ID_EXPORTALL, (LPTSTR) pAPI->GetString(IDS_EXPORTALL)); menu.AppendMenu(MF_SEPARATOR, NULL, NULL); menu.AppendMenu(MF_STRING, ACMD_History, (LPTSTR) pAPI->GetString(IDS_SHOWHISTORY)); //menu.LoadToolbar(IDR_MAINLISTNORMAL); }
void CShowMenu::InsertMenu(int subpos,int pos,DWORD dwMenuItemID,const char* pszMenuStr) { BCMenu* pSubMenu = (BCMenu*)m_pMenu->GetSubMenu(subpos); string strInput = pszMenuStr; int iPos = -1; while( (iPos = strInput.find('&',iPos+1)) != string::npos ) { string strLeft = strInput.substr(0,iPos); string strRight = strInput.substr(iPos,strInput.length()-iPos+1); iPos++; strInput = strLeft + string("&") + strRight; } pSubMenu->InsertMenu( pos,MF_BYPOSITION|MF_STRING,dwMenuItemID,strInput.c_str() ); }
void CDemoView::OnContextMenu(CWnd* /*pWnd*/, CPoint point) { CDemoDoc* pDoc = GetDocument(); if (pDoc && pDoc->m_tool==2) return; #ifdef VATI_EXTENSIONS // suppress context menu if right-click function was called just now if ( m_suppressContextMenu == true ) return; #endif static UINT toolbars[]={ IDR_MAINFRAME, IDR_TOOLBAR1, }; BCMenu menu; menu.LoadMenu(IDM_CXIMAGE1); menu.LoadToolbars(toolbars,2); CMenu *pContextMenu=menu.GetSubMenu(0); pContextMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON,point.x,point.y,AfxGetMainWnd()); }
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); } } }
/** * @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()); }
LRESULT CKeyborDlg::OnNotifyIcon(WPARAM wParam,LPARAM lParam) { //单击鼠标左键 if((lParam==WM_LBUTTONDOWN)&&(!ShowWindow(SW_HIDE))) { OnSet(); } //鼠标单击右键 if(lParam==WM_RBUTTONDOWN) { // 弹出菜单 POINT rpoint; GetCursorPos(&rpoint); BCMenu mu; mu.LoadMenu(IDR_MENU1); SetForegroundWindow(); mu.GetSubMenu(0)->SetDefaultItem(ID_32779); mu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,rpoint.x,rpoint.y,this); } return 0; }
// Control status change. LRESULT Brainchild::OnStatusUpdate( LPNMSTATUSUPDATE pStatusUpd, BOOL& bNotifyParent ) { // No need to bother the parent. bNotifyParent = FALSE; if ( m_pOwner ) { // Check, if there is a file to open /*BOOL bIsPathSelected = FALSE; { TCHAR szSelection[MAX_PATH]; if (GetSelectionLength() && GetSelectionLength() < MAX_PATH+2) { GetSelection(szSelection); szSelection[GetSelectionLength()-2] = 0; } else szSelection[0] = 0; if (_tcslen(szSelection) && (_tcsstr(szSelection, _T(":")) || _tcsstr(szSelection, _T("\\")) || _tcsstr(szSelection, _T(".")))) bIsPathSelected = TRUE; }*/ // Get child menu. BCMenu *pMenu = &m_pOwner->m_pFrame->m_ChildMenu; // Update menus... pMenu->EnableItem( IDM_COPY, pStatusUpd->bCanCopy ? MF_BYCOMMAND | MF_ENABLED : MF_BYCOMMAND | MF_GRAYED ); pMenu->EnableItem( IDM_CLEARBM, pStatusUpd->bBookmarks ? MF_BYCOMMAND | MF_ENABLED : MF_BYCOMMAND | MF_GRAYED ); pMenu->EnableItem( IDM_FIRSTBM, pStatusUpd->bBookmarks ? MF_BYCOMMAND | MF_ENABLED : MF_BYCOMMAND | MF_GRAYED ); pMenu->EnableItem( IDM_NEXTBM, pStatusUpd->bBookmarks ? MF_BYCOMMAND | MF_ENABLED : MF_BYCOMMAND | MF_GRAYED ); pMenu->EnableItem( IDM_PREVBM, pStatusUpd->bBookmarks ? MF_BYCOMMAND | MF_ENABLED : MF_BYCOMMAND | MF_GRAYED ); pMenu->EnableItem( IDM_LASTBM, pStatusUpd->bBookmarks ? MF_BYCOMMAND | MF_ENABLED : MF_BYCOMMAND | MF_GRAYED ); //pMenu->EnableItem(IDM_OPEN_SELECTED_PATH, bIsPathSelected ? MF_BYCOMMAND | MF_ENABLED : MF_BYCOMMAND | MF_GRAYED ); // And the popup menu... pMenu = &m_pOwner->m_pFrame->m_ContextMenu; pMenu->EnableItem(IDM_COPY, pStatusUpd->bCanCopy ? MF_BYCOMMAND | MF_ENABLED : MF_BYCOMMAND | MF_GRAYED ); //pMenu->EnableItem(IDM_OPEN_SELECTED_PATH, bIsPathSelected ? MF_BYCOMMAND | MF_ENABLED : MF_BYCOMMAND | MF_GRAYED ); // And toolbar buttons. BCToolbar *pTool = &m_pOwner->m_pFrame->m_Toolbar; pTool->EnableButton( IDM_COPY, pStatusUpd->bCanCopy ); pTool->EnableButton( IDM_CLEARBM, pStatusUpd->bBookmarks ); pTool->EnableButton( IDM_NEXTBM, pStatusUpd->bBookmarks ); pTool->EnableButton( IDM_PREVBM, pStatusUpd->bBookmarks ); // Update... m_pOwner->SetTitle(); } return 0; }
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 CShowMenu::InsertMenu(int subpos,int pos, UINT nFlag) { BCMenu* pSubMenu = (BCMenu*)m_pMenu->GetSubMenu(subpos); pSubMenu->InsertMenu( pos, nFlag ); }
void FileScrapDropDlg::OnInitMenuPopup(CMenu* pPopupMenu, xpr_uint_t nIndex, xpr_bool_t bSysMenu) { ASSERT(pPopupMenu != XPR_NULL); //super::OnInitMenuPopup(pPopupMenu, nIndex, bSysMenu); // for multi-language BCMenu *pBCPopupMenu = dynamic_cast<BCMenu *>(pPopupMenu); if (pBCPopupMenu != XPR_NULL) { xpr_uint_t sId; xpr_sint_t sCount = pBCPopupMenu->GetMenuItemCount(); const xpr_tchar_t *sStringId; const xpr_tchar_t *sString; xpr::string sMenuText; CommandStringTable &sCommandStringTable = CommandStringTable::instance(); xpr_sint_t i; for (i = 0; i < sCount; ++i) { sId = pBCPopupMenu->GetMenuItemID(i); // apply string table if (sId != 0) // if sId is 0, it's separator. { if (sId == -1) { // if sId(xpr_uint_t) is -1, it's sub-menu. pBCPopupMenu->GetMenuText(i, sMenuText, MF_BYPOSITION); sString = gApp.loadString(sMenuText); pBCPopupMenu->SetMenuText(i, (xpr_tchar_t *)sString, MF_BYPOSITION); } else { sStringId = sCommandStringTable.loadString(sId); if (sStringId != XPR_NULL) { sString = gApp.loadString(sStringId); pBCPopupMenu->SetMenuText(sId, (xpr_tchar_t *)sString, MF_BYCOMMAND); } } } } } // Check the enabled state of various menu items. CCmdUI sState; sState.m_pMenu = pPopupMenu; ASSERT(sState.m_pOther == XPR_NULL); ASSERT(sState.m_pParentMenu == XPR_NULL); // Determine if menu is popup in top-level menu and set m_pOther to // it if so (m_pParentMenu == XPR_NULL indicates that it is secondary popup). HMENU sParentMenu; if (AfxGetThreadState()->m_hTrackingMenu == pPopupMenu->m_hMenu) sState.m_pParentMenu = pPopupMenu; // Parent == child for tracking popup. else if ((sParentMenu = ::GetMenu(m_hWnd)) != XPR_NULL) { CWnd *sParentWnd = this; // Child windows don't have menus--need to go to the top! if (sParentWnd != XPR_NULL && (sParentMenu = ::GetMenu(sParentWnd->m_hWnd)) != XPR_NULL) { xpr_sint_t sIndex; xpr_sint_t sIndexMax = ::GetMenuItemCount(sParentMenu); for (sIndex = 0; sIndex < sIndexMax; ++sIndex) { if (::GetSubMenu(sParentMenu, sIndex) == pPopupMenu->m_hMenu) { // When popup is found, m_pParentMenu is containing menu. sState.m_pParentMenu = CMenu::FromHandle(sParentMenu); break; } } } } sState.m_nIndexMax = pPopupMenu->GetMenuItemCount(); for (sState.m_nIndex = 0; sState.m_nIndex < sState.m_nIndexMax; ++sState.m_nIndex) { sState.m_nID = pPopupMenu->GetMenuItemID(sState.m_nIndex); if (sState.m_nID == 0) continue; // Menu separator or invalid cmd - ignore it. ASSERT(sState.m_pOther == XPR_NULL); ASSERT(sState.m_pMenu != XPR_NULL); if (sState.m_nID == (xpr_uint_t)-1) { // Possibly a popup menu, route to first item of that popup. sState.m_pSubMenu = pPopupMenu->GetSubMenu(sState.m_nIndex); if (sState.m_pSubMenu == XPR_NULL || (sState.m_nID = sState.m_pSubMenu->GetMenuItemID(0)) == 0 || sState.m_nID == (xpr_uint_t)-1) { continue; // First item of popup can't be routed to. } sState.DoUpdate(this, XPR_TRUE); // Popups are never auto disabled. } else { // Normal menu item. // Auto enable/disable if frame window has m_bAutoMenuEnable // set and command is _not_ a system command. sState.m_pSubMenu = XPR_NULL; sState.DoUpdate(this, XPR_FALSE); } // Adjust for menu deletions and additions. xpr_uint_t sCount = pPopupMenu->GetMenuItemCount(); if (sCount < sState.m_nIndexMax) { sState.m_nIndex -= (sState.m_nIndexMax - sCount); while (sState.m_nIndex < sCount && pPopupMenu->GetMenuItemID(sState.m_nIndex) == sState.m_nID) { sState.m_nIndex++; } } sState.m_nIndexMax = sCount; } }
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; } }