当前位置: 首页 > 编程笔记 >

MFC对话框中添加状态栏的方法

漆雕昊天
2023-03-14
本文向大家介绍MFC对话框中添加状态栏的方法,包括了MFC对话框中添加状态栏的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了MFC对话框中添加状态栏的方法。分享给大家供大家参考。具体如下:

1.在对话框的dlg实现类里添加成员变量:

CXTPStatusBar m_wndStatusBar; 
//状态栏(或者是CStatusBar)
//在OnInitDialog方法中初始化:
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
//添加状态栏
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}

2.添加OnKickIdle事件(在对话框的dlg的头文件加上) :

afx_msg LRESULT OnKickIdle(WPARAM, LPARAM);
afx_msg void OnUpdateKeyIndicator(CCmdUI* pCmdUI);
DECLARE_MESSAGE_MAP()

3.在实现类中添加对应的两个方法:

LRESULT CDialogPanesDlg::OnKickIdle(WPARAM, LPARAM)
{
m_wndStatusBar.SendMessage(WM_IDLEUPDATECMDUI, TRUE);
return 0;
}
void CDialogPanesDlg::OnUpdateKeyIndicator(CCmdUI* pCmdUI)
{
UINT nVK;
UINT flag = 0×0001;
switch (pCmdUI->m_nID)
{
case ID_INDICATOR_CAPS:
nVK = VK_CAPITAL;
break;
case ID_INDICATOR_NUM:
nVK = VK_NUMLOCK;
break;
case ID_INDICATOR_SCRL:
nVK = VK_SCROLL;
break;
default:
TRACE1("Warning: OnUpdateKeyIndicator – unknown indicator 0x%04X.\n",
pCmdUI->m_nID);
pCmdUI->ContinueRouting();
return; // not for us
}
pCmdUI->Enable(::GetKeyState(nVK) & flag);
// enable static text based on toggled key state
ASSERT(pCmdUI->m_bEnableChanged);
}

4.运行发现看不见状态栏,添加对话框的WM_SIZE事件:

void CDialogPanesDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
CRect rcClient(0, 0, cx, cy);
RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, 0, 0, &rcClient);
RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, reposQuery, &rcClient, &rcClient);
}

希望本文所述对大家的MFC程序设计有所帮助。

 类似资料:
  • 我有一个基于MFC对话框的应用程序。用户可以更改对话框的语言,我通过关闭现有对话框并使用更改的语言打开另一个对话框来做到这一点。问题是任务栏中的效果是删除了一个图标,并在其位置创建了另一个相同的图标。如果我的应用程序的图标不是任务栏中的最后一个图标,它将被视为移动到任务栏图标集的末尾。 我想保留图标在任务栏中的位置,而不是防止图标闪烁。我该怎么做? 应用程序必须支持从Windows XP到Wind

  • 本文向大家介绍MFC设置对话框焦点的方法简述,包括了MFC设置对话框焦点的方法简述的使用技巧和注意事项,需要的朋友参考一下 本文简单讲述了MFC设置对话框焦点的方法,分享给大家供大家参考。具体实现方法如下: 具体的方法有两种: 1. 设置对话框控件的tab order。 按Ctrl+D即可看见。将需要被设置到焦点的空间的tab order设为1. 2. 对话框的OnInitDialog返回FALS

  • 上一章我们为 Scribble 新增了一个【Pen】选单,其中第二个命令项【Pen Width...】准备用来提供一个对话框,让使用者设定笔的宽度。每一线条都可以拥有自己的笔宽。原预设粗笔是5个图素宽,细笔是2个图素宽。 为了这样的目的,在对话框中放个 Spin 控制组件是极佳的选择。Spin 就是那种有着上下小三角形箭头、可搭配一个文字显示器的控制组件,有点像转轮,用来选择数字最合适: 但是,S

  • 本文向大家介绍MFC对话框自定义消息映射的方法,包括了MFC对话框自定义消息映射的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了MFC对话框自定义消息映射的方法。分享给大家供大家参考。具体实现方法如下: 1、定义消息: 2、定义消息响应函数: 3、在窗口类头文件的AFX_MSG中声明消息响应函数: 4、在窗口类实现文件的MESSAGE_MAP中声明消息映射,这里需要用到ON_MESS

  • 本文向大家介绍MFC扩展DLL中导出类和对话框的实现方法,包括了MFC扩展DLL中导出类和对话框的实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了MFC扩展DLL中导出类和对话框的实现方法,分享给大家供大家参考。具体实现方法如下: 一般来说,如果要编写模块化的软件,就要对对动态链接库(DLL)有一定的了解,本人这段时间在修改以前的软件时,决定把重复用的类和对话框做到DLL中,下面就

  • 模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)的概念不是 Qt 所 独有的,在各种不同的平台下都存在。又有叫法是称为模式对话框,无模式对话框等。 所谓模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进 行交互,直到该对话框关闭。对于非模 态对话框,当被打开时,用户既可选择和该对话框进 行交互,也可以选择同应用程序的其他窗口交互。 在 Qt