• 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();
    }
    实现的效果图如下所示:

  • 相关阅读:
    Tableau 自定义调色板及应用全流程讲解【保姆级】
    前端开发:创建可拖动的固定位置 `<div>` 和自动隐藏悬浮按钮
    python多线程系列—Event对象(六)
    微信截图不能截微信界面
    java计算机毕业设计家庭安防系统源码+mysql数据库+系统+lw文档+部署
    自定义TAG标签页面聚合
    Java全栈课程之SpringSecurity详解
    多线程与高并发(13)——Java常见并发容器总结
    1019. 链表中的下一个更大节点
    多线程并发环境下,数据的安全问题&&线程池
  • 原文地址:https://blog.csdn.net/u011269801/article/details/126316509