精华内容
下载资源
问答
  • 近段时间以来,2345好压突然在以前的2345news的基础上又搞出了个搜索工具栏和天气工具栏,以前弹出新闻的时候,鉴于它免费,我也就算了,虽然qq各种弹窗新闻,搜狗浏览器各种弹窗新闻,其他各种软件也纷纷效仿搞的...

    近段时间以来,2345好压突然在以前的2345news的基础上又搞出了个搜索工具栏和天气工具栏,以前弹出新闻的时候,鉴于它免费,我也就算了,虽然qq各种弹窗新闻,搜狗浏览器各种弹窗新闻,其他各种软件也纷纷效仿搞的弹窗很是让人烦,不知道为啥国家不管,自个儿“品”吧。
    在这里插入图片描述
    像那些个弹窗,我们直接使用电脑管家屏蔽就可以了。
    在这里插入图片描述在这里插入图片描述

    展开全文
  • MFC 对话框 添加 工具栏 MFC中如何删除工具栏中多余的图标 刚学习MFC的时候,发现在MFC资源视图里面编辑工具栏的时候,多余的图标没有删除键,其实只要把你要删除的图标按住并往外拖就可以了。 ...

    MFC 对话框 添加 工具栏

    Toolbar

    在这里插入图片描述

    MFC中如何删除工具栏中多余的图标

    刚学习MFC的时候,发现在MFC资源视图里面编辑工具栏的时候,多余的图标没有删除键,其实只要把你要删除的图标按住并往外拖就可以了。

    在这里插入图片描述
    工具栏资源的最右边总是会有一个待编辑的按钮,我们对其进行编辑后,工具栏资源会自动增加一个新的空白按钮,这也实现了按钮的添加操作。如果我们想要删除某个按钮,就可以用鼠标左键点住它,拖出工具栏资源的范围即可。

       另外,我们看到,第三个按钮(保存按钮)和第四个按钮(剪切按钮)之间有一些间隙,在运行程序后会出现一个竖的分隔线,所以想要在两个按钮之间添加分隔线的话,可以用鼠标左键拖住右边的按钮往右稍移动一些就可以了。
    
    删除分割线

    可以用鼠标左键拖住右边的按钮往左移动到快覆盖左边的按钮的时候松开就可以了。
    在这里插入图片描述
    如果 按钮 之间 有分割线 ,分割线 也会占用一个index 序号, 就是 本来 0123456 现在是01234567

    通过Toolbar 添加 ID

    如果 事件处理函数 已经定义了,建立关联 需要手动添加关联
    如果 事件处理函数 没有定义,建立关联 可以通过类向导

    在这里插入图片描述
    这个图中代码 有点问题.

    在这里插入图片描述
    VC 自动生成的ID 不一定正好是按照顺序的
    看下面的例子

     atlTraceGeneral - m_Toolbar 0 -- 32811
     atlTraceGeneral - m_Toolbar 1 -- 32810
     atlTraceGeneral - m_Toolbar 2 -- 32812
     atlTraceGeneral - m_Toolbar 3 -- 32813
     atlTraceGeneral - m_Toolbar 4 -- 32814
     atlTraceGeneral - m_Toolbar 5 -- 32815
     atlTraceGeneral - m_Toolbar 6 -- 32816
    

    Resource.h VC 自动生成的,每次重新编译 都会自动生成
    在这里插入图片描述

    广州大学MFC实验报告——学生成绩管理系统

    https://blog.csdn.net/weixin_43999137/article/details/91184179

    https://github.com/wujiekd/MFC-student-performance-management-system

    VS2013/MFC编程入门之三十四(工具栏:工具栏资源及CToolBar类)

    https://blog.csdn.net/zhaoyinhui0802/article/details/53471257

    上一节中讲了菜单及CMenu类的使用,这一节讲与菜单有密切联系的工具栏。

       工具栏简介
    
       工具栏一般位于主框架窗口的上部,菜单栏的下方,由一些带图片的按钮组成。当用户用鼠标单击工具栏上某个按钮时,程序会执行相应的操作,如果鼠标没有点击,只是停留在某个按钮上一会后,会弹出一个小窗口显示提示信息。
    
       一般工具栏中的按钮在菜单栏中都有对应的菜单项中,即点击工具栏按钮与点击菜单项的效果相同。但工具栏中的按钮都显式的排列出来,操作很方便,而且按钮上的图片描述功能更直观,所以工具栏作为用户操作接口来说比菜单更加便捷。
    
       VS2013工具栏资源详解
    
       本节仍然以VS2013/MFC编程入门之三十二(菜单:VS2010菜单资源详解)中创建的单文档工程Example32为基础,讲解工具栏资源。
    
       在Example32工程中,打开资源视图,展开Example32->Example32.rc->Toolbar,我们可以看到有一个ID为IDR_MAINFRAME的工具栏资源,双击打开,工具栏资源显示如下:
    

    在这里插入图片描述
    以IDR_MAINFRAME工具栏的第一个按钮为例说明工具栏按钮的各项属性。用鼠标单击工具栏资源上的第一个按钮,属性页中就会显示其属性。下面分别讲解各项属性。

       ID属性:ID_FILE_NEW。将菜单Meun的时候我们讲过,菜单IDR_MAINFRAME的菜单项文件->新建的ID也是ID_FILE_NEW,两者ID相同,正是如此才使得工具栏第一个按钮与菜单项文件->新建能实现相同的功能。所以如果想让工具栏某个按钮与菜单栏某个菜单项点击后执行的操作相同,就要为两者设置相同的ID。
    
       Prompt属性:创建新文档\n新建。此属性为工具栏按钮的提示文本。在鼠标指向此按钮时,状态栏中会显示“创建新文档”,当弹出提示信息窗口时会显示包含“新建”的提示信息。“\n”是两者的分隔转义符。
    
       Height属性:15。此属性为工具栏按钮的像素高度。
    
       Width属性:16。此属性为工具栏按钮的像素宽度。
    
       工具栏资源的最右边总是会有一个待编辑的按钮,我们对其进行编辑后,工具栏资源会自动增加一个新的空白按钮,这也实现了按钮的添加操作。如果我们想要删除某个按钮,就可以用鼠标左键点住它,拖出工具栏资源的范围即可。
    
       另外,我们看到,第三个按钮(保存按钮)和第四个按钮(剪切按钮)之间有一些间隙,在运行程序后会出现一个竖的分隔线,所以想要在两个按钮之间添加分隔线的话,可以用鼠标左键拖住右边的按钮往右稍移动一些就可以了。
    
       CToolBar类的主要成员函数
    
       MFC为工具栏的操作提供了CToolBar类。下面介绍CToolBar类的主要成员函数。
    
       virtual BOOL CreateEx(
                 CWnd* pParentWnd,
                 DWORD dwCtrlStyle = TBSTYLE_FLAT,
                 DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP,
                 CRect rcBorders = CRect(0, 0, 0, 0),
                 UINT nID = AFX_IDW_TOOLBAR
        );
    
       创建工具栏对象。参数pParentWnd为工具栏父窗口的指针。参数dwCtrlStyle为工具栏按钮的风格,默认为TBSTYLE_FLAT,即“平面的”。参数dwStyle为工具栏的风格,默认取值WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP,由于是主框架窗口的子窗口,所以要有WS_CHILD和WS_VISIBLE风格,CBRS_ALIGN_TOP风格表示工具栏位于父窗口的顶部, 各种风格可以参见MSDN的Toolbar Control and Button Styles中的定义。参数rcBorders为工具栏边框各个方向的宽度,默认为CRect(0, 0, 0, 0),即没有边框。参数nID为工具栏子窗口的ID,默认为AFX_IDW_TOOLBAR。
    
       BOOL LoadBitmap(UINT nIDResource);
    
       为工具栏加载位图。参数nIDResource为位图资源的ID。成功则返回TRUE,否则返回FALSE。注意,这里的位图资源应当为每个工具栏按钮都提供位图,如果图片不是标准大小(16像素宽,15像素高),则需要调用SetSizes成员函数调整按钮大小和图片大小。
    
       BOOL LoadToolBar(UINT nIDResource);
    
       加载由nIDResource指定的工具栏。参数nIDResource为要加载的工具栏的资源ID。成功则返回TRUE,否则返回FALSE。
    
       void SetSizes(SIZE sizeButton,SIZE sizeImage);
    
       设置工具栏按钮的大小和图片的大小。参数sizeButton为工具栏按钮的像素大小。参数sizeImage为图片的像素大小。
    
       void SetButtonStyle(int nIndex,UINT nStyle);
    
       设置工具栏按钮或分隔线的风格,或者为按钮分组。参数nIndex为将要进行设置的按钮或分隔线的索引。参数nStyle为按钮风格,可以是以下取值:
    
       TBBS_BUTTON   标准按钮(默认)
       TBBS_SEPARATOR   分隔条 
       TBBS_CHECKBOX   复选框 
       TBBS_GROUP   标记一组按钮的开始
       TBBS_CHECKGROUP   标记一组复选框的开始
       TBBS_DROPDOWN   创建下拉列表按钮
       TBBS_AUTOSIZE   按钮的宽度根据按钮文本计算,而不基于图片大小 
       TBBS_NOPREFIX   按钮的文本没有快捷键前缀
    
       UINT GetButtonStyle(int nIndex) const;
    
       获取工具栏按钮或分隔条的风格。风格可参考SetButtonStyle。参数nIndex为按钮或分隔条的索引。
    
       BOOL SetButtonText(int nIndex,LPCTSTR lpszText);
    
       设置工具栏按钮的文本。参数nIndex为工具栏按钮的索引。参数lpszText为指向要设置的文本字符串的指针。设置成功则返回TRUE,否则返回FALSE。
    
       CString GetButtonText(int nIndex) const;
    
       获取工具栏按钮上显示的文本。参数nIndex为工具栏按钮的索引。
    

    工具栏的使用

       一般情况下工具栏中的按钮在菜单栏中都有对应的菜单项,两者实现的功能相同,要想实现这种效果,只需要将工具栏按钮的ID与对应的菜单栏中菜单项的ID设置为相同值即可。
    
       在实际使用工具栏时,除了前面讲的资源编辑外,其他使用与菜单类似。例如,对COMMAND消息和UPDATE_COMMAND_UI消息,可以像VS2013/MFC编程入门之三十三(菜单:菜单及CMenu类的使用)中的菜单应用实例那样为工具栏按钮添加消息处理函数。
    
       如果工具栏按钮对应的菜单项已经添加了消息处理函数,那么就不必再为它添加了,因为它的ID与菜单项相同,所以会调用同样的消息处理函数。这样点击工具栏按钮与点击相应菜单项执行相同的功能,在菜单项为选中、激活或禁用等状态时,工具栏按钮会有一样的状态。
    
       工具栏的创建
    
       大家在第三十二讲创建的Example32工程的CMainFrame类中看到,它创建工具栏所使用的类并不是常用的CToolBar类,而是CMFCToolBar类。CMFCToolBar类是自VS2008以来MFC提供的类,它与CToolBar类有些类似,但功能更丰富。这里要注意,CMFCToolBar类与CToolBar类并没有任何派生关系。
    
       本教程就以CMFCToolBar类来讲讲工具栏的创建步骤:
    
       1. 创建工具栏资源。
    
       2. 构造CMFCToolBar类的对象。
    
       3. 调用CMFCToolBar类的Create或CreateEx成员函数创建工具栏。
    
       4. 调用LoadToolBar成员函数加载工具栏资源。
    
       大家可以对应着看看Example32的CMainFrame类自动生成的代码中创建工具栏的过程。
    
       工具栏IDR_MAINFRAME的资源已经自动创建好。在MainFrm.h文件对CMainFrame类的声明中,定义了CMFCToolBar类的对象作为成员对象:CMFCToolBar  m_wndToolBar;。然后在CMainFrame::OnCreate函数的实现中可以看到工具栏的创建以及加载工具栏资源的代码,如下:
    
    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)   
    {   
        if (CFrameWndEx::OnCreate(lpCreateStruct) == -1)   
            return -1;   
             ......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(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME))
    {
    TRACE0("未能创建工具栏\n");
    return -1;      // 未能创建
    }
        ......return 0;   
    }  
    
    

    因为创建框架窗口时需要调OnCreate函数,所以工具栏的创建也是在OnCreate中完成的。

       工具栏的停靠
    
       在创建好工具栏后,如果想要停靠工具栏,也需要添加相应的停靠代码。工具栏停靠的步骤及需要调用的函数如下(前两个步骤可以颠倒顺序):
    
       1. 在框架窗口中启用停靠。
    
           若要将工具栏停靠到某个框架窗口,则必须启用该框架窗口(或目标)以允许停靠。可以在CFrameWndEx类中调用下面的成员函数来实现:
    
           BOOL EnableDocking(DWORD dwDockStyle);
    
           该函数采用一个DWORD参数,用来指定框架窗口的哪个边可以接受停靠,可以有四种取值:CBRS_ALIGN_TOP(顶部)、CBRS_ALIGN_BOTTOM(底部)、CBRS_ALIGN_LEFT(左侧)、CBRS_ALIGN_RIGHT(右侧)。如果希望能够将控制条停靠在任意位置,将CBRS_ALIGN_ANY作为参数传递给EnableDocking。
    
       2. 工具栏启用停靠。
    
           框架窗口启用停靠准备好后,必须以相似的方式准备工具栏。为想要停靠的每一个工具栏CMFCToolBar对象调用下面的函数:
    
           virtual void EnableDocking(DWORD dwAlignment);
    
           允许工具栏停靠到框架窗口,并指定工具栏应停靠的目标边。此函数指定的目标边必须与框架窗口中启用停靠的边匹配,否则工具栏无法停靠,为浮动状态。
    
       3. 停靠工具栏。
    
           当用户试图将工具栏放置在允许停靠的框架窗口某一边时,需要框架CFrameWndEx类调用以下函数:
    
           void DockPane(CBasePane* pBar,UINT nDockBarID=0,LPCRECT lpRect=NULL);
    
           参数pBar为要停靠的控制条的指针,参数nDockBarID为要停靠的框架窗口某条边的ID,可以是以下四种取值:AFX_IDW_DOCKBAR_TOP、AFX_IDW_DOCKBAR_BOTTOM、AFX_IDW_DOCKBAR_LEFT、AFX_IDW_DOCKBAR_RIGHT。
    
        下面我们接着看Example32的CMainFrame类的OnCreate函数实现中,工具栏的停靠过程:
    
    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)   
    {   
        if (CFrameWndEx::OnCreate(lpCreateStruct) == -1)   
            return -1;   
      
        ......// 调用CreateEx函数创建工具栏,并调用LoadToolBar函数加载工具栏资源  
        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(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME))   
        {   
            TRACE0("Failed to create toolbar\n");   
            return -1;      // fail to create   
        }     
             ......// TODO:  如果您不希望工具栏和菜单栏可停靠,请删除这五行
    m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
    EnableDocking(CBRS_ALIGN_ANY);
    DockPane(&m_wndMenuBar);
    DockPane(&m_wndToolBar);
             ......return 0;   
    }  
    
    

    关于工具栏的知识就讲到这里了,最近由于要准备期末考试,每天更新的内容比较少,希望大家谅解,谢谢。。感谢大家长期以来的支持。

    工具栏 例子 代码 vs2017

    https://download.csdn.net/download/wowocpp/33353202
    在这里插入图片描述

    展开全文
  • 使用matplotlib绘图时,在弹出的窗口中默认是有工具栏的,那么这些工具栏是如何定义的呢? 工具栏的三种模式 matplotlib的基础配置由运行时参数(rcParams)控制,导入matplotlib时,加载matplotlibrc文件生成默认...

    使用matplotlib绘图时,在弹出的窗口中默认是有工具栏的,那么这些工具栏是如何定义的呢?

    工具栏的三种模式

    matplotlib的基础配置由运行时参数(rcParams)控制,导入matplotlib时,加载matplotlibrc文件生成默认运行时参数。
    查看matplotlibrc文件可知#toolbar: toolbar2 # {None, toolbar2, toolmanager},即工具栏有三种模式Nonetoolbar2toolmanager,其中默认模式为toolbar2

    工具栏模式切换

    通过类似语句plt.rcParams['toolbar'] = 'None'可控制工具栏的模式。
    需要注意的是plt.rcParams['toolbar'] = 'None'应当放置在图像实例化之前。

    None模式:禁用工具栏。
    plt.rcParams['toolbar'] = 'None'
    在这里插入图片描述
    toolbar2模式:默认工具栏布局。
    plt.rcParams['toolbar'] = 'toolbar2'
    在这里插入图片描述
    toolmanager模式:工具栏布局模式与toolbar2模式稍有不同。
    plt.rcParams['toolbar'] = 'toolmanager'
    在这里插入图片描述

    工具栏模式切换原理

    和工具栏相关的模块有:

    • matplotlib.backend_bases
    • matplotlib.backend_managers
    • matplotlib.backend_tools
    • matplotlib.backends

    工具栏最终依靠后端实现,不同的后端具体实现会有一些差异,我选择的后端是Pyqt5,通过查看模块matplotlib.backends.backend_qt5源码可知,matplotlib在利用后端生成窗口时根据rcParams['toolbar']的值选择不同的工具栏构造方式。

    def _get_toolbar(self, canvas, parent):
        # must be inited after the window, drawingArea and figure
        # attrs are set
        if matplotlib.rcParams['toolbar'] == 'toolbar2':
            toolbar = NavigationToolbar2QT(canvas, parent, True)
        elif matplotlib.rcParams['toolbar'] == 'toolmanager':
            toolbar = ToolbarQt(self.toolmanager, self.window)
        else:
            toolbar = None
        return toolbar
    

    默认模式(toolbar2)原理

    与该模式相关的重要定义有:

    • matplotlib.backend_bases.NavigationToolbar2(canvas)类:默认的toolbar2模式工具栏的基类,后端需要通过canvas对象处理工具栏按钮事件、覆盖构造方法初始化工具栏、覆盖save_figure()等方法。
    • matplotlib.backends.backend_qt5.NavigationToolbar2QT(NavigationToolbar2, QtWidgets.QToolBar)类:定义了QT后端默认模式工具栏的具体实现。
    • matplotlib.backend_bases.FigureCanvasBase类:canvas对象的基类,通过toolbar属性与工具栏进行连接。
    • matplotlib.backend_bases.NavigationToolbar2(canvas).toolitems属性:定义了默认模式工具栏工具项列表。

    案例:验证默认模式工具栏布局

    import matplotlib.pyplot as plt
    
    fig=plt.gcf()
    toolbar = fig.canvas.manager.toolbar
    print(toolbar.toolitems)
    

    输出:

    [('Home', 'Reset original view', 'home', 'home'),
     ('Back', 'Back to previous view', 'back', 'back'),
     ('Forward', 'Forward to next view', 'forward', 'forward'),
     (None, None, None, None), 
     ('Pan', 'Left button pans, Right button zooms\nx/y fixes axis, CTRL fixes aspect', 'move', 'pan'), 
     ('Zoom', 'Zoom to rectangle\nx/y fixes axis, CTRL fixes aspect', 'zoom_to_rect', 'zoom'), 
     ('Subplots', 'Configure subplots', 'subplots', 'configure_subplots'),
     ('Customize', 'Edit axis, curve and image parameters', 'qt4_editor_options', 'edit_parameters'),
     (None, None, None, None),
     ('Save', 'Save the figure', 'filesave', 'save_figure')]
    

    根据源码可知,列表中每个元组为工具项定义,元组的四个元素分别表示按钮名称、按钮提示文本、按钮图像、按钮对应方法。

    # list of toolitems to add to the toolbar, format is:
    # (
    #   text, # the text of the button (often not visible to users)
    #   tooltip_text, # the tooltip shown on hover (where possible)
    #   image_file, # name of the image for the button (without the extension)
    #   name_of_method, # name of the method in NavigationToolbar2 to call
    # )
    
    

    工具栏管理器模式(toolmanager)原理

    与该模式相关的重要定义有:

    • matplotlib.backend_bases.ToolContainerBase(toolmanager)类:工具栏容器的基类,定义了工具栏编辑的方法。构造函数参数为toolmanager,表示工具栏容器容纳的工具栏。
    • matplotlib.backend_managers.ToolManager(figure=None)类:管理用户触发工具栏工具项按钮而产生的动作。
    • matplotlib.backend_tools.ToolBase类:所有工具栏工具项的基类,所有工具项均由matplotlib.backend_managers.ToolManager实例化。
    • matplotlib.backend_tools.default_tools变量:字典类型,实例化基于matplotlib.backend_tools.ToolBase类定义的内置工具项。
    • matplotlib.backend_tools.default_toolbar_tools变量:嵌套列表,以类似格式[[分组1, [工具1, 工具2 ...]], [分组2, [...]]]定义工具栏布局。
    • matplotlib.backend_tools.add_tools_to_container函数:设置toolbarmanager模式默认工具栏。

    案例:验证工具栏管理器模式工具栏布局

    import matplotlib.pyplot as plt
    
    plt.rcParams['toolbar'] = 'toolmanager'
    fig=plt.gcf()
    toolbar= fig.canvas.manager.toolbar
    print(toolbar._toolitems)
    

    输出:

    {'home': [(<PyQt5.QtWidgets.QToolButton object at 0x00000289EABBC1F8>, <function ToolbarQt.add_toolitem.<locals>.handler at 0x00000289EB0BC510>)], 
     'back': [(<PyQt5.QtWidgets.QToolButton object at 0x00000289EAE86678>, <function ToolbarQt.add_toolitem.<locals>.handler at 0x00000289EB0BC598>)], 
     'forward': [(<PyQt5.QtWidgets.QToolButton object at 0x00000289EAE8B4C8>, <function ToolbarQt.add_toolitem.<locals>.handler at 0x00000289EB0BC620>)],
     'pan': [(<PyQt5.QtWidgets.QToolButton object at 0x00000289EAE8BAF8>, <function ToolbarQt.add_toolitem.<locals>.handler at 0x00000289EB0BC6A8>)], 
     'zoom': [(<PyQt5.QtWidgets.QToolButton object at 0x00000289EAE93DC8>, <function ToolbarQt.add_toolitem.<locals>.handler at 0x00000289EB0BC7B8>)], 
     'subplots': [(<PyQt5.QtWidgets.QToolButton object at 0x00000289EAE93438>, <function ToolbarQt.add_toolitem.<locals>.handler at 0x00000289EB0BC8C8>)],
     'save': [(<PyQt5.QtWidgets.QToolButton object at 0x00000289EAE93678>, <function ToolbarQt.add_toolitem.<locals>.handler at 0x00000289EB0BC950>)], 
     'help': [(<PyQt5.QtWidgets.QToolButton object at 0x00000289EAE93A68>, <function ToolbarQt.add_toolitem.<locals>.handler at 0x00000289EB0BC9D8>)]}
    
    展开全文
  • 使用MFC向导可以创建基于文档视图结构的应用程序也可以创建基于对话框的应用程序,向导默认生成的文档视图结构的应用程序带有工具栏,而对话框的应用程序没有带任何工具栏,本实例演示如何在对话框中创建工具栏,...

    00. 目录

    01. 案例概述

    使用MFC向导可以创建基于文档视图结构的应用程序也可以创建基于对话框的应用程序,向导默认生成的文档视图结构的应用程序带有工具栏,而对话框的应用程序没有带任何工具栏,本实例演示如何在对话框中创建工具栏,效果如下图所示。
    在这里插入图片描述

    02. 开发环境

    系统环境:Windows 10

    开发环境:Visual Studio 2019

    03. 关键技术

    MFC提供了工具栏类CToolBarCtrl来创建工具栏。创建工具栏使用Create方法,向工具栏中添加按钮使用AddButtons方法。

    Create方法:

    BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );
    返回值:如果成功则返回非零值;否则返回零。
    
    参数: 
        dwStyle 指定工具条控件的风格。工具条必须总是具有WS_CHILD风格。另外,你可以为工具条指定在
        说明部分描述的工具条风格和窗口风格的任意组合。  
        
        rect 随意指定该工具条控件的尺寸和位置。它可以是一个CRect对象或一个RECT结构。  
        pParentWnd 指定工具条控件的父窗口。它不能是NULL。  
        nID 指定工具条控件的ID。  
    

    AddButtons方法

    BOOL AddButtons( int nNumButtons, LPTBBUTTON lpButtons );
    功能
    	该方法是用来设置工具栏上的按钮。
    参数描述
        nNumButtons:工具栏按钮的数量。
        lpButtons:TBBUTTON结构体类型的指针。TBBUTTON结构体中包含了工具栏按钮的命令ID值、图标索引、按钮名称等数据成员。 
    

    04. 程序设计

    (1)新建一个基于对话框的应用程序。

    (2)在CDialogToolBarDlg类中定义一个CToolBarCtrl对象和一个CImageList对象。

    private:
    	CToolBarCtrl m_ToolBarCtrl;
    	CImageList m_ImageList;
    
    

    (3)在自定义函数InitToolBar中动态创建工具栏,函数实现代码如下。

    
    //初始化工具栏
    void CMy3ToolBarDlg::InitToolBar()
    {
    	CString strPath;
    	HICON hIcon;
    
    	//创建图像列表
    	m_ImageList.Create(32, 32, ILC_COLOR32 | ILC_MASK, 0, 0);
    
    	//向图像列表中添加图标
    	for (int i = 0; i < 10; i++)
    	{
    		//获取图片的路径
    		strPath.Format(TEXT(".\\res\\ico\\%02d.ico"), i);
    		//加载图标
    		hIcon = (HICON)::LoadImage(NULL, strPath, IMAGE_ICON, 32, 32, LR_LOADFROMFILE);
    
    		m_ImageList.Add(hIcon);
    	}
    
    	//创建工具栏
    	m_ToolBarCtrl.Create(WS_CHILD | WS_VISIBLE, CRect(0, 0, 0, 0), this, 154231);
    	//工具栏支持自动化
    	m_ToolBarCtrl.EnableAutomation();
    	//设置工具栏的图像列表
    	m_ToolBarCtrl.SetImageList(&m_ImageList);
    
    	TBBUTTON button[11];
    
    	for (int j = 0; j < 11; j++)
    	{
    		button[j].dwData = 0;
    		//工具栏按钮为可用
    		button[j].fsState = TBSTATE_ENABLED;
    		//工具栏按钮样式
    		button[j].fsStyle = TBSTYLE_BUTTON;
    	}
    
    	//设置工具栏按钮的命令ID值
    	button[0].idCommand = ID_ADDDATA;
    	//设置图标索引
    	button[0].iBitmap = 0;
    	//设置工具栏按钮名称
    	button[0].iString = m_ToolBarCtrl.AddStrings(TEXT("添加"));
    
    
    	//设置工具栏按钮的命令ID值
    	button[1].idCommand = ID_UPDATEDATA;
    	//设置图标索引
    	button[1].iBitmap = 1;
    	//设置工具栏按钮名称
    	button[1].iString = m_ToolBarCtrl.AddStrings(TEXT("修改"));
    
    
    	//设置工具栏按钮的命令ID值
    	button[2].idCommand = ID_DELETEDATA;
    	//设置图标索引
    	button[2].iBitmap = 2;
    	//设置工具栏按钮名称
    	button[2].iString = m_ToolBarCtrl.AddStrings(TEXT("删除"));
    
    	button[3].fsStyle = TBSTYLE_SEP;
    
    
    	//设置工具栏按钮的命令ID值
    	button[4].idCommand = ID_FIRSTDATA;
    	//设置图标索引
    	button[4].iBitmap = 3;
    	//设置工具栏按钮名称
    	button[4].iString = m_ToolBarCtrl.AddStrings(TEXT("第一条"));
    
    
    	//设置工具栏按钮的命令ID值
    	button[5].idCommand = ID_PREVIOUSDATA;
    	//设置图标索引
    	button[5].iBitmap = 4;
    	//设置工具栏按钮名称
    	button[5].iString = m_ToolBarCtrl.AddStrings(TEXT("上一条"));
    
    
    	//设置工具栏按钮的命令ID值
    	button[6].idCommand = ID_NEXTDATA;
    	//设置图标索引
    	button[6].iBitmap = 5;
    	//设置工具栏按钮名称
    	button[6].iString = m_ToolBarCtrl.AddStrings(TEXT("下一条"));
    
    
    	//设置工具栏按钮的命令ID值
    	button[7].idCommand = ID_LASTDATA;
    	//设置图标索引
    	button[7].iBitmap = 6;
    	//设置工具栏按钮名称
    	button[7].iString = m_ToolBarCtrl.AddStrings(TEXT("末一条"));
    
    	button[8].fsStyle = TBSTYLE_SEP;
    
    	//设置工具栏按钮的命令ID值
    	button[9].idCommand = ID_SAVEDATA;
    	//设置图标索引
    	button[9].iBitmap = 7;
    	//设置工具栏按钮名称
    	button[9].iString = m_ToolBarCtrl.AddStrings(TEXT("保存"));
    
    
    	//设置工具栏按钮的命令ID值
    	button[10].idCommand = ID_CANCELDATA;
    	//设置图标索引
    	button[10].iBitmap = 8;
    	//设置工具栏按钮名称
    	button[10].iString = m_ToolBarCtrl.AddStrings(TEXT("取消"));
    
    	//向工具栏中添加按钮
    	m_ToolBarCtrl.AddButtons(11, button);
    	//自动调整工具栏的大小
    	m_ToolBarCtrl.AutoSize();
    	//设置工具栏的样式
    	m_ToolBarCtrl.SetStyle(TBSTYLE_FLAT | CCS_TOP);
    
    }
    
    
    BOOL CMy3ToolBarDlg::OnInitDialog()
    {
    	CDialogEx::OnInitDialog();
    
    	// 将“关于...”菜单项添加到系统菜单中。
    
    	// IDM_ABOUTBOX 必须在系统命令范围内。
    	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    	ASSERT(IDM_ABOUTBOX < 0xF000);
    
    	CMenu* pSysMenu = GetSystemMenu(FALSE);
    	if (pSysMenu != nullptr)
    	{
    		BOOL bNameValid;
    		CString strAboutMenu;
    		bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
    		ASSERT(bNameValid);
    		if (!strAboutMenu.IsEmpty())
    		{
    			pSysMenu->AppendMenu(MF_SEPARATOR);
    			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    		}
    	}
    
    	// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
    	//  执行此操作
    	SetIcon(m_hIcon, TRUE);			// 设置大图标
    	SetIcon(m_hIcon, FALSE);		// 设置小图标
    
    	// TODO: 在此添加额外的初始化代码
    	InitToolBar();
    
    	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
    }
    

    05. 秘笈心法

    工具栏的创建方法

    CToolBarCtrl类是创建工具栏控件的类,而CToolBar类是创建工具栏的类,CToolBar类包含了CToolBarCtrl类,文档视图结构通常使用CToolBar类来创建工具栏,CToolBar类可以直接通过加载位图来生成工具栏,也可以调用CToolBarCtrl对象进行工具栏的设置。

    06. 源码下载

    下载:对话框中创建工具栏.rar

    07. 附录

    展开全文
  • 在我们使用电脑的过程中会发现一些工具栏工具栏上面有很多一些快捷的操作可以帮助我们实际操作节约很多时间。在操作过程中,我们也会习惯性的使用电脑工具栏里面的工具。但是可能有时候我们会发现为什么电脑工具栏...
  • matplotlib工具栏探析二(添加、删除内置工具项)探讨了工具栏内置工具项的管理,除了内置工具项,很多场景中需要自定义工具项,官方给了案例... 官方案例解析 下面对官方案例关键点做注释说明。 import matplotlib....
  • 怎么在Excel中添加开发工具到工具栏腾讯视频/爱奇艺/优酷/外卖 充值4折起有的小伙伴在使用Excel软件处理数据时,为了快速使用开发工具中的工具,所以想要添加开发工具,但是却不知道如何添加,那么小编就来为大家...
  • MFC 对话框 创建菜单栏、工具栏以及菜单栏Checked 勾选显示工具栏 0.创建一个对话框 1.建立菜单栏 2.建立工具栏 3.菜单栏 让工具栏显示和隐藏 4.在工具栏的按钮悬停有提示信息 直接创建一个MFC 对话框程序,直接用VS...
  • 今天我们就一起来学习一下ppt web工具栏的使用方法,PowerPoint 提供了一个功能强大的“Web”工具栏,通过该工具栏,用户可以方便、快捷地使用Web的各种功能。选择“视图”→“工具栏”命令,再选择工具栏子菜单中的...
  • 工具栏菜单选项(word辅助工具) -电脑资料时间:2019-01-01【www.unjs.com - 电脑资料】Word包含一些辅助功能,使得具有各种需要的用户...要显示工具栏,请按Alt然后按Shift+F10。)是可见的。操作方法A在“视图”菜单...
  • matplotlib工具栏源码探析二(添加、删除内置工具项)利用内置matplotlib.backend_tools.add_tools_to_container函数添加工具项,使用工具栏管理器add_tool方法、add_toolitem方法、remove_toolitem方法、remove_...
  • vscode 左侧工具栏显示

    千次阅读 2021-11-05 15:04:56
    1.显示工具栏 点击文件,选择首选项,点击设置按钮 搜索workbench,勾选上Workbench> Activity Bar:Visble 勾选上后,工具栏就显示出来了
  • 菜单栏、工具栏、状态栏

    多人点赞 热门讨论 2021-08-15 16:38:34
    菜单栏、工具栏、状态栏菜单栏、工具栏、状态栏 菜单栏、工具栏、状态栏 主窗口框架拥有自己的布局,包括以下组件: ①菜单栏 菜单栏包含了一个下拉菜单项的列表,这些菜单项通过QAction动作类实现。一个主窗口只能...
  • layui工具栏按钮监听事件给大家分享的功能是layui工具栏按钮监听事件Layui工具栏按钮监听事件:点击头部工具栏区域设定了属性为lay-event="" 的元素时触发关键属性为lay-event=""效果图:图一是查询按钮的监听事件...
  • 教程EPLAN脚本从入门到应用-1《工具栏》编辑丨石海波出品丨电气CAD论坛当你有时候心里有个念头时,即便不用刻意的做,也会从日常工作、生活中,在心里生根发芽,EPLAN脚本这个主题是在3个月前萌生的,至到今天,我想...
  • Dreamweaver网页常用工具栏使用方法“插入”栏“插入”栏包含用于创建和插入对象(如表格、层和图像)的按钮。当鼠标指针滚动到一个按钮上时,会出现一个工具提示,其中含有该按钮的名称。某些类别具有带弹出菜单的...
  • 展开全部调出工具栏的步骤如下:方法一、1.在打开的CAD图纸文件中点32313133353236313431303231363533e58685e5aeb931333366303766击上方工作空间的三角形(这个是切换工作空间的下拉菜单),直接用左键点击2.在工作...
  • BCGControlBar("Business Components Gallery ControlBar")是MFC扩展库,使您可以创建具有完全自定义选项(功能区、可自定义工具栏、菜单等)以及一组专业设计的丰富Microsoft Office和Microsoft Visual Studio的...
  • ueditor 单行工具栏的高度如何设置?初次使用ueditor,是在vue中使用的,用的单行工具栏设置:this.ue = ueditor.getEditor(this.ueId, {// serverUrl: '', // 服务器统一请求接口路径toolbars: [['paragraph','font...
  • 1、打开AutoCAD2019,运行程序后,新建一个文件2、标准菜单有几十种工具栏,默认情况下会出现的顶部工具栏有标准工具栏,样式工具栏,特性工具栏,两侧有绘图工具栏及修改工具栏3、我们移动鼠标,将光标放在任一个...
  • 工具栏中添加编辑框可以使用户在工具栏上进行输入操作,从而简化用户的操作,可以通过Create方法创建编辑框控件,并将编辑框控件的父窗口设为工具栏,在工具栏上显示编辑框。效果如下图所示。 02. 开发环境 系统...
  • excel快速访问工具栏 将计算器添加到Excel快速访问工具栏的方法,看到标题你是不是很兴奋,这不就是你想学习的知识吗?当你掌握excel快速访问工具栏这个知识的时候你一定很兴奋,一定不会后悔看了excel快速访问工具...
  • [c语言-菜单工具栏与状态栏第 6 章 菜单、工具栏与状态栏 参数nflags的含义 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 【例6.4】 ...
  • 在Catia中怎么恢复工具栏布局呢?下面就为大家分享Catia恢复工具栏布局的图文教程,有需要的可以来了解了解哦。Catia恢复工具栏布局的操作方法打开Catia软件,进入软件任何一个模块中,如这儿进入其中的零件设计模块...
  • AutoCAD2019是一款非常专业的制图软件,那有很多用户表示自己不知道怎么通过这款软件把工具栏调出来,下面就通过这篇文章给大家介绍一下,一起往下看吧!方法一、1.在打开的CAD图纸文件中点击上方工作空间的三角形...
  • 无论内置工具项还是自定义工具项,设置图标的关键都是`image`属性,由于pyqt5使用带`_large.png`后缀的文件作为图标,因此,最好同时放置两套图标文件。`add_toolitem`方法和`add_toolitem`方法都可以设置图标,但是...
  • c语言-菜单工具栏与状态栏第 6 章 菜单、工具栏与状态栏 参数nflags的含义 岂绩护围汞囊昌懦禁埠逼虫墒帅称惦尊瘫饿剿栏弧历置烂宣茵卑沃琉姐钻c语言-菜单工具栏与状态栏c语言-菜单工具栏与状态栏 【例6.4】 使用...
  • //自定义头工具栏右侧图标 - 提示 case 'LAYTABLE_TIPS': layer.alert('这是工具栏右侧自定义的一个图标按钮'); break; }; }); 复制了官方代码,并稍作修改,发现头部工具栏按钮失效。 把官方文档看了好几遍,终于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,440,588
精华内容 576,235
关键字:

搜索工具