MFCRibbion工具栏透明图片

创建:

    //添加考试按钮再底部
    if(!m_examToolBar.CreateEx(this,TBSTYLE_FLAT,WS_VISIBLE | WS_CHILD | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_BOTTOM,CRect(0,0,0,0),IDR_TOOLBAR_EXAM) ||
        !m_examToolBar.LoadToolBar(IDR_TOOLBAR_EXAM, 0, 0, TRUE, 0, 0, theApp.m_bHiColorIcons ? IDB_TOOLBAR_EXAM : 0))
    {
        TRACE0("Failed to create toolbar\n");
        return -1;      // fail to create
    }
    //m_wndToolBar.EnableDocking(CBRS_ALIGN_LEFT);//取消浮动,工具栏永远停靠
    EnableDocking(CBRS_ALIGN_BOTTOM);
    DockPane(&m_examToolBar);
    m_examToolBar.EnableTextLabels();
    m_examToolBar.AdjustLayout();
    m_examToolBar.ShowPane(FALSE,FALSE,FALSE);

添加菜单时选中最后一个,然后用画笔随便画点啥,就会自动添加一个,然后设置控件ID后关联他的菜单更新和菜单回调函数就好了。

这里写图片描述
但是有个坑,如果在此处设置的菜单大小与使用的图片菜单大小不匹配,最终显示出来的界面可能会不正常,比如按钮图片时黑色的。如下:
这里写图片描述
这是正常的菜单:
这里写图片描述

附:PS制作透明bmp图片,用于ribbon控件:
首先做好透明图标:
这里写图片描述

使用魔棒工具选择:
这里写图片描述

右键反向选择:
这里写图片描述

再右键储存选区:
这里写图片描述

点确定:
这里写图片描述
通道多了alpha:
这里写图片描述

储存为bmp:
这里写图片描述

选32位:
这里写图片描述

然后把资源加到工程,加载就好了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用VS2010创建一个带Ribbon样式的单文档程序 项目类型为:Office 在资源中,可对Ribbon进行编辑 Ribbon控件中,按右键,添加事件处理 图标的添加: 使用 Axialis IconWorkshop 添加一个: 来自数个文件的图像带 添加数个PNG图像(推荐PNG图像,带Alpha透明) 最后保存成BMP格式 在VS资源中,导入BMP,如下: IDB_BMP_ICO IDB_BMP_ICO2 分别用于大图标与小图标 在面板的属性中,分别指定此面板需要采用的LargeImages 与 SmallImages 在面板中的按钮属性中,添加图标 复选框的按钮,需要添加一个 BOOL m_bCheck; 在按钮中,对其进行控件,并在Ribbon更新的时候,对复选框进行勾选或取消勾选 void CMainFrame::OnChkTest() { m_bCheck = !m_bCheck; if (m_bCheck) { AfxMessageBox(_T("勾选")); } else { AfxMessageBox(_T("取消")); } } void CMainFrame::OnUpdateChkTest(CCmdUI *pCmdUI) { pCmdUI->SetCheck(m_bCheck); } 程序运行结果如下: 主要菜单响应事件如下代码: void CMainFrame::OnBtnEditText() { CMFCRibbonEdit* pEditA = DYNAMIC_DOWNCAST(CMFCRibbonEdit, m_wndRibbonBar.FindByID(ID_EDT_A)); CMFCRibbonEdit* pEditB = DYNAMIC_DOWNCAST(CMFCRibbonEdit, m_wndRibbonBar.FindByID(ID_EDT_B)); CString strA; strA = pEditA->GetEditText(); CString strB; strB = pEditB->GetEditText(); AfxMessageBox(strA+_T(" - ")+strB); CMFCRibbonButton* pBtn = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_BTN_EDIT_TEXT)); } void CMainFrame::OnBtnColor() { CMFCRibbonColorButton* pBtn = DYNAMIC_DOWNCAST(CMFCRibbonColorButton, m_wndRibbonBar.FindByID(ID_BTN_COLOR)); COLORREF color; color = pBtn->GetColor(); BYTE r = GetRValue(color); BYTE g = GetGValue(color); BYTE b = GetBValue(color); CString strColor; strColor.Format(_T("颜色:R:%d-G:%d-B:%d"), r, g, b); AfxMessageBox(strColor); } void CMainFrame::OnSpinNum() { // 怎么会运行两次呢 CMFCRibbonEdit* pEdit = DYNAMIC_DOWNCAST(CMFCRibbonEdit, m_wndRibbonBar.FindByID(ID_SPIN_NUM)); CString strGet; strGet = pEdit->GetEditText(); AfxMessageBox(strGet); } void CMainFrame::OnCmbTest() { CMFCRibbonComboBox* pCmb = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, m_wndRibbonBar.FindByID(ID_CMB_TEST)); CString strGet; strGet =

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值