在对话框里添加状态栏(二)

本文介绍了三种在对话框中添加状态栏的方法。方法一通过创建CStatusBar对象并设置其属性实现;方法二使用CreateStatusWindow函数直接创建状态栏;方法三同样创建CStatusBar对象,但通过不同的设置实现更灵活的状态栏布局。

在对话框里添加状态栏(二)

本文转自:http://blog.163.com/sqq-htwlr/blog/static/48833555200863093544491/

 

       在网上搜索了一些关于此类的问题几个版本,就顺便归一下类,看着方便。

方法一:

首先在dialog的头文件里添加成员变量m_StatusBar(CStatusBar类型);

再在resources的String Table里添加IDS_PANEL1,IDS_PANEL2,IDS_PANEL3,IDS_PANEL4;

然后在OnInitDialog函数里面添加代码,如下:

m_StatusBar.CreateEx(this,SBT_TOOLTIPS,WS_CHILD   |   WS_VISIBLE   |   CBRS_BOTTOM,AFX_IDW_STATUS_BAR   );   
static  UINT BASED_CODE inditors[]={IDS_PANEL1,IDS_PANEL2,IDS_PANEL3,IDS_PANEL4};
m_StatusBar.SetIndicators(inditors,sizeof(inditors)/sizeof(UINT));   
CRect   rect;   
int   panes[4];   
this->GetClientRect(&rect);   
panes[0]=rect.Width()/4;   //状态栏划分方格的大小
panes[1]=rect.Width()/4;   
panes[2]=rect.Width()/4   
panes[3]=rect.Width()/4;   
           
m_StatusBar.SetPaneInfo(0,IDS_PANEL1,SBPS_NORMAL,panes[0]);  
m_StatusBar.SetPaneInfo(1,IDS_PANEL2,SBPS_NORMAL,panes[1]);  
m_StatusBar.SetPaneInfo(2,IDS_PANEL3,SBPS_NORMAL,panes[2]);   
m_StatusBar.SetPaneInfo(3,IDS_PANEL4,SBPS_NORMAL,panes[3]);   
   
m_StatusBar.SetPaneText(0,"提示",0);  
m_StatusBar.SetPaneText(1,"公司",0);  
m_StatusBar.SetPaneText(2,"明日科技",0);  
m_StatusBar.SetPaneText(3,"时间",0);  

RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,AFX_IDW_CONTROLBAR_FIRST);  

//重新设置和调整状态栏大小

 

方法二:

只在OnInitDialog函数里面添加代码,如下:

HWND hDlg=GetSafeHwnd();
HWND hStatusWindow=CreateStatusWindow(WS_CHILD|WS_VISIBLE|WS_BORDER,
                                                                        TEXT("状态栏"),//显示在状态栏上的信息
                                                                        hDlg, //父窗口句柄
                                                                        IDS_STATUS); //预定义的资源ID

 int pint[4]={110,250,300,-1};//状态栏方格第一个为110,第二个为250-110,以此类推
 ::SendMessage(hStatusWindow,SB_SETPARTS,4,(LPARAM)pint);
::SendMessage(hStatusWindow,SB_SETTEXT,1,(LPARAM)TEXT("信息一"));

方法三:

首先在dialog的头文件里添加成员变量m_StatusBar(CStatusBar类型);

然后在OnInitDialog函数里面添加代码,如下:

UINT array[5];

for(int i=0;i<5;i++)
{
 array[i] = i+100;//用来设置ID号
}
 
 m_StatusBar.Create(this);
 m_StatusBar.SetIndicators(array,sizeof(array)/sizeof(UINT));
 
 CRect rect;
// m_StatusBar.GetClientRect(rect);不能用此句,否则状态栏的方格都集中在开头,不能显示
 this->GetClientRect(rect);

UINT panewidth = rect.Width()/4;//这两处的值,for循环里面的值一定要小于上面的值,否则会出错
 for(int n=0;n<4;n++)                  // 最好相等

{
  m_StatusBar.SetPaneInfo(n,array[n],0,panewidth);
 }
 m_StatusBar.SetPaneText(0,"hello!",true);
 m_StatusBar.SetPaneText(1,"girl",true);

状态栏中方格的大小可以在SetPaneInfo中进行设置。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值