在MFC多文档的状态栏中添加按钮

前言:

        最近做一个项目需要在状态栏中添加按钮,但是找遍全网也很难找到有用的信息,因此写下这篇文章,希望能对需要的朋友有帮助

内容:

首先,在CMainFrame头文件中添加:

CMFCButton        m_wndButton;		//状态栏按钮

其次在资源视图中String Table中添加按钮的ID(自己定义)

 然后在CMainFrame源文件的OnCreate函数中添加代码:

if (!m_wndStatusBar.Create(this))
	{
		TRACE0("未能创建状态栏\n");
		return -1;      // 未能创建
	}
m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));
	
ModifyStyle(0, WS_THICKFRAME);
CRect rc;
//其中ID_STATUS是按钮的ID
VERIFY(m_wndButton.Create("按钮", WS_VISIBLE | BS_FLAT, rc, this, ID_STATUS));
//如下代码改变按钮的字体大小和字体类型,可加可不加
CFont font;
font.CreatePointFont(90, "宋体");
m_wndButton.SetFont(&font, true);

在CMainFrame中重写函数

void CMainFrame::RecalcLayout(BOOL bNotify)
{
	// TODO: 在此添加专用代码和/或调用基类

	CMDIFrameWndEx::RecalcLayout(bNotify);
	CRect rc;
	if (m_wndStatusBar.m_hWnd)
	{
		m_wndStatusBar.GetWindowRect(&rc);
		ScreenToClient(&rc);
		rc.right -= 50;
		m_wndStatusBar.SetWindowPos(NULL, rc.left, rc.top, rc.Width(), rc.Height(),SWP_NOZORDER);
		// 状态栏上按钮的位置大小
		rc.left = rc.right;
		rc.right += 50;
		m_wndButton.SetWindowPos(NULL, rc.left, rc.top, rc.Width(), rc.Height(),SWP_NOZORDER);

	}
}

最终成果:

要使按钮点击启作用,就要为按钮的ID绑定消息事件

在XXApp函数中写如下代码:

//在XXXApp.h文件中写
afx_msg void OnStatus();


//在XXXApp.cpp文件中写
BEGIN_MESSAGE_MAP(XXXApp, CWinAppEx)
	...
    ...
	ON_COMMAND(ID_STATUS, &XXXApp::OnStatus)
END_MESSAGE_MAP()


void XXXApp::OnStatus()
{
	//写你要进行的操作
    //或者弹出一个对话框也行
    MessageBox(NULL, _T("状态栏窗口被点击了!"), _T("Message"), MB_OK);		//弹出对话框
}

 效果图:

结语 :

好了,我的文章到此结束了,希望能够帮助到你们!第一次写文章,希望大家能给个赞赞!

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值