VC++中状态栏操作
来源:互联网 发布:js原生获取表单的值 编辑:程序博客网 时间:2024/05/21 06:16
如何操作状态栏
为在状态栏中显示正确的信息,曾为此绞尽脑汁,在网上查找及在相关书籍上看到一些方法,我归纳出两种方法
1. 状态栏的创建使用应用向导生成如下:
CStatusBar m_wndStatusBar;
;
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create bar!");
return FALSE;
}
用响应消息的方法
要响应的消息有WM_MENUSELECT,WM_SETMESSAGESTRING两个私有消息,
看下面的源代码
第一个消息的响应函数
void CMainFrame::OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSystemMenu)
{
CString sFileName;
if(nItemID == AFX_IDS_IDLEMESSAGE){
sFileName = "就绪";
// Set prompt in status bar.
SendMessage(WM_SETMESSAGESTRING, (WPARAM)0, (LPARAM)(LPCTSTR)sFileName);
return;
}
if(nFlags & MF_SEPARATOR)
return;
if(nFlags & (MF_SYSMENU | MF_POPUP))
return;
sFileName = "菜单提示";
// Set prompt in status bar.
SendMessage(WM_SETMESSAGESTRING, (WPARAM)0, (LPARAM)(LPCTSTR)sFileName);
}
第二个消息响应函数
LRESULT CMainFrame::OnSetMessageString(WPARAM wParam, LPARAM lParam)
{
...
CWnd* pMessageBar = GetMessageBar(); // 获取状态栏窗口指针
if (pMessageBar != NULL)
{
LPCTSTR lpsz = NULL;
CString strMessage;
...
// Set text of status bar
pMessageBar->SetWindowText(lpsz); // 显示状态栏信息
}
...
}
其它地方要在状态栏中显示信息,发送WM_SETMESSAGESTRING消息,将信息字符串作为参数传递即可
例如:在视图窗口中发送消息::SendMessage(AfxGetMainWnd()->m_hWnd, WM_SETMESSAGESTRING, 0, (LPARAM)(LPCTSTR)str);
2. 使用CStatusBar类的成员函数SetPaneText显示指定的消息
创建 CStatusBar m_wndTipsBar变量
创建自己的状态提示栏
if (!m_wndTipsBar.Create(this, WS_CHILD|WS_VISIBLE|CBRS_BOTTOM, ID_SLSTATUS_BAR) ||
!m_wndTipsBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create bar!");
return FALSE;
}
设置第二个小方格的宽度, 自己定义的消息将在此方格中显示
m_wndTipsBar.SetPaneInfo(1, ID_SEPARATOR, SBPS_NORMAL, 400);
第一个小方格显示系统定义的消息
如在上述的WM_SETMESSAGESTRING消息响应函数中有下面的语句
CStatusBar* pBar = &m_wndTipsBar;
GetMessageString(wParam, strMessage);
lpsz = strMessage;
// Set text of status bar
pBar->SetPaneText(0, lpsz);
其它地方要在状态栏中显示信息,用如下语句
CStatusBar* pBar = (CStatusBar*)&pFrame->m_wndTipsBar;
pBar->SetPaneText(1, (LPCTSTR)str1.GetBuffer(256));
- VC++中状态栏操作
- VC++ 对话框中添加状态栏
- VC++之对话框中添加状态栏
- VC++对话框中添加状态栏的方法
- VC++之对话框中添加状态栏
- VC++对话框中添加状态栏的方法
- VC++对话框中添加状态栏的方法
- VC++对话框中添加状态栏的方法
- VC++之对话框中添加状态栏
- VC中取代状态栏默认“就绪”提示
- VC++中添加工具栏和状态栏
- VC++对话框中添加状态栏的方法
- VC 状态栏
- vc中操作WORD
- VC++中操作word
- VC中操作文件
- VC中操作excel
- vc中操作Xml
- 未来几年我国可能取得突破的“技术”领域
- 浅析"新时代"下的病毒隐藏技术
- 转一篇候捷的 Inside C++ Object Model 译本的译序
- 黑客攻破SQL服务器系统的十种方法
- 算法描述中的'Pseudocode Conventions'
- VC++中状态栏操作
- JAVA学习准备篇
- java性能优化-转载
- JAVA程序员面试32问,你能回答多少题?
- 判断用户是否存在
- 我踩中了 MACRO 的 Pitfall
- java中除了静态函数都是虚函数?
- 外企面试官最爱提的问题TOP10
- 动态调用API方法PEB方法