【问题标题】:How to remove the close button from an MFC caption bar如何从 MFC 标题栏中删除关闭按钮
【发布时间】:2010-10-25 04:36:24
【问题描述】:

是否有一种简单的方法可以从 MFC 功能包标题栏中删除关闭按钮?

(我说的不是窗口标题,我说的是这些应用中可以出现在客户区顶部的小信息栏——即:CMFCCaptionBar)

谢谢

【问题讨论】:

    标签: mfc mfc-feature-pack


    【解决方案1】:

    删除位图对我有用。请参阅 Visual C++ 2008 功能包中的 MSOffice2007Demo 示例。

    注释掉 CMainFrame:CreateMessageBar() 中的以下行

    //m_wndMessageBar.SetBitmap(IDB_INFO, RGB(255, 255, 255), FALSE, CMFCCaptionBar::ALIGN_LEFT);
    

    没有关闭按钮的标题栏

    【讨论】:

      【解决方案2】:

      想出了一个办法……

      class CNoCloseCaptionBar : public CMFCCaptionBar
      {
      public:
          CNoCloseCaptionBar()
          {
          }
      
          virtual void RecalcLayout()
          {
              __super::RecalcLayout();
              m_rectClose.SetRectEmpty();
          }
      
      };
      

      【讨论】:

      • 无耻 hack 直接修改受保护的基类成员,但遗憾的是我没有更好的选择。这并不能阻止他们关闭标题栏,只是阻止 x 按钮被绘制……您必须重载适当的方法以实际防止通过其他方式关闭。
      猜你喜欢
      • 1970-01-01
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      • 2012-11-26
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 1970-01-01
      相关资源
      最近更新 更多