MFC状态栏字体与颜色的设置

编译环境VS2010,基于单文档的VC工程,执行效果如下图所示:

1. 修改状态栏的字体及高度
状态栏的高度取决于使用字体的大小,所以这里只讲如果修改字体。
在OnCreate函数中调用状态栏对象的 m_wndStatusBar.SetFont()函数即可, 代码如下
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
... ...
//得到系统字体,然后修改必要参数即可
 LOGFONT logfont;
 GetObject(::GetStockObject(DEFAULT_GUI_FONT), sizeof(logfont), &logfont);
 logfont.lfCharSet=GB2312_CHARSET;
 logfont.lfWeight = FW_NORMAL;
 logfont.lfHeight  = 24;
 lstrcpy(logfont.lfFaceName, _T("微软雅黑"));
//使用static对象,使得sfontStatusBar生命周期从创建开始至程序结束
//当然也可以使用成员对象
 static CFont statusBarFont;
 statusBarFont.CreateFontIndirect(&logfont);
 m_wndStatusBar.SetFont(&statusBarFont);
... ...
}
 
2.  修改状态栏字体的颜色和背景颜色
2.1 假设状态栏,添加了 ID_INDICATOR_VectInfo, ID_INDICATOR_PixelPos, ID_INDICATOR_PixelVal,
static UINT indicators[] =
{
 ID_SEPARATOR,           // 状态行指示器
 ID_INDICATOR_VectInfo,
 ID_INDICATOR_PixelPos,
 ID_INDICATOR_PixelVal,
 ID_INDICATOR_CAPS,
 ID_INDICATOR_NUM,
 ID_INDICATOR_SCRL,
};
 
2.2 为了修改状态栏中字体的颜色,必须添加状态栏格COMMAND相应函数,如下所示位置添加ON_COMMAND_RANGE的宏即可。
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWndEx)
 ... ...
 ON_COMMAND_RANGE(ID_INDICATOR_VectInfo,ID_INDICATOR_PixelVal,NULL)
 ... ...
END_MESSAGE_MAP()
 
2.3 设置状态栏个的内容颜色
bool CMainFrame::SetCoordStatus(IPoint2D& lineVect, DPoint2D& pixelPos, IPoint3D& pixelVal)
{
//得到窗格的索引
 int vecIndex = m_wndStatusBar.CommandToIndex(ID_INDICATOR_VectInfo);  //
 int posIndex = m_wndStatusBar.CommandToIndex(ID_INDICATOR_PixelPos);  //
 int valIndex = m_wndStatusBar.CommandToIndex(ID_INDICATOR_PixelVal);  //
 CString strVec;
 CString strPos;
 CString strVal;
 strVec.Format(_T("VEC(%.1f, %.2f)"), lineVect.Mag(), lineVect.Arg()*180/TMathTool::PI());
 strPos.Format(_T("POS(%.1f, %.1f)"), pixelPos.x(), pixelPos.y());
 strVal.Format(_T("RGB(=, =, =)"), pixelVal.x(), pixelVal.y(), pixelVal.z());
//设置窗格宽度
 m_wndStatusBar.SetPaneWidth(vecIndex,160);
 m_wndStatusBar.SetPaneWidth(posIndex,180);
 m_wndStatusBar.SetPaneWidth(valIndex,180);
//设置背景颜色
 m_wndStatusBar.SetPaneBackgroundColor(vecIndex,RGB(0,64,128));
 m_wndStatusBar.SetPaneBackgroundColor(posIndex,RGB(0,64,64));
 m_wndStatusBar.SetPaneBackgroundColor(valIndex,RGB(0,32,64));
//设置文本颜色
 m_wndStatusBar.SetPaneTextColor(vecIndex, RGB(255, 255, 255));
 m_wndStatusBar.SetPaneTextColor(posIndex, RGB(255, 255, 255));
 m_wndStatusBar.SetPaneTextColor(valIndex, RGB(255, 255, 255));
//设置文本
 m_wndStatusBar.SetPaneText(vecIndex, strVec);
 m_wndStatusBar.SetPaneText(posIndex, strPos);
 m_wndStatusBar.SetPaneText(valIndex, strVal);
 return true;
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值