1.创建字符串资源 ID: IDR_STATUSBAR_STRING
2.添加状态条变量:
CStatusBar m_wndStatusBar; //状态条
3.查看MSDN:
CStatusBar SetIndicators
BOOL SetIndicators( //在状态条中加入对应字符串ID
const UINT* lpIDArray, //字符串ID
int nIDCount //个数
);
void SetPaneInfo( //设置状态条的显示状态
int nIndex, //状态条的索引
UINT& nID, //状态条的字符ID
UINT& nStyle, //状态条的样式
nt& cxWidth //状态条的宽度
) const
4.写入代码创建状态条的代码:
(1) 创建字符ID的数组
static UINT indicators[] =
{
IDR_STATUSBAR_STRING
};
(2)添加CreatStatusBar函数并写入代码:
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT))) //创建状态条并设置字符资源的ID
{
TRACE0("Failed to create status bar\n");
return-1; // fail to create
}
CRect rc;
::GetWindowRect(m_wndStatusBar.m_hWnd,rc);
m_wndStatusBar.MoveWindow(rc); //移动状态条到指定位置
(3)在OnSize 中添加代码:
if(m_wndStatusBar.m_hWnd!=NULL){ //当对话框大小改变时 状态条大小也随之改变
CRect rc;
rc.top=cy-20;
rc.left=0;
rc.right=cx;
rc.bottom=cy;
m_wndStatusBar.MoveWindow(rc);
m_wndStatusBar.SetPaneInfo(0, m_wndStatusBar.GetItemID(0),SBPS_POPOUT, cx-10);
}
此时运行:
5.写入状态上显示文字的代码:
.h中添加变量 int iCount
ShowMessage函数添加:
CString strStatusMsg;
if (strMsg.Find("上线")>0) //处理上线还是下线消息
{
iCount++;
}else if (strMsg.Find("下线")>0)
{
iCount--;
}else if (strMsg.Find("断开")>0)
{
iCount--;
}
iCount=(iCount<=0?0:iCount); //防止iCount 有-1的情况
strStatusMsg.Format("有%d个主机在线",iCount);
m_wndStatusBar.SetPaneText(0,strStatusMsg); //在状态条上显示文字
6.列表中添加条目时产生日志:
Addlist 函数中添加
ShowMessage(true,strIP+"主机上线");
7、运行效果: