CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

Dialog 程序

楼主newvagabond(流浪者)2003-08-01 19:32:39 在 VC/MFC / 基础类 提问

有个对话框程序;  
  给它添加菜单后,给它加   toolbar,却怎么搞都不行,谁能帮忙?  
   
  CToolBar   tb;  
   
   
  tb.Create(this);  
  tb.LoadToolBar(IDR_TOOLBAR1);  
   
   
  问题点数:20、回复次数:8Top

1 楼highersong(对月长啸)回复于 2003-08-01 19:43:59 得分 10

我以前也遇到过这个问题:CToolBar被成功地创建了,却看不见。加tb.ShowWindow()也不行。解决的办法是在后面加  
  RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);  
  注意:应该在OnInitDialog中创建Top

2 楼jjqiao710102(aqiao)回复于 2003-08-01 19:47:11 得分 0

upTop

3 楼highersong(对月长啸)回复于 2003-08-01 20:01:23 得分 10

以下是在一个Dialog的OnInitDialog()函数里创建一个ToolBar的例子,我用的是CRebar,创建好toolbar后加入rebar中:  
  /////////////////////////////////////////////////////创建工具条  
  // CImageList   img; //定义一个imageList  
  CString   str;  
   
  if   (!m_wndReBar.Create(this))  
  {  
  TRACE0("Failed   to   create   rebar\n");  
  return   -1;             //   fail   to   create  
  }  
  if   (!m_wndToolBar.CreateEx(this,TBSTYLE_LIST|TBSTYLE_FLAT))  
  {  
  TRACE0("Failed   to   create   toolbar\n");  
  return   -1;             //   fail   to   create  
  }  
  //   set   up   toolbar   properties  
  m_wndToolBar.GetToolBarCtrl().SetButtonWidth(20,   150);  
   
  //m_wndToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);  
   
  if(m_il.Create(IDB_TOOLBAR,   16,   0,   RGB(255,   0,   255)))  
  TRACE0("Success");  
  m_wndToolBar.GetToolBarCtrl().SetImageList(&m_il);  
  //m_wndToolBar.ModifyStyle(0,   TBSTYLE_FLAT   |   TBSTYLE_TRANSPARENT);  
  m_wndToolBar.SetButtons(NULL,   10);//为toolbar分配10个item的空间  
   
  //   set   up   each   toolbar   button  
  m_wndToolBar.SetButtonInfo(0,   ID_SCH_SAVE,   TBSTYLE_BUTTON,   2);  
  str="保存并关闭(&S)";  
  m_wndToolBar.SetButtonText(0,   str);  
   
  m_wndToolBar.SetButtonInfo(1,   0,   TBBS_SEPARATOR,   5);//分隔符  
   
  m_wndToolBar.SetButtonInfo(2,   ID_SCH_PRINT,   TBSTYLE_BUTTON   |   TBBS_AUTOSIZE,   6);//打印  
   
  m_wndToolBar.SetButtonInfo(3,   ID_SCH_INSERT,   TBSTYLE_BUTTON|   TBBS_AUTOSIZE,   5);//附件文件  
   
  m_wndToolBar.SetButtonInfo(4,   0,   TBBS_SEPARATOR,   5);//分隔符  
   
  m_wndToolBar.SetButtonInfo(5,   ID_SCH_CIRCLE,   TBSTYLE_BUTTON|TBBS_AUTOSIZE,   7);//重复周期  
  str="重复周期(&U)";  
  m_wndToolBar.SetButtonText(5,   str);  
   
  m_wndToolBar.SetButtonInfo(6,   0,   TBBS_SEPARATOR,   5);//分隔符  
   
  m_wndToolBar.SetButtonInfo(7,   ID_SCH_HIGH,   TBSTYLE_BUTTON|   TBBS_AUTOSIZE,   0);//重要性高  
   
  m_wndToolBar.SetButtonInfo(8,   ID_SCH_LOW,   TBSTYLE_BUTTON|   TBBS_AUTOSIZE,   8);   //重要性低  
   
  m_wndToolBar.SetButtonInfo(9,   0,   TBBS_SEPARATOR,   5);   //分隔符  
   
  CRect   rectToolBar;  
   
  //   set   up   toolbar   button   sizes  
  m_wndToolBar.GetItemRect(0,   &rectToolBar);  
  m_wndToolBar.SetSizes(rectToolBar.Size(),   CSize(16,15));  
  //m_wndToolBar.SetSizes(CSize(rectToolBar.Width(),rectToolBar.Height()),   CSize(30,20));  
   
  //   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.SetBarStyle()  
  //m_wndReBar.AddBar(&m_wndAnimate,   NULL,   NULL,   RBBS_FIXEDSIZE   |   RBBS_FIXEDBMP);  
   
  //   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;  
   
  m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle()   |   CBRS_TOOLTIPS   |   CBRS_FLYBY   |   CBRS_SIZE_FIXED);  
   
  RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);  
  /////////////////////////////////////////////////////创建工具条Top

4 楼newvagabond(流浪者)回复于 2003-08-02 08:20:51 得分 0

OK  
  但是参数       AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST   在哪里查啊?  
  --我经常碰到这种情况!Top

5 楼triout(笨牛)回复于 2003-08-02 08:29:34 得分 0

完全同意以上解法!Top

6 楼highersong(对月长啸)回复于 2003-08-02 09:01:36 得分 0

不需要查,只不过是定义的两个ID号,下面是MSDN上的说明:  
  All   control   bar   objects/windows   will   be   child   windows   of   some   parent   frame   window.   They   are   usually   added   as   a   sibling   to   the   client   area   of   the   frame   (for   example,   an   MDI   Client   or   view).   The   child   window   ID   of   a   control   bar   is   important.   The   default   layout   of   control   bar   only   works   for   control   bars   with   IDs   in   the   range   of   AFX_IDW_CONTROLBAR_FIRST   to   AFX_IDW_CONTROLBAR_LAST.   Note   that   even   though   there   is   a   range   of   256   control   bar   IDs,   the   first   32   of   these   control   bar   IDs   are   special   since   they   are   directly   supported   by   the   print   preview   architecture.  
   
  Top

7 楼newvagabond(流浪者)回复于 2003-08-02 09:49:06 得分 0

Thanks   to   AllTop

8 楼newvagabond(流浪者)回复于 2003-08-02 09:54:07 得分 0

哎,僧多粥少,我只能给   对月长啸先生多一点分了,csdn   做得不好,有的问题没有解决。,又不能取消,白白浪费我的信誉分,给分多了又不行!Top

相关问题

  • 如何在dialog程序中添加statusbar?
  • Dialog Based程序的简单问题
  • 如何给基于Dialog的应用程序加上菜单?
  • Dialog Based 程序,请问添加菜单后……
  • 基于Dialog的程序如何防止Esc或回车退出?
  • 关于基于dialog based的程序的问题
  • ●●●● 基于dialog的程序怎么访问数据库?谢谢 ●●●●
  • EVC中基于Dialog的应用程序可以加菜单么?
  • 怎样让Dialog Based的程序一启动就隐藏
  • 基于Dialog应用程序的UPDATE_COMMAND_UI问题,请帮忙!!!

关键词

  • toolbar
  • wndtoolbar
  • tbstyle
  • controlbar
  • idw
  • gettoolbarctrl
  • 创建
  • control bar
  • afx
  • tb

得分解答快速导航

  • 帖主:newvagabond
  • highersong
  • highersong

相关链接

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

广告也精彩

反馈

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