IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> MFC状态栏显示消息 -> 正文阅读

[C++知识库]MFC状态栏显示消息

状态栏的消息显示,MSDN里面有三种方式

?

There are three ways to update the text in a status-bar pane:

  1. CallCWnd::SetWindowText to update the text in pane 0 only.
  2. CallCCmdUI::SetTextin the status bar’s ON_UPDATE_COMMAND_UI handler.
  3. Call SetPaneText to update the text for any pane.
  • 用***UPDATE_COMMAND_UI*** 与***SetText***在状态栏插入消息,显示时间消息
class CMainFrame : public CFrameWnd
{
public:
	CMainFrame() noexcept;
protected: 
	DECLARE_DYNAMIC(CMainFrame)
// 重写
public:
	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
	virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
// 实现
public:
	virtual ~CMainFrame();
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif
protected:  // 控件条嵌入成员
	CToolBar          m_wndToolBar;
	CStatusBar        m_wndStatusBar;//状态栏对象
	CChildView		  m_wndView;
// 生成的消息映射函数
    ···
}

因为状态栏对象m_wndStatusBar是包含在CMainFrame类中,所以要修改状态栏消息需要在CMainFrame类中添加OnUpdateViewStatusBar消息

afx_msg void OnUpdateViewStatusBar(CCmdUI* pCmdUI);

?

  • 步骤1 鼠标右键单机CMainFrame

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dvUiCWH3-1643294965129)(https://raw.githubusercontent.com/konalo-x/pic/master/pic/202201272204100.png)]

?

  • 步骤2 ID_VIEW_STATUS_BAR 下面选择UPDATE_COMMAND_UI生成OnUpdateViewStatusBar函数,同时vs2022会自动将之加入消息映射

属性-事件

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	ON_WM_CREATE()
	ON_WM_SETFOCUS()
	ON_UPDATE_COMMAND_UI(ID_INDICATOR_STR, &CMainFrame::OnUpdateViewStatusBar)//vs2022 自动添加代码
	//ON_UPDATE_COMMAND_UI(ID_INDICATOR_TIME, &CMainFrame::OnUpdateTimeStatusBar)
	ON_WM_TIMER()
	ON_WM_CLOSE()
	ON_COMMAND(ID_FORMAT_FONT, &CMainFrame::OnFormatFont)
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,           // 状态行指示器
	ID_INDICATOR_CAPS,
	ID_INDICATOR_NUM,
	ID_INDICATOR_SCRL,
	ID_INDICATOR_TIME,		//用来显示时间的ID标识
	ID_INDICATOR_STR		//用来显示 行和列 的ID标识
};

? 补充代码如下

void CMainFrame::OnUpdateViewStatusBar(CCmdUI* pCmdUI)
{
	// TODO: 在此添加命令更新用户界面处理程序代码
	CString string;
    //获取CEdit里面文本的行和列,仿照记事本
	string.Format(_T("行 %d 列 %d"), m_wndView.m_wndEdit.GetLineCount(), m_wndView.m_wndEdit.LineLength());
	pCmdUI->SetText(string);
}

? 前面MESSAGEMAP里面写明了 ID_INDICATOR_STR 对应OnUpdateViewStatusBar

ON_UPDATE_COMMAND_UI(ID_INDICATOR_STR, &CMainFrame::OnUpdateViewStatusBar)

在这里插入图片描述

  • SetPaneText 显示时间

    • OnCreate里面设置定时器
    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    	SetTimer(1, 1000, NULL);//在里面安装定时器,并将其时间间隔设为1000毫秒  
    	...    
    }
    
    • OnTimer里面设置显示时间
    void CMainFrame::OnTimer(UINT_PTR nIDEvent)
    {
    	// TODO: 在此添加消息处理程序代码和/或调用默认值
    	CTime time;
    	time = CTime::GetCurrentTime();//得到当前时间
    	CString s_time = time.Format("%H:%M:%S");//转换时间格式
    	m_wndStatusBar.SetPaneText(4, s_time);// 4 代表 第四个数组元素 ID_INDICATOR_TIME
    	CFrameWnd::OnTimer(nIDEvent);
    }
    
    
    • OnClose里面关闭计时器
     void CMainFrame::OnClose()
     {
     	// TODO: 在此添加消息处理程序代码和/或调用默认值
     	KillTimer(1);
     	CFrameWnd::OnClose();
     }
    
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-28 11:42:41  更:2022-01-28 11:43:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:48:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码