找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 644|回复: 5

[弹指神通]:如何建立状态栏!

[复制链接]
发表于 2002-11-14 18:00:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

  1. [FONT=courier new]
  2. 在dlg的.h文件中加入:
  3.         CStatusBar                        m_StatusBar1;
  4. 在dlg的.cpp文件中加入:
  5. static UINT BASED_CODE indicators[] =
  6. //        static UINT indicators[] =
  7. {
  8.          //ID_SEPARATOR,
  9.      ID_INDICATOR_CAPS,
  10.      ID_INDICATOR_NUM,
  11.          ID_USER_STR,
  12. };

  13. 然后在.cpp文件OnInitDialog()中加入:
  14.         CRect        rcClientOld; // 久客户区RECT
  15.         CRect        rcClientNew; // 加入TOOLBAR后的CLIENT RECT
  16.         GetClientRect(rcClientOld); //
  17.         // Called to reposition and resize control bars in the client area of a window
  18.         // The reposQuery FLAG does not really traw the Toolbar.  It only does the calculations.
  19.         // And puts the new ClientRect values in rcClientNew so we can do the rest of the Math.
  20.         //重新计算RECT大小
  21.         RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0,reposQuery,rcClientNew);

  22.         // All of the Child Windows (Controls) now need to be moved so the Tollbar does not cover them up.
  23.         //所有的子窗口将被移动,以免被TOOLBAR覆盖
  24.         // Offest to move all child controls after adding Tollbar
  25.         //计算移动的距离
  26.         CPoint ptOffset(rcClientNew.left-rcClientOld.left,rcClientNew.top-rcClientOld.top);

  27.         CRect        rcChild;
  28.         CWnd*        pwndChild = GetWindow(GW_CHILD);  //得到子窗口
  29.         while(pwndChild) // 处理所有子窗口
  30.         {//移动所有子窗口
  31.                 pwndChild->GetWindowRect(rcChild);
  32.                 ScreenToClient(rcChild);
  33.                 rcChild.OffsetRect(ptOffset);
  34.                 pwndChild->MoveWindow(rcChild,FALSE);
  35.                 pwndChild = pwndChild->GetNextWindow();
  36.         }

  37.         CRect        rcWindow;
  38.         GetWindowRect(rcWindow); // 得到对话框RECT
  39.         rcWindow.right += rcClientOld.Width() - rcClientNew.Width(); // 修改对话框尺寸
  40.         rcWindow.bottom += rcClientOld.Height() - rcClientNew.Height();
  41.         MoveWindow(rcWindow,FALSE); // Redraw Window

  42.         RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);

  43.         // TODO: Add extra initialization here
  44.         m_StatusBar2.CreateEx(this,SBT_TOOLTIPS,WS_CHILD|WS_VISIBLE|CBRS_BOTTOM,AFX_IDW_STATUS_BAR);

  45.         // Set the indicators namely caps and nums lock status
  46.         m_StatusBar2.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT));
  47.         CRect rect;
  48.         GetClientRect(&rect);
  49.         //m_StatusBar.SetPaneInfo(0,ID_INDICATOR_CAPS,SBPS_NORMAL,rect.Width()/2);
  50.         //m_StatusBar.SetPaneInfo(1,ID_INDICATOR_NUM,SBPS_STRETCH ,rect.Width()/2);

  51. //        m_StatusBar.SetPaneInfo(0,ID_INDICATOR_NUM,SBPS_NORMAL ,rect.Width()/3);
  52.         m_StatusBar2.SetPaneInfo(0,ID_INDICATOR_CAPS,SBPS_NORMAL|SBPS_DISABLED,rect.Width()/3);
  53.         m_StatusBar2.SetPaneInfo(1,ID_INDICATOR_NUM,SBPS_NORMAL ,rect.Width()/3);
  54.         m_StatusBar2.SetPaneInfo(2,ID_USER_STR,SBPS_NORMAL ,rect.Width()/3);
  55.     m_StatusBar2.SetPaneText(2,"用户名称", TRUE);
  56.    
  57.         //m_StatusBar.SetPaneInfo(1,ID_USER_STR,SBPS_STRETCH ,rect.Width()/3);
  58.         RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,ID_INDICATOR_NUM);
  59.         m_StatusBar2.GetStatusBarCtrl().SetBkColor(RGB(180,190,190));

  60. 就加入了状态栏(基于dlg)[/FONT]
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-14 18:09:52 | 显示全部楼层
谢谢!大家以后贴代码的时候,希望用“格式化代码”的方法,论坛置顶的帖子里面介绍了方法。看下下面的帖子:

http://www.xdcad.net/forum/showthread.php?threadid=1080
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-12-14 14:20:37 | 显示全部楼层
非常感谢,我也是个初学者
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-8-11 22:59:28 | 显示全部楼层
我很早就想处理了,但没成功,让我试试,谢谢大公无私的楼主
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-8-13 13:42:26 | 显示全部楼层
我也来试试看
还是不懂
那位高人解释一下啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-8-15 17:39:14 | 显示全部楼层
我做出来了,跟楼主的方法是不同的,他的思路是正确的,但我却实现不了,等我整理好了在上传给大家
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-22 20:20 , Processed in 0.257308 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表