visualstudio如何打开菜单资源

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了visualstudio如何打开菜单资源相关的知识,希望对你有一定的参考价值。

参考技术A 1、以管理员身份运行程序后,单击查看菜单。
2、随后找到该栏目下的,解决方案资源管理器按钮。
3、待页面以及相关资源文件出现。

如何在MFC应用程序中添加文档菜单?

当您单击右键单击visual studio中的任何选项卡时,将出现一个菜单,其中包含一些选项,如(保存,关闭除此之外的全部,复制完整路径,打开包含文件夹,....)。如何在MFC(doc / view)选项卡式应用程序中添加这样的菜单?提前致谢。

答案

你应该有多个菜单。 IDR_MAINFRAME通常在没有打开文件时使用,这不是你想要的文件。

资源编辑器应该显示另一个主菜单(不是弹出菜单),其ID类似于IDR_MyAppTYPE。此菜单ID应该已经在您的CWinAppEx类中:

BOOL CMyApp::InitInstance()
{
    ...
    pDocTemplate = new CMultiDocTemplate(IDR_MyAppTYPE, ...);
    ...
}

这是您的文档菜单。

使用资源编辑器编辑此菜单。添加命令"Close all but this",菜单命令的id将类似于ID_WINDOW_CLOSEALL_BUT_THIS

您必须在CView派生类中处理此命令。例:

BEGIN_MESSAGE_MAP(CMyView, CView)
    ON_COMMAND(ID_WINDOW_CLOSEALL_BUT_THIS, OnCloseAllButThis)
    ...
END_MESSAGE_MAP()

void CMyView::OnCloseAllButThis()
{
    POSITION p1 = AfxGetApp()->GetFirstDocTemplatePosition();
    while(p1)
    {
        CDocTemplate *doctempl = AfxGetApp()->GetNextDocTemplate(p1);
        POSITION p2 = doctempl->GetFirstDocPosition();
        while(p2)
        {
            CDocument* doc = doctempl->GetNextDoc(p2);
            POSITION p3 = doc->GetFirstViewPosition();
            while(p3)
            {
                CView* view = doc->GetNextView(p3);
                if(view && view->GetParentFrame() && view != this)
                    view->GetParentFrame()->SendMessage(WM_CLOSE);
            }
        }
    }
}
另一答案

我已经在函数WM_RBUTTONUP上处理了PreTranslateMessage消息,如下所示:

BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
{
  if( WM_RBUTTONUP == pMsg->message)
  {
    //check that the right click is on MDI tab area.
    CWnd* pWnd = FromHandle(pMsg->hwnd);
    CMFCTabCtrl* tabGroup = dynamic_cast<CMFCTabCtrl*>(pWnd);
    if (tabGroup)
    {
      CPoint clickLocation = pMsg->pt;
      tabGroup->ScreenToClient(&clickLocation);
      int tabIndex = tabGroup->GetTabFromPoint(clickLocation);
      if (tabIndex != -1)
      {
        CWnd* pTab = tabGroup->GetTabWnd(tabIndex);
        if (pTab)
        {
          CPoint point = pMsg->pt;
          ClientToScreen (&point);
          ShowPopupTabOptions(point);
        }
      }
    }
  }

  return CMDIFrameWndEx::PreTranslateMessage(pMsg);
}

以上是关于visualstudio如何打开菜单资源的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2013仅在调试菜单中显示附件

如何在MFC应用程序中添加文档菜单?

默认情况下如何在双击表单时打开代码?

MFC - 如何从菜单主机调用对话框

Visual studio 2010解决方案资源管理器中没有“解决方案(*个项目)”怎么调出来

如何让资源管理器的右键菜单中常驻“用 Notepad 打开”功能