在对话框状态栏上显示菜单提示

(1)新建一个基于对话框的MFC应用程序StatusBarMenuTest,删除对话框中原有控件。
(2)在类CStatusBarMenuTestDlg中添加成员变量:

CStatusBar  m_StatusBar;

(3)为对话框添加状态栏,在BOOL CStatusBarMenuTestDlg::OnInitDialog()
中末尾的return TRUE;前添加下列代码:

//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	// TODO: 在此添加额外的初始化代码
	BOOL bRet = m_StatusBar.Create(this);			//创建状态栏
	UINT nIDS[3] = {1001, 1002, 1003};
	bRet = m_StatusBar.SetIndicators(nIDS, 3);		//添加面板

	//设置面板宽度
	m_StatusBar.SetPaneInfo(0, nIDS[0], SBPS_NORMAL  , 150);
	m_StatusBar.SetPaneInfo(1, nIDS[1], SBPS_NORMAL  , 150);
	m_StatusBar.SetPaneInfo(2, nIDS[2], SBPS_NORMAL  , 32565);
	m_StatusBar.SetPaneText(0, _T("中间的格子显示菜单提示"));		//设置面板文本

	//显示状态栏
	RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);

(4)切换到资源视图,新建一个IDR_MENU1,如图所示:
在这里插入图片描述
在新建的菜单栏下输入“文件菜单”等内容。
在这里插入图片描述
(5)打开类的CStatusBarMenuTestDlg属性视图,添加重载函数WindowProc,如图所示:
在这里插入图片描述
然后添加代码如下:

LRESULT CStatusBarMenuTestDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
	// TODO: 在此添加专用代码和/或调用基类
	if (message==WM_MENUSELECT)	
		ShowMenuName(1,LOWORD(wParam));

	return CDialog::WindowProc(message, wParam, lParam);
	//return CDialogEx::WindowProc(message, wParam, lParam);
}

(6)为对话框添加一个成员函数ShowMenuName,该函数的作用是在状态栏上显示菜单名称。

void ShowMenuName(int nPaneIndex,int nCommand);
/*
功能:在状态栏的第nPaneIndex个格子上显示菜单nCommand的文本
参数:
nPaneIndex:状态上的某个各自序号,从0开始
nCommand:菜单ID
*/
void CStatusBarMenuTestDlg::ShowMenuName(int nPaneIndex,int nCommand)
{
	CMenu *pMenu = GetMenu();
	if (pMenu != NULL)
	{
		CString szText;
		pMenu->GetMenuString( nCommand, szText, MF_BYCOMMAND);
		m_StatusBar.SetPaneText(nPaneIndex, szText);
	}	
}

(7)切换到资源视图,打开IDD_STATUSBARMENUTEST_DIALOG对话框,在属性视图中,选择Menu为IDR_MENU1,这是在对话框中添加菜单的方法,如图所示:
在这里插入图片描述
(8)保存并编译运行,运行结果如图所示:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值