创建状态框
第一步:
在资源文件的string table中新加入两个ID,
第二步:
在xxxxxdlg.h中加入
CStatusBar m_bar;
CRect rect;
第三步:
初始化文本框格式,
m_bar.Create(this);
m_bar.SetIndicators(indicators, 3);
GetClientRect (&rect);
CString s1;
m_bar.SetPaneInfo(0, IDS_STRING101, SBPS_POPOUT, rect.Width() / 3);//用来设置风格的函数
m_bar.SetPaneInfo(1, IDS_STRING102, SBPS_POPOUT, rect.Width() - 500);
m_bar.SetPaneText(2, s1, 1); //设置状态栏的窗格文本
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, AFX_IDW_CONTROLBAR_FIRST);
//如果要直接抄答案,这个就不用管了,看下面的初始化
创建反映鼠标和坐标的函数
第一步:
在xxxxxdlg.h中加入 CTime t;
第二步:更新初始化的代码
HCURSOR CStatusbarDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CStatusbarDlg::InitStatus()
{
m_bar.Create(this);
m_bar.SetIndicators(indicators, 3);
GetClientRect (&rect);
CString s1;
t = CTime::GetCurrentTime();
s1 = t.Format("%Y年%m月%d日 %H:%M:%S"); //转换格式函数
m_bar.SetPaneInfo(0, IDS_STRING101, SBPS_POPOUT, rect.Width() / 3);//用来设置风格的函数
m_bar.SetPaneInfo(1, IDS_STRING102, SBPS_POPOUT, rect.Width() - 500);
m_bar.SetPaneText(2, s1, 1); //设置状态栏的窗格文本
SetTimer(1, 1000, NULL); //设置时间间隔的函数,
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, AFX_IDW_CONTROLBAR_FIRST);
这个函数的功能是将可用的客户区区域信息放到消息WM_SIZEPARENT的消息参数里,然后枚举本窗口的所有子窗口,
//给每个子窗口 (除掉一个特定的子窗口,相当于上文提到的最后一个子窗口)都发送这个消息,
//每个响应这个消息的子窗口都会把可用客户区切去一块。最后把那个特定的子窗口的尺寸和位置
// 调整到刚好放在最后剩下的可用区域里
}
第三步:写一个输出时间的函数
void CStatusbarDlg::showtime()
{
CString s;
t = CTime::GetCurrentTime();
s = t.Format("%Y年%m月%d日 %H:%M:%S"); //转换格式函数
m_bar.SetPaneText(2, s, 1);//设置状态栏的窗格文本
}
void CStatusbarDlg::OnTimer(UINT_PTR nIDEvent)
{
switch (nIDEvent)
{
case1:
{
showtime();
break;
}
default:
break;
}
CDialogEx::OnTimer(nIDEvent);
}
第四步:写关于鼠标的函数
void CStatusbarDlg::OnMouseMove(UINT nFlags, CPoint point)
{
//TODO: 在此添加消息处理程序代码和/或调用默认值
CString s;
CDC* pDC = GetDC();//CDC类定义的是设备上下文对象的类,CDC对象的成员函数进行所有的绘图。
s.Format(_T("X = %d,y=%d"), point.x, point.y);//unicode环境下
m_bar.SetPaneText(0, s);
ReleaseDC(pDC);
CDialogEx::OnMouseMove(nFlags, point);
}
步骤到这就结束了:
如果写完这些东西发现根本就没有状态框出现,那可能是缺少宏
BEGIN_MESSAGE_MAP(CStatusbarDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_TIMER()
ON_WM_MOUSEMOVE()
END_MESSAGE_MAP()
就是可能缺少这些东西,看情况叭