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


  • 相关阅读:
    android 基础项目及开发出现:error opening trace file: No such file or directory错误解决
    Android开发遇到的问题
    Don‘t talk.Just do it.
    LeetCode——Word Break
    晋IT分享成长沙龙集锦
    logback 简单配置总述
    HDU 2119 Matrix 简单二分匹配
    华为招聘机试整理5:简单四则运算
    JSP简单练习-猜字母游戏
    Codechef July Challenge 2014部分题解
  • 原文地址:https://www.cnblogs.com/lidabo/p/3501324.html
Copyright © 2011-2022 走看看