MFC下 SDI 单文档 对话框 工具栏编程总结 新手值得一看,

来源:互联网 发布:农村淘宝运营面试 编辑:程序博客网 时间:2024/04/29 07:13
 

创建工具栏 分2种情况   对话框的工具栏  和 SDI 单文档工具栏编程 


    用到的函数 
 
    RecalcLayout     当窗体布局发生改变的时候  调用这个函数会调用 RePositionBar重新摆放工具条 
    ShowControlBar   显示隐藏 工具栏的函数     CControlBar是CToolBar的基类 
    IsWindowVisible  CWnd的函数返回BOOL  检测从CWnd派生的 窗体是否可见 
    CCmdUI           OnUpdateCmdUI消息  用于菜单的维护的一些函数如SetCheck等等    

 

 

1. 工具栏 菜单都是镶嵌在框架类上的对与 一个单文档应用程序来说     首先 定义一个  CToolBar 的对象 


     if (!m_newToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_RIGHT     //创建一个工具栏
  | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||   //加载一个工具栏 资源
  !m_newToolBar.LoadToolBar(IDR_TOOLBAR1))
 {
  TRACE0("Failed to create toolbar\n");
  return -1;      // fail to create
 }

         m_newToolBar.EnableDocking(CBRS_ALIGN_ANY);  //设置工具栏可以停靠 
  this->EnableDocking(CBRS_ALIGN_ANY);  //设置框架窗体可以被停靠     缺一不可
  this->DockControlBar(&m_newToolBar);  //停靠工具栏  

 

       以上是 SDI中MFC框架   OnCreate函数中  代码 

 

2.对话框的工具栏添加  特色工具栏

 

         
 1.        ///////////////////特色工具栏的添加
   CToolBar *m_wndToolBar=new CToolBar;    //工具条对象堆中创建
   m_wndToolBar->CreateEx( this,TBSTYLE_FLAT ,  WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS,
    CRect(10,10,0,0));        //创建工具栏
   m_wndToolBar->LoadToolBar(IDR_TOOLBAR1) ; //加载工具栏资源 
   RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);   //停靠工具栏    


    AFX_IDW_CONTROLBAR_FIRST,   AFX_IDW_CONTROLBAR_LAST  
    指的是空间ID的范围,在MFC中  
    AFX_IDW_CONTROLBAR_FIRST   的值为   0xE800  
    AFX_IDW_CONTROLBAR_LAST     的值为   oxE8FF  
   
    意思是这个ID范围内的ControlBar都将被Reposition

 


2.经过上面步骤 已经在对话框上创建了我们家在的菜单资源   然后我们设置每个按钮的位图  通过   CImageList 类  GetToolBarCtrl 函数获得 CToolBarCtrl的一个引用 
 
  步骤是       CImageList * p=new CImageList;  //定义 CImageList对象
               p->Create(30,30,ILC_COLOR32, 0, 13);  //创建图像列表  
               pp->Add(AfxGetApp()->LoadIcon(IDI_ICON13));  //向CImageList对象增加新的图标                pp->Add(AfxGetApp()->LoadIcon(IDI_ICON9));//add 图标
               (m_wndToolBar->GetToolBarCtrl()).SetImageList(pp); //设置图像列表 工具栏的 通过工具控件   CToolBarCtrl 控件  

 

 

3.设置 CToolTipCtrl   就是工具栏上面的浮动提示

 

   CToolTipCtrl *t=new CToolTipCtrl;   //在堆中创建一个 CToolTipCtrl控件
   t->Create(this);  //在本窗体中创建  
   t->SetMaxTipWidth(100);  //设置最大宽度
   t->SetTipBkColor(RGB(233,222,232));    //设置背景颜色
   t->SetTipTextColor(RGB(22,122,122)); //设置提示的文本颜色 
   t->AddTool(m_wndToolBar,"导出当前员工在线信息到磁盘",CRect(0,0,20,20),ID_OUTPUT);  //每次增加的tip都对一个这一个工具栏按钮的ID
   t->AddTool(m_wndToolBar,"清空系统运行时候产生的缓存文件",CRect(0,0,20,20),IDM_CLEAR); //ID就是工具栏按钮ID 
   t->Activate(true); 
    (m_wndToolBar->GetToolBarCtrl()).SetToolTips(t); //将TIP增加到 工具栏

    
             

 


 

原创粉丝点击