• BCG ribbon在对话框中使用


    1、对话框中添加pic control

     2、对话框类头文件中声明:

    void InitRibbonBar();

        CStatic    m_wndRibbonPlaceHolder;
        CBCGPRibbonBar            m_wndRibbonBar;
        CBCGPRibbonMainButton    m_MainButton;

    3、实现文件中:

    BOOL CRibbonDialogDlg::OnInitDialog()
    {
        CBCGPDialog::OnInitDialog();

        {
            CRect rectRibbon;
            m_wndRibbonPlaceHolder.GetWindowRect(rectRibbon);
            ScreenToClient(rectRibbon);

            m_wndRibbonBar.Create(this);
            m_wndRibbonBar.SetWindowPos(NULL, rectRibbon.left, rectRibbon.top, rectRibbon.Width(), m_wndRibbonBar.GetDefaultHeight(), SWP_NOZORDER | SWP_NOACTIVATE);
            m_wndRibbonBar.SetOwner(this);
            m_wndRibbonBar.ModifyStyle(0, WS_TABSTOP);

            InitRibbonBar();

            CBCGPStaticLayout* pLayout = (CBCGPStaticLayout*)GetLayout();
            if (pLayout != NULL)
            {
                pLayout->AddAnchor(m_wndRibbonBar.GetSafeHwnd(), CBCGPStaticLayout::e_MoveTypeNone, CBCGPStaticLayout::e_SizeTypeHorz);
                pLayout->AddAnchor(IDOK, CBCGPStaticLayout::e_MoveTypeBoth, CBCGPStaticLayout::e_SizeTypeNone);
                pLayout->AddAnchor(IDCANCEL, CBCGPStaticLayout::e_MoveTypeBoth, CBCGPStaticLayout::e_SizeTypeNone);
            }
        }

        return TRUE;  // return TRUE  unless you set the focus to a control
    }

    void CRibbonDialogDlg::InitRibbonBar()
    {
        m_MainButton.SetToolTipText(_T("File"));
        m_MainButton.SetText(_T("\nf"));
        m_MainButton.SetScenicText(_T("File"));
        m_wndRibbonBar.SetMainButton(&m_MainButton, CSize(0, 0));

        m_wndRibbonBar.SetScenicLook();

        CBCGPRibbonMainPanel* pFile1 = m_wndRibbonBar.AddMainCategory(_T("File"), IDB_RIBBON_FILE_SMALL, IDB_RIBBON_FILE_LARGE);
        pFile1->Add(new CBCGPRibbonButton(ID_FILE_NEW, _T("New\n"), 0, 0));

        CBCGPRibbonCategory* pTest = m_wndRibbonBar.AddCategory(_T("test"), IDB_RIBBON_FILE_SMALL, IDB_RIBBON_FILE_LARGE);
        CBCGPRibbonPanel* pPanelClipboard = pTest->AddPanel(_T("test"));
        pPanelClipboard->Add(new CBCGPRibbonButton(ID_FILE_NEW, _T("New\n"), 0, 0));
        pPanelClipboard->Add(new CBCGPRibbonButton(ID_EDIT_COPY, _T("Cut\n"), 0, 0));

        CBCGPRibbonCategory* pHome = m_wndRibbonBar.AddCategory(_T("home"), IDB_RIBBON_FILE_SMALL, IDB_RIBBON_FILE_LARGE);

        m_wndRibbonBar.ForceRecalcLayout();
    }
    实现的效果图如下所示:

  • 相关阅读:
    数据结构与算法01-算法的评估(大O表示法) 算法的优化方向
    Kubernetes云原生实战03 搭建高可用负载均衡器(Keepalived 和 HAproxy)
    三年经验前端vue面试记录
    [前端开发] 前端工程代码规范 Husky + Commitlint + Prettier + Eslint + Stylelint
    2656. K 个元素的最大和 --力扣 --JAVA
    PyTorch神经网络-激励函数
    合同管理系统
    [Excel知识技能] Excel数据类型
    Babylonjs学习笔记(三)——创建天空盒
    OpenMMLab【超级视客营】——支持InverseForm Loss(MMSegmentation的第三个PR)
  • 原文地址:https://blog.csdn.net/u011269801/article/details/126316509