zoukankan      html  css  js  c++  java
  • 1.1.7-学习Opencv与MFC混合编程之---为画图工具添加工具栏

    源代码:http://download.csdn.net/detail/nuptboyzhb/3961701

    哎,其实里面有很多图片的,本来看起开很明了的,资源连接里有详细的文档,比下面的看的舒服的多....

    为画图工具添加工具栏

    Ø  首先认识一下工具栏的操作。

    1.    打开资源->Toolbar

    2.    如何查看每个图标的属性?

    查看每个图标属性,不是按右键,而是左键双击图片,即可看到,如:

    我们双击打开图标,得到如下属性框:

    从上图我们可以知道‘打开’图标的资源ID是:ID_FILE_NEW;这个ID号恰好和菜单项中的‘文件’->‘打开’菜单项具有相同的资源ID。

    因此,当我们按工具栏的‘打开’图标时,能够执行和按菜单项相同的功能。

    3.    如何为工具栏上的图标之间添加一个分隔符?

    只需要用鼠标拖动即可。将一个图标拖到远一点的地方即可。

    4.    如何删去一个图标?

    用鼠标拖动,拖到离开工具栏即可

    Ø  为项目的画图工具添加工具栏。

    1.    编辑工具栏资源,分别为每一个工具画一个图标,双击图标,设置图标的属性,使其资源ID号,与菜单项中各个工具菜单的资源ID相对应。编辑运行即可。

    2.    结束啦!

    Ø  新建自己的工具栏

    1.    插入,资源,选择Toolbar,点击新建按钮。将资源按钮设置为:IDR_MY_TOOLBAR

    2.    编辑几个图标资源,如下图:

    并设置相应的属性。将其与画图工具的菜单项的资源ID设为对应一致。

    3.    在CMainFrame类增加成员变量:CToolBar m_myToolBar;并在CMainFrame类的OnCreate(LPCREATESTRUCT lpCreateStruct)函数里添加如下代码:

    if(!m_myToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_LEFT

               |CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||

               !m_myToolBar.LoadToolBar(IDR_MY_TOOLBAR))

    {

               TRACE0("Failedto create toolbar ");

               return-1;      // fail to create

    }

    m_myToolBar.EnableDocking(CBRS_ALIGN_ANY);

    EnableDocking(CBRS_ALIGN_ANY);

    DockControlBar(&m_myToolBar);

    4.    编辑运行即可。

    在增加成员变量CToolBar  m_myToolBar;后出现运行错误,错误提示是一些内存不可读错误。此时,将Release文件下的所有文件删除即可。

    Ø  完善功能:为工具栏的显示与否,添加查看菜单项;

    1.    添加‘查看’菜单项,设置为弹出类型。

    2.    在‘查看’菜单项下添加‘系统工具栏’和‘画图工具栏’菜单项。分别设置相应的属性,并建立类向导;(注意):建立类向导的时候,选择添加到CMainFrame类。在分别在其消息相应函数中加入如下命令:

    void CMainFrame::OnViewSystemBar()

    {

    //TODO: Add your command handler code here

    ShowControlBar(&m_wndToolBar,!m_wndToolBar.IsWindowVisible(),FALSE);

    }

     

    void CMainFrame::OnViewDrawBar()

    {

    //TODO: Add your command handler code here

    ShowControlBar(&m_myToolBar,!m_myToolBar.IsWindowVisible(),FALSE);

    }

    3.    以上基本完成了菜单项的功能,一下我们为菜单项的选择添加‘对号’标记。

    为‘系统工具栏’和‘画图工具栏’菜单项添加UPDATA_COMMAND_UI消息处理函数。点击右键,建立类向导,

    选择UPDATA_COMMAND_UI.类名选择CMainFrame.增加函数,编辑代码:

    voidCMainFrame::OnUpdateViewSystemBar(CCmdUI* pCmdUI)

    {

    // TODO:Add your command update UI handler code here

    pCmdUI->SetCheck(m_wndToolBar.IsWindowVisible());

    }

     

    void CMainFrame::OnUpdateViewDrawBar(CCmdUI*pCmdUI)

    {

    //TODO: Add your command update UI handler code here

    pCmdUI->SetCheck(m_myToolBar.IsWindowVisible());

    }

    Ø  为画图工具的各个菜单项添加复选提示;

    分别点击右键,建立类向导,选择UPDATA_COMMAND_UI.类名选择CXXXXView.增加函数,编辑代码:

    void CCVMFCView::OnUpdateMyDrawLine(CCmdUI*pCmdUI)

    {

    //TODO: Add your command update UI handler code here

    pCmdUI->SetCheck(my_draw_flag==1);

    }

     

    voidCCVMFCView::OnUpdateMyDrawRectangle(CCmdUI* pCmdUI)

    {

    //TODO: Add your command update UI handler code here

    pCmdUI->SetCheck(my_draw_flag==2);

    }

     

    void CCVMFCView::OnUpdateMyDrawCircle(CCmdUI*pCmdUI)

    {

    //TODO: Add your command update UI handler code here

    pCmdUI->SetCheck(my_draw_flag==3);

    }

     

    voidCCVMFCView::OnUpdateMyDrawConceal(CCmdUI* pCmdUI)

    {

    //TODO: Add your command update UI handler code here

    pCmdUI->SetCheck(my_draw_flag==0);

    }

     

    void CCVMFCView::OnUpdateMyDrawCurve(CCmdUI*pCmdUI)

    {

    //TODO: Add your command update UI handler code here

    pCmdUI->SetCheck(my_draw_flag==4);

    }

     

    voidCCVMFCView::OnUpdateMyDrawEllipse(CCmdUI* pCmdUI)

    {

    //TODO: Add your command update UI handler code here

    pCmdUI->SetCheck(my_draw_flag==5);

    }

     

    void CCVMFCView::OnUpdateMyDrawText(CCmdUI*pCmdUI)

    {

    //TODO: Add your command update UI handler code here

    pCmdUI->SetCheck(my_draw_flag==6);

    }

    Ø  为各个工具菜单添加{提示}功能。即:当鼠标移动到菜单项上的时候,程序左下角会提示该菜单项的功能。

    方法1:设置菜单项的属性,在属性中的最后一栏,提示栏中输入相应的提示语即可。

    方法2:直接打开资源文件:XXXX.rc,用记事本打开;

       添加如下代码:

    在BEGIN 和END之间添加菜单项的ID号和对应的字符串即可:

    如:

    STRINGTABLE DISCARDABLE

    BEGIN

       ID_MY_DRAW_LINE         "画一条直线(拖动鼠标)"

       ID_MY_DRAW_CONCEAL      "取消工具"

       ID_MY_DRAW_RECTANGLE    "画矩形(拖动鼠标)"

       ID_MY_DRAW_CIRCLE       "画圆(拖动鼠标)"

       ID_MY_DRAW_ELLIPSE      "画椭圆(拖动鼠标)"

       ID_MY_DRAW_TEXT         "写文字(拖动鼠标)"

       ID_MY_DRAW_CURVE        "画任意曲线(拖动鼠标)"

    END


  • 相关阅读:
    泛微云桥e-Bridge 目录遍历,任意文件读取
    (CVE-2020-8209)XenMobile-控制台存在任意文件读取漏洞
    selenium 使用初
    将HTML文件转换为MD文件
    Python对word文档进行操作
    使用java安装jar包出错,提示不是有效的JDK java主目录
    Windows server 2012安装VM tools异常解决办法
    ifconfig 命令,改变主机名,改DNS hosts、关闭selinux firewalld netfilter 、防火墙iptables规则
    iostat iotop 查看硬盘的读写、 free 查看内存的命令 、netstat 命令查看网络、tcpdump 命令
    使用w uptime vmstat top sar nload 等命令查看系统负载
  • 原文地址:https://www.cnblogs.com/lidabo/p/3501324.html
Copyright © 2011-2022 走看看