VS2015 MFC 工具栏编程

一 一般地,工具栏是菜单栏中菜单命令的图标按钮形式。

二 工具栏删除 Delete键只是删除了图标,要删除某个工具栏按钮,只需要鼠标左键按下,拖出到工具栏以外即可。如果要添加分隔符,只需要按下该图标,然后向工具栏右边轻微拖动,再次运行就可以看到分隔栏。

三 MFC自带工具栏的创建过程:

     MainFrame.h中定义了一个受保护的变量:protected CToolBar m_wndToolBar;

    if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
        !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
    {
        TRACE0("未能创建工具栏\n");
        return -1;      // 未能创建
    }

    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); //设置自己的停靠方式
    EnableDocking(CBRS_ALIGN_ANY);   //CMainFrame的成员 表示接收哪一种停靠方式
    DockControlBar(&m_wndToolBar);       //实现主工具栏停靠在主框架上

四 参照MFC自带工具栏创建属于自己的工具栏

       4.1 添加ToolBar资源

  4.2 在CMainFrame中添加一个受保护的CToolBar类型的成员变量m_newToolBar

  4.3 调用Create函数与主窗体相关联

    if (!m_newToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
        !m_newToolBar.LoadToolBar(IDR_NEWTOOLBAR))
    {
        TRACE0("未能创建自定义的工具栏\n");
        return -1;      // 未能创建
    }
m_newToolBar.EnableDocking(CBRS_ALIGN_ANY);
    //EnableDocking(CBRS_ALIGN_ANY); 由于这是在现有基础上新增的,无需再次调用
    DockControlBar(&m_newToolBar); //让它停靠在主窗口上

至此创建出来的工具栏显示隐藏不正常,按钮不显示,显示一个空白工具框。

void CMainFrame::OnNewtoolbarbtn()
{
    //if (m_newToolBar.IsWindowVisible())
    //{
    //    m_newToolBar.ShowWindow(SW_HIDE);
    //}
    //else
    //{
    //    m_newToolBar.ShowWindow(SW_SHOW);
    //}
    //RecalcLayout(); //由于工具栏隐藏或显示 会影响到其他工具或窗口的布局,因此需要调用该函数,否则只隐藏了按钮,工具栏还在

    ////当工具栏按钮处于浮动状态时,如果单击该按钮,按钮隐藏了,但是工具栏没有隐藏。
    ////因此需要再次调用DockControlBar(&m_newToolBar);
    //DockControlBar(&m_newToolBar);
    ////浮动状态时,隐藏之后,再显示的时候,它会出现在顶部位置,而不是原来的位置

    ShowControlBar(&m_newToolBar,!m_newToolBar.IsWindowVisible(),FALSE);//一个函数代替上面多行代码,且能正常隐藏和显示
}
void CMainFrame::OnUpdateNewtoolbarbtn(CCmdUI *pCmdUI) //UPDATE_COMMAND_UI 类型的消息
{
    pCmdUI->SetCheck(m_newToolBar.IsWindowVisible()); //设置复选标记
}

 

转载于:https://www.cnblogs.com/zhou8744/p/10625119.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 对于使用MFC编写画图程序和使用VS来实现相同功能的程序来说,它们都有各自的优缺点。 使用MFC编写画图程序,可以使用MFC提供的类库来方便的实现用户界面,如工具栏、菜单、状态栏等,同时也可以使用MFC提供的绘图API来实现图形的绘制,如直线、矩形、多边形、圆等。MFC编写画图程序的优点是开发效率高,开发周期短,且可扩展性也较好。 而使用VS来实现画图程序,则更加自由和灵活。VS提供的引擎和库很多,可根据需要选择合适的库进行开发。相比MFC,使用VS编写画图程序可实现更多的效果,甚至可以开发自己的扩展库和功能。 总之,无论使用MFC编写画图程序还是使用VS编写画图程序,都有其优点和缺点。选择哪种方式取决于具体的需求和开发者的技术水平。基于MFC的画图程序适合于快速开发和初学者,而使用VS编写画图程序则更适合有一定编程技能和较高需求的开发者。 ### 回答2: 在编写画图程序时,使用VS和MFC都可以实现该功能。但两者有着不同的优点和适用场景。 对于使用VS编写画图程序,由于它是一个IDE(集成开发环境),能够提供丰富的工具和调试功能,使得程序的开发更加高效和便捷。同时,VS还支持多种编程语言,能够灵活地适应不同的项目需求。然而,相对于MFC,VS对于图形界面的构建和操作较为繁琐,需要开发者较强的编程能力。 使用MFC编写画图程序,则可以利用其强大的GUI库和类库,轻松实现设备无关性,同时也能够在图形界面构建中提供一些基本的组件,如按钮、编辑框、滚动条等等。而且MFC也提供了大量的绘图类和函数,使得开发者能快速实现各种各样的图形功能。但使用MFC编写画图程序,由于MFC较为复杂,需要开发者掌握MFC的类库和功能库。 总的来说,VS和MFC都提供了对画图程序开发的支持,开发者可以在根据项目需求,灵活选择合适的编程工具。 ### 回答3: 使用MFC编写画图程序的最大优势在于它可以充分利用Windows系统上丰富的图形界面库和API,具有良好的平台兼容性,并且易于开发和维护。MFC库提供了大量的GUI组件,例如按钮、菜单、滚动条、文本框等,方便开发者快速构建应用程序界面。同时,MFC也提供了强大的绘图API和图形设备接口(GDI),使得绘制各种图形和图像变得简单。 与此相反,VS自带的画图功能虽然也能实现简单的图形绘制,但是其功能却十分有限,无法满足高级图像处理需求。而MFC编写的画图程序则可以轻松实现图像缩放、旋转、变形、颜色调整等高级功能。此外,MFC也支持许多图像格式的导入和导出,如BMP、JPEG、PNG等,方便用户在不同的平台上进行图像处理和转换。 当然,在使用MFC编写画图程序时,开发者需要掌握一定的C++编程技能,熟悉MFC的API和组件之间的交互关系。相比而言,VS自带的画图工具更加简单易用,不需要编写代码,但是其功能过于简单,无法满足高级需求。因此,对于开发专业的图像处理软件的开发者而言,使用MFC编写画图程序是一种更加灵活和高效的选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值