我做的是一个基于对话框的应用程序,对话框属性中添加了菜单和状态条,为了使菜单的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为状态条的第一个,即显示菜单的提示信息
}
}
上面的没有错误,但当鼠标放在菜单选项时,在状态栏却没有显示提示信息,不知道为什么,请各为高手多多指教,谢谢!!
并且设置
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