我做的是一个基于对话框的应用程序,对话框属性中添加了菜单和状态条,为了使菜单的Prompt(即菜单的提示信息)在状态条上显示,我手工加了处理WM_MENUSELECT消息的函数
void CSalaryDlg::OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu)
{// 处理菜单项的Prompt
CDialog::OnMenuSelect(nItemID, nFlags, hSysMenu);
if (nItemID != 0) // 可能为0(seperator时)
{
CString strStatusText;
strStatusText.LoadString( nItemID );
if (!strStatusText.IsEmpty())
m_wndStatusBar.SetPaneText(0, strStatusText);//0为状态条的第一个,即显示菜单的提示信息
}
}
上面的没有错误,但当鼠标放在菜单选项时,在状态栏却没有显示提示信息,不知道为什么,请各为高手多多指教,谢谢!!
void CSalaryDlg::OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu)
{// 处理菜单项的Prompt
CDialog::OnMenuSelect(nItemID, nFlags, hSysMenu);
if (nItemID != 0) // 可能为0(seperator时)
{
CString strStatusText;
strStatusText.LoadString( nItemID );
if (!strStatusText.IsEmpty())
m_wndStatusBar.SetPaneText(0, strStatusText);//0为状态条的第一个,即显示菜单的提示信息
}
}
上面的没有错误,但当鼠标放在菜单选项时,在状态栏却没有显示提示信息,不知道为什么,请各为高手多多指教,谢谢!!
解决方案 »
- 将中文字符写入剪切板,出现乱码现象?
- dwRemoteProcess == (DWORD)-1中DWORD不就是个类型吗,在这里是什么意思啊
- 用SDK寫的DLL,在VB中調用時出現"Can not find Entry point" 的問題.
- 在ATL 的接口方法的参数,我想传递BYTE数组,该用什么类型呢?
- 最小化
- 你愿意吗?
- win32服务能干什么。
- 可以用MFC做出如WIN7自带的那种日历 时钟么?
- 关于自画位图的编程,也就是说 我在开发程序里随便来编辑自己的图形,满足用户的美的渴望,那有材料
- 入错了行,我该怎么办?
- 多播程序里的多播地址是不是必须有个支持多播的机器设为那个地址???
- 我的msdn(2003.net)老是崩溃,怎么办?
并且设置
pCmdUI->Enable(TRUE);
LRESULT CALLBACK WindowProc(
HWND hwnd, // handle to window
UINT uMsg, // WM_MENUSELECT
WPARAM wParam, // menu item (UINT) and flags (UINT) /lower
LPARAM lParam // handle to menu (HMENU)
);(UINT) LOWORD(wParam)为nItemID;
(UINT) HIWORD(wParam)为nFlag;
(HMENU)lParam为hSysMenu
在.h中直声明了void CSalaryDlg::OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu)而已;
to kongyunzhongque(云雀) :
请问一下LRESULT CALLBACK WindowProc()应该放在什么位置呢?我是菜鸟
你是在类向导里面添加的这个函数么?
如果不是的话,请确保下文中的第二行存在指定的位置。
//{{AFX_MSG_MAP(CSalaryDlg)
ON_WM_MENUSELECT()
//}}AFX_MSG_MAP