在对话框里添加状态栏(二)
本文转自: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中进行设置。
本文介绍了三种在对话框中添加状态栏的方法。方法一通过创建CStatusBar对象并设置其属性实现;方法二使用CreateStatusWindow函数直接创建状态栏;方法三同样创建CStatusBar对象,但通过不同的设置实现更灵活的状态栏布局。
2251

被折叠的 条评论
为什么被折叠?



