Fork me on GitHub

VC学习笔记:状态栏

VC学习笔记:状态栏

 SkySeraph NOV.24th 2010  HQU

Email-zgzhaobo@gmail.com  QQ-452728574

Latest Modified Date:NOV.25th 2010 HQU

实例学习

  • 1  新建对话框程序
  • 2  为Dlg类添加成员变量数 CStatusBar m_StatusBar;   在对话框上添加进度条控件并关联变量m_Progress
  • 3  在Dlg类OnInitDialg中添加如下代码

/*新建数组*/

UINT array[6];

for(int n=0;n<6;n++)

{

array[n] = 1001 +1;//为数组赋值

}

/*① 创建状态栏*/

m_StatusBar.Create(this);//默认ID

/*② 添加面板*/

m_StatusBar.SetIndicators(array,sizeof(array)/sizeof(UINT));//求数组元素  【方法】

/////参数说明:面板ID、数组元素数量

/*③ 设置面板宽度*/

CRect rect;

GetClientRect(rect);

UINT ParentWidth = rect.Width()/6;

for( int i=0;i<6;i++)//根据面板数循环

{

m_StatusBar.SetPaneInfo(i,array[i],0,ParentWidth);//设置面板宽度

}

/*④  设置面板文本*/

m_StatusBar.SetPaneText(0,"当前用户:");//设置面板文本

m_StatusBar.SetPaneText(1,"Sky");

m_StatusBar.SetPaneText(2,"当前状态:");

//系统时间获取并设置到面板文本上

CTime time = CTime::GetCurrentTime();

m_StatusBar.SetPaneText(4,"当前时间:");

m_StatusBar.SetPaneText(5,time.Format("%Y-%m-%d"));        

/*⑤  显示状态栏*/

RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);//显示状态栏

/////在状态栏上显示控件 【思路】

RECT m_rect;

m_StatusBar.GetItemRect(3,&m_rect);//获得显示控件的面板区域

//参数说明:面板ID、面板的显示区域

m_Progress.SetParent(&m_StatusBar);//设置进度条的父窗口为状态栏

m_Progress.MoveWindow(&m_rect);//

m_Progress.ShowWindow(SW_SHOW);

m_Progress.SetRange(0,30);

m_Progress.SetPos(15);

/////带滚动字幕的状态栏       待补充。。。

。。。

/*⑥ 状态栏随对话框窗口大小而变化*/

//关于此方法请查阅"界面技巧" 之 "控件大小随窗口而调整"

m_Resize.SetOwner(this);

m_Resize.SetResize(AFX_IDW_STATUS_BAR,PK_BOTTOM_LEFT,PK_BOTTOM_RIGHT);//AFX_IDW_STATUS_BAR为状态栏默认的ID

 

  • 【思路总结】

创建CStatusBar类变量;创建状态栏create;添加面板setIndicators;设置面板宽度SetPaneInfo;设置面板文本SetPaneText;显示状态栏RepositionBars;状态栏随窗口变化

  • 参考:

[1] 刘锐宁等.Visual C++从入门到精通[M].北京:清华大学出版社,2009.11

 

Author:         SKySeraph

Email/GTalk: zgzhaobo@gmail.com    QQ:452728574

From:         http://www.cnblogs.com/skyseraph/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,请尊重作者的劳动成果。

posted @ 2010-11-27 22:10  SkySeraph  阅读(2867)  评论(0编辑  收藏  举报