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

 

创建工具栏 分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增加到 工具栏

    
             

 

 

时间: 2024-08-02 14:22:17

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

MFC SDI单文档 状态栏 进度条 启动画面编程技巧 ...

      状态栏的编程离不开  CStatusBar类     CProgressCtrl  进 度条相关的控件      下面我们介绍状态栏 编程技巧  以及在状态栏添加进度条   应用程序的启动界面    状态栏的添加步骤     SDI 单文档中      下面是MFC给的 状态栏的创建步骤      Construct the CStatusBar object.    构造一个 CStatusBar对象    Call the Create (or CreateEx) functio

SDI单文档视图, 采用基于CFormView的视图, 如何在程序初始化和运行中手动设置mainFrame和View的大小?

问题描述 SDI单文档视图,采用基于CFormView的视图,如何在程序初始化和运行中手动设置mainFrame和View的大小?我在BOOLCMainFrame::PreCreateWindow(CREATESTRUCT&cs){if(!CFrameWnd::PreCreateWindow(cs))returnFALSE;//TODO:在此处通过修改//CREATESTRUCTcs来修改窗口类或样式cs.cx=1280;cs.cy=1024;returnTRUE;}不起作用,显示的大小和对话框

mfc-MFC单文档是socket编程方法

问题描述 MFC单文档是socket编程方法 我不知道recv函数应该放在什么地方,一接收数据就有问题,大神请指教 解决方案 recv函数最后在一个线程中,

cximage sdi 单文档-CXimage Demo 改为单文档应用程序后,文档类里面的线程,发送消息视类收不到?

问题描述 CXimage Demo 改为单文档应用程序后,文档类里面的线程,发送消息视类收不到? 最近下载了一个CxImage 的Demo源程序,但Demo是基于多文档的,我想把它改成单文档,就先实验了一个功能--向左旋转,但在线程里面发的消息视类没有收到,有没有人知道原因? 我是一个新手,请高手帮忙

MFC SDI单文档应用程序贴图

   //我们在进行贴图的时候需要将背景擦除  贴图之后我们返回TRUE告诉操作系统已经擦出了背景  如果调用基类的OnEraseBKknd那么 //我们的贴图会被再次擦除就看不到贴图了  //在对向指定设备拷贝位图之前 我们先要在内存中准备位图 我们创建一个和目的DC兼容的兼容DC 并且将位图选择到 兼容DC然后进行拷贝 //返回TRUE我们不擦背景直接贴 那么不会出现闪烁 /*BOOL CBitBltView::OnEraseBkgnd(CDC* pDC) {     CDC dcCompa

vc++-MFC 单文档添加嵌入式对话框

问题描述 MFC 单文档添加嵌入式对话框 需要在右侧客户区添加一个嵌入式的对话框.. 解决方案 在MFC单文档/多文档/对话框环境下添加控制台vs2010mfc单文档中添加对话框中的控件MFC如何在单文档下添加背景图片 解决方案二: 单文档才有CFormView,它本身就是i一个对话框类似的view,而且你右边客户区可以用Edit控件. 解决方案三: 新建一个资源管理器样式的程序,然后左右都从CForm继承. 解决方案四: CSplittWnd拆分视图框架窗口即可.CMainFrame::OnC

求问单文档mfc相关问题

问题描述 求问单文档mfc相关问题 单文档mfc链接数据库 但始终显示IDM_ABOUTBOX和IDS_ABOUTBOX未定义 有什么好的解决办法么? 解决方案 下载一个完整的代码:http://download.csdn.net/detail/wuqiangjx2012/4196086 而不是仅仅拷贝代码片段. 解决方案二: http://download.csdn.net/detail/zhucr1985/2942315 解决方案三: 这是帮助对话框自带的.你工程中有这些资源吗 解决方案四:

sdi-SDI单文档视图分割问题

问题描述 SDI单文档视图分割问题 按照网上的例程,进行单文档视图分割,新建了一个类CLeftView类,继承自CTreeView,当在CMainFrame的OnCreatClient中添加如下代码(m_wndSplitter 是CMainFrame中的CSplitterWnd 类型的变量): if (!m_wndSplitter.CreateStatic(this, 1, 2)) return FALSE; if (!m_wndSplitter.CreateView(0, 0, RUNTIME

c++-关于MFC含有多个对话框的单文档程序 文件操作

问题描述 关于MFC含有多个对话框的单文档程序 文件操作 最近在做MFC的课程设计,有关单文档的.涉及到txt文件的操作 有什么好的办法可以方便对文件的操作 我之前做C语言的课程设计的时候是将txt文件里的东西全都读到一个全局变量的结构体数组里,程序对数组操作完之后把原来的文件删掉再重新把数组里的内容写进去. 虽然根据这种办法可以用类对象数组来处理,但是由于MFC涉及到多个对话框,感觉这种办法不太好. 还麻烦各位大神指教 解决方案 在doc类里面去做文件操作,单文档多视图的意思是,一个doc类对