CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  界面

ReBar

楼主newvagabond(流浪者)2003-08-02 16:37:36 在 VC/MFC / 界面 提问

I   want   to   add   a   rebar   to   the   main   window   of   a   program   based   on   dialog,I   tried   ,but   failed!  
   
  Please   write   the   detail   code   step   by   step(in   which   member   function),I   think   it   won't   too   be   long.  
  50   for   the   first   gentleman   who   give   me   the   answer,30   for   the   next   ,and    
  20   for   the   third.Of   course   if   there   is   only   one   who   solve   it,100   to   him.  
   
  No   scores   for   upman.  
   
  Can   you   do   it? 问题点数:100、回复次数:5Top

1 楼highersong(对月长啸)回复于 2003-08-02 18:47:34 得分 50

首先在你的Dialog类中定义如下成员:  
  CToolBar         m_wndToolBar;  
  CReBar             m_wndReBar;  
  CComboBoxEx   m_wndAddress;  
  CAnimateCtrl   m_wndAnimate;  
  在OnInitDialog中创建工具条,整个函数被改写为:  
  BOOL   CRebarDlg::OnInitDialog()    
  {  
  CDialog::OnInitDialog();  
   
  CImageList   img;  
  CString   str;  
   
  if   (!m_wndReBar.Create(this))  
  {  
  TRACE0("Failed   to   create   rebar\n");  
  return   -1;             //   fail   to   create  
  }  
   
  if   (!m_wndToolBar.CreateEx(this))  
  {  
  TRACE0("Failed   to   create   toolbar\n");  
  return   -1;             //   fail   to   create  
  }  
  //   set   up   toolbar   properties  
  m_wndToolBar.GetToolBarCtrl().SetButtonWidth(50,   150);  
  m_wndToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);  
   
  img.Create(IDB_HOTTOOLBAR,   22,   0,   RGB(255,   0,   255));  
  m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img);  
  img.Detach();  
  img.Create(IDB_COLDTOOLBAR,   22,   0,   RGB(255,   0,   255));  
  m_wndToolBar.GetToolBarCtrl().SetImageList(&img);  
  img.Detach();  
  m_wndToolBar.ModifyStyle(0,   TBSTYLE_FLAT   |   TBSTYLE_TRANSPARENT);  
  m_wndToolBar.SetButtons(NULL,   9);//为toolbar分配9个item的空间  
   
  //   set   up   each   toolbar   button  
  m_wndToolBar.SetButtonInfo(0,   ID_GO_BACK,   TBSTYLE_BUTTON,   0);  
  str="Back";  
  m_wndToolBar.SetButtonText(0,   str);  
  m_wndToolBar.SetButtonInfo(1,   ID_GO_FORWARD,   TBSTYLE_BUTTON,   1);  
  str="Forward";  
  m_wndToolBar.SetButtonText(1,   str);  
  m_wndToolBar.SetButtonInfo(2,   ID_VIEW_STOP,   TBSTYLE_BUTTON,   2);  
  str="Stop";  
  m_wndToolBar.SetButtonText(2,   str);  
  m_wndToolBar.SetButtonInfo(3,   ID_VIEW_REFRESH,   TBSTYLE_BUTTON,   3);  
  str="Refresh";  
  m_wndToolBar.SetButtonText(3,   str);  
  m_wndToolBar.SetButtonInfo(4,   ID_GO_START_PAGE,   TBSTYLE_BUTTON,   4);  
  str="Home";  
  m_wndToolBar.SetButtonText(4,   str);  
  m_wndToolBar.SetButtonInfo(5,   ID_GO_SEARCH_THE_WEB,   TBSTYLE_BUTTON,   5);  
  str="Search";  
  m_wndToolBar.SetButtonText(5,   str);  
  m_wndToolBar.SetButtonInfo(6,   ID_FAVORITES_DROPDOWN,   TBSTYLE_BUTTON   |   TBSTYLE_DROPDOWN,   6);  
  str="Favorite";  
  m_wndToolBar.SetButtonText(6,   str);  
  m_wndToolBar.SetButtonInfo(7,   ID_FILE_PRINT,   TBSTYLE_BUTTON,   7);  
  str="Print";  
  m_wndToolBar.SetButtonText(7,   str);  
  m_wndToolBar.SetButtonInfo(8,   ID_FONT_DROPDOWN,   TBSTYLE_BUTTON   |   TBSTYLE_DROPDOWN,   8);  
  str="Font";  
  m_wndToolBar.SetButtonText(8,   str);  
   
  CRect   rectToolBar;  
   
  //   set   up   toolbar   button   sizes  
  m_wndToolBar.GetItemRect(0,   &rectToolBar);  
  m_wndToolBar.SetSizes(rectToolBar.Size(),   CSize(30,20));  
   
  //   create   a   combo   box   for   the   address   bar  
  if   (!m_wndAddress.Create(CBS_DROPDOWN   |   WS_CHILD,   CRect(0,   0,   200,   120),   this,   AFX_IDW_TOOLBAR   +   1))  
  {  
  TRACE0("Failed   to   create   combobox\n");  
  return   -1;             //   fail   to   create  
  }  
   
  //   create   the   animation   control  
  m_wndAnimate.Create(WS_CHILD   |   WS_VISIBLE,   CRect(0,   0,   10,   10),   this,   AFX_IDW_TOOLBAR   +   2);  
  m_wndAnimate.Open(IDR_MFCAVI);  
  m_wndAnimate.Play(0,-1,-1);  
   
  //   add   the   toolbar,   animation,   and   address   bar   to   the   rebar  
  m_wndReBar.AddBar(&m_wndToolBar);  
  m_wndReBar.AddBar(&m_wndAnimate,   NULL,   NULL,   RBBS_FIXEDSIZE   |   RBBS_FIXEDBMP);  
  str.LoadString(IDS_ADDRESS);  
  m_wndReBar.AddBar(&m_wndAddress,   str,   NULL,   RBBS_FIXEDBMP   |   RBBS_BREAK);  
   
  //   set   up   min/max   sizes   and   ideal   sizes   for   pieces   of   the   rebar  
  REBARBANDINFO   rbbi;  
   
  rbbi.cbSize   =   sizeof(rbbi);  
  rbbi.fMask   =   RBBIM_CHILDSIZE   |   RBBIM_IDEALSIZE   |   RBBIM_SIZE;  
  rbbi.cxMinChild   =   rectToolBar.Width();  
  rbbi.cyMinChild   =   rectToolBar.Height();  
  rbbi.cx   =   rbbi.cxIdeal   =   rectToolBar.Width()   *   9;  
  m_wndReBar.GetReBarCtrl().SetBandInfo(0,   &rbbi);  
  rbbi.cxMinChild   =   0;  
   
  CRect   rectAddress;  
   
  rbbi.fMask   =   RBBIM_CHILDSIZE   |   RBBIM_IDEALSIZE;  
  m_wndAddress.GetEditCtrl()->GetWindowRect(&rectAddress);  
  rbbi.cyMinChild   =   rectAddress.Height()   +   10;  
  rbbi.cxIdeal   =   200;  
  m_wndReBar.GetReBarCtrl().SetBandInfo(2,   &rbbi);  
   
  m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle()   |  
  CBRS_TOOLTIPS   |   CBRS_FLYBY   |   CBRS_SIZE_FIXED);  
   
  RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);  
   
  return   TRUE;     //   return   TRUE   unless   you   set   the   focus   to   a   control  
                              //   EXCEPTION:   OCX   Property   Pages   should   return   FALSE  
  }  
  以上代码是我根据MSDN的一个例子(MFCIE:   Demonstrates   the   MFC   CHtmlView   and    
  CReBar   Classes,你可能看过这个例子)改写的,你可以打开这个例子把里面的资源  
  copy到自己的工程中去。如果想要整个源代码,给出信箱我给你发过去。  
  的程序衷曲  
  Top

2 楼tryber(Go with the CWnd)回复于 2003-08-02 19:21:59 得分 0

I   think   it   is   impossible!   Rebar   never   married   Dialog   Window,   She   love   FrameWnd   so   much.Top

3 楼highersong(对月长啸)回复于 2003-08-04 01:12:44 得分 0

to   tryber(cyber):你没法实现并不等于不能实现!!!Top

4 楼bager(柏哥)回复于 2003-08-04 09:27:18 得分 50

示例程序在对话框中加入Rebar,Rebar内部添加两个Dialogbar。  
  1、声明如下,其中CMyDialogBar为继承自CDialog类的Dialogbar,资源ID为IDD_DIALOGBAR,声明时,不要忘记#include   "MyDialogBar.h"。  
  CReBar     m_wndReBar;  
  CMyDialogBar         m_wndDialogBar1;  
  CMyDialogBar         m_wndDialogBar2;  
   
  2、修改CDlgWithRebarDlg::OnInitDialog(),添加部分如下所示:  
  BOOL   CDlgWithRebarDlg::OnInitDialog()  
  {  
  //...  
  if   (!m_wndReBar.Create(this))  
  {  
  TRACE0("Failed   to   create   rebar\n");  
  }  
  if   (!m_wndDialogBar1.Create(IDD_DIALOGBAR,this))  
  {  
  TRACE0("Failed   to   create   dialogbar\n");  
  }  
  if   (!m_wndDialogBar2.Create(IDD_DIALOGBAR,this))  
  {  
  TRACE0("Failed   to   create   dialogbar\n");  
  }  
   
  m_wndReBar.AddBar(&m_wndDialogBar1);  
  m_wndReBar.AddBar(&m_wndDialogBar2);  
   
  //这句很重要  
  RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);  
   
  //...  
  return   TRUE;  
  }Top

5 楼newvagabond(流浪者)回复于 2003-08-04 10:22:19 得分 0

Thanks   ,gentlemen!Top

相关问题

  • 关于Rebar
  • 如何使用rebar
  • SDK Rebar 的操作.
  • 如何添加rebar
  • 怎样在REBAR中使用组合框?
  • 菜鸟问题:怎么创建ReBar类?
  • 有人晓得用rebar 谁有例程!
  • 关于rebar的奇怪问题????
  • 关于ReBar的排列问题
  • !!继承CStatic后编写的类如何在ReBar中使用?

关键词

  • wnddialogbar
  • rebar
  • dialogbar
  • wndrebar
  • wndtoolbar
  • cmydialogbar
  • gettoolbarctrl
  • oninitdialog
  • failed
  • tbstyle

得分解答快速导航

  • 帖主:newvagabond
  • highersong
  • bager

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo