文档章节

VS环境下MFC状态栏编程(设置状态栏大小,字体大小,背景颜色和文字颜色等)

o
 osc_z1hvg4cu
发布于 2018/04/24 11:06
字数 457
阅读 26
收藏 0

精选30+云产品,助力企业轻松上云!>>>

需要做出的效果

1、我新建的项目是带ribbon的mfc多文档,结果在mainfrm的头文件里面 CMFCRibbonStatusBar  m_wndStatusBar;后来发现这样的话用不了很多状态栏以前的函数,所以先检查状态栏变量的声明

     需要改为CMFCStatusBar  m_wndStatusBar;

2、在资源视图里面,String Table里面插入三个字符

    

3、为了能改变状态栏的文字的颜色和背景颜色需要加入oncommand

BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWndEx)
     //添加的ON_COMMAND_RANGE,第一个参数是起始值,第二个参数是终止值
    ON_COMMAND_RANGE(IDS_STATUS_PANE1,IDS_STATUS_PANE3,NULL)
END_MESSAGE_MAP()

 

3、然后再mainframe的onCreate函数里面插入一下代码

static UINT indicatros[]=
    {
        IDS_STATUS_PANE1,
        IDS_STATUS_PANE2,
        IDS_STATUS_PANE3,
    };
    if (!m_wndStatusBar.Create(this)||!m_wndStatusBar.SetIndicators(indicatros,sizeof(indicatros)/sizeof(UINT)))
    {
        TRACE0("未能创建状态栏\n");
        return -1;      // 未能创建
    }
    //设置状态栏的字体
    CFont* fontstatus=new CFont;
    fontstatus->CreateFont(15,0,0,0,FW_BOLD,FALSE,FALSE,0,GB2312_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH |FF_MODERN,_T("宋体"));
    m_wndStatusBar.SetFont(fontstatus);
    //获取状态栏索引号
    int a = m_wndStatusBar.CommandToIndex(IDS_STATUS_PANE1);  //
    int b = m_wndStatusBar.CommandToIndex(IDS_STATUS_PANE2);  //
    int c = m_wndStatusBar.CommandToIndex(IDS_STATUS_PANE3);  //
    //设置窗格宽度
    m_wndStatusBar.SetPaneWidth(a,250);
    m_wndStatusBar.SetPaneWidth(b,180);
    m_wndStatusBar.SetPaneWidth(c,180);
    //设置背景颜色
    //m_wndStatusBar.SetPaneBackgroundColor(vecIndex,RGB(255,255,255));
    //m_wndStatusBar.SetPaneBackgroundColor(posIndex,RGB(255,255,255));
    //m_wndStatusBar.SetPaneBackgroundColor(valIndex,RGB(0,32,64));
    //设置文本颜色
    m_wndStatusBar.SetPaneTextColor(a, RGB(0, 0, 0));
    m_wndStatusBar.SetPaneTextColor(b, RGB(0, 0, 0));
    m_wndStatusBar.SetPaneTextColor(c, RGB(0, 0, 0));
    //开定时器,实时显示时间
    SetTimer(1,1000,NULL);

4.在OnTimer里面改变面板上日期的部分

void CMainFrame::OnTimer(UINT_PTR nIDEvent)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    //填充测量时间
    COleDateTime Now;
    Now=COleDateTime::GetCurrentTime();
    WORD y,m,d,h,i,s;
    CString str;
    y=Now.GetYear();
    m=Now.GetMonth();
    d=Now.GetDay();
    h=Now.GetHour();
    i=Now.GetMinute();
    s=Now.GetSecond();
    str.Format("%d年%d月%d日%d:%d:%d",y,m,d,h,i,s);
        m_wndStatusBar.SetPaneText(0,str);
    CMDIFrameWndEx::OnTimer(nIDEvent);
}

至此,关于状态栏的大多数功能都实现了。

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
孙鑫VC++ 20集全

孙鑫VC++ 20集全 http://photoimg2.qq.com/cgi-bin/load_pic?verify=AMt%2BXsKTJH32IQLVCM17wg%3D%3D.jpg VC教学光盘特色   本套光盘由孙鑫老师亲自授课录制。内容涵盖面广,从入门到精通,...

Amamatthew
2014/06/19
2
0
孙鑫C++教学视频

视频百度云:https://pan.baidu.com/s/1jKf6GoY 在线观看:http://list.youku.com/albumlist/show?id=3567028&ascending=0&page=1 内容介绍: 教程1:Windows程序运行原理及程序编写流程,窗...

osc_iiheq33y
2018/01/15
2
0
DrawCli一个简单的绘图软件

Drawcli是VS2010中的一个示例程序,能够进行简单的绘图操作,例如线、矩形、圆角矩形、多边形等,位于VS安装目录"Microsoft Visual Studio 10.0Samples2052VC2010SamplesC++MFColedrawcli"下...

一个小妞
2018/11/06
298
0
彩屏显示入门(二):颜色设置与文本显示 | ESP32学习之旅-Arduino版

本系列历史文章目录: ESP32 概述与 Arduino 软件准备 ESP32 GPIO接口编程入门 蓝牙翻页笔(PPT 控制器) 新冠肺炎疫情数据实时显示器 B 站粉丝计数器 Siri 语音识别控制 LED 灯 Siri 语音识...

铁熊
06/22
2
0
孙鑫C++视频教程 rmvb格式 全20CD完整版 精品分享

http://club.topsage.com/thread-156290-1-1.html 孙鑫C++视频教程 rmvb格式 全20CD完整版 精品分享 [复制链接] 3Cccc 38主题 473帖子 1348金币 大家网大学二年级 积分 1004 发消息 电梯直达...

osc_bskh1wlw
2019/03/08
1
0

没有更多内容

加载失败,请刷新页面

加载更多

asp.net core之NLog

NuGet添加 NLog.Web.AspNetCore。 <PackageReference Include="Microsoft.AspNetCore.App" /> 添加配置文件 新建一个文件nlog.config(建议全部小写,linux系统中要注意), 并右键点击其属性......

一介草民Coder
44分钟前
23
0
.NET中的struct和class有什么区别? - What's the difference between struct and class in .NET?

问题: .NET中的struct和class有什么区别? 解决方案: 参考一: https://stackoom.com/question/3OT/NET中的struct和class有什么区别 参考二: https://oldbug.net/q/3OT/What-s-the-differ...

富含淀粉
今天
23
0
android:layout_weight是什么意思? - What does android:layout_weight mean?

问题: I don't understand how to use this attribute. 我不明白如何使用这个属性。 Can anyone tell me more about it? 谁能告诉我更多关于它的事情? 解决方案: 参考一: https://stacko...

javail
今天
17
0
CSS背景不透明度[重复] - CSS Background Opacity [duplicate]

问题: This question already has an answer here: 这个问题已经在这里有了答案: How do I give text or an image a transparent background using CSS? 如何使用CSS为文本或图像提供透明背...

fyin1314
今天
31
0
node http 获取gb2312网页如何转为utf8

最初,我想当然认为是下述做法,但被证明是错误的 const http = require('http'), iconv = require('iconv-lite');const url = 'http://xxx';http.get(url, function(res) { var bo......

高延
今天
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部