大侠求救!!同一个菜单,为什么在系统托盘时候可以响应但是在对话框上面弹出没有响应呢?

quarkfc 2005-09-14 10:33:59
我用了一个菜单,在系统托盘上面点击,消息响应正确,然后当点击对话框上面得一个按钮,弹出该菜单,结果菜单响应函数没有执行,根本就没有消息发送出来为什么呢?
我的对话框弹出菜单如下所示:
DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
CMenu menu ;
CPoint pt ;
CMenu* pSubMenu;
if( message == WM_COMMAND ){
if( m_FindButton.GetSafeHwnd() == (HWND)lParam ){
WORD wID = LOWORD( wParam) ;
WORD wMsg = HIWORD( wParam ) ;
switch( wMsg )
{
case BN_CLICKED :
SetFocus() ;
GetCursorPos( &pt );
menu.LoadMenu( IDR_SYSTRAY_RB ) ;
pSubMenu = menu.GetSubMenu( 0 ) ;
pSubMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON | TPM_NONOTIFY | TPM_RETURNCMD,//TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_VERTICAL,
pt.x, pt.y, this );
menu.DestroyMenu();;
break ;
default :
break ;
}

}
}
...全文
89 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodboyws 2005-09-15
  • 打赏
  • 举报
回复
你的右键菜单指定的窗口不对,不要用this,应该用父窗口的指针,因为你消息是在父窗口响应的
改为

dwRetValue=pSubMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON | TPM_NONOTIFY | TPM_RETURNCMD,//TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_VERTICAL,
pt.x, pt.y, CWnd::FromHandle(m_hParent));

alen_ghl 2005-09-15
  • 打赏
  • 举报
回复
既然自己解决了,恭喜!
那我们只有接分咯~
快乐鹦鹉 2005-09-15
  • 打赏
  • 举报
回复
^-^。恭喜!
quarkfc 2005-09-14
  • 打赏
  • 举报
回复
自己解决了!
后面加上:
dwRetValue=pSubMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON | TPM_NONOTIFY | TPM_RETURNCMD,//TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_VERTICAL,
pt.x, pt.y, this );
if (dwRetValue)
::PostMessage(m_hParent, WM_COMMAND, MAKEWPARAM(dwRetValue, 0), (LPARAM)NULL);
quarkfc 2005-09-14
  • 打赏
  • 举报
回复
明明该菜单在系统托盘弹出时候有响应,但是在对话框上面弹出就没有响应,为什么呢?

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧