为什么右下角的弹出菜单不消失?关于托盘

joywing 2001-12-31 11:59:33
我写的程序,最小化后在右下角,单击右键有弹出菜单
但是当我点击程序主窗口另外的地方,例如桌面,弹出菜单不消失
除非点击程序主窗口才右下角的弹出菜单才会消失,很怪异,为什么?

添加托盘图标的代码如下:
int CGkDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
//任务栏图标数据结构初始化
// TODO: Add your specialized creation code here
m_tnid.cbSize=sizeof(NOTIFYICONDATA);
m_tnid.hWnd=this->m_hWnd;
if(this->m_hWnd != NULL)
m_tnid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
m_tnid.uCallbackMessage=MYWM_NOTIFYICON;
//用户定义的回调消息
CString szToolTip;
szToolTip=_T("IP电话网守");
_tcscpy(m_tnid.szTip, szToolTip);
m_tnid.uID=ID_SYSTRAY;
HICON hIcon;
hIcon=AfxGetApp()->LoadIcon(IDI_ICONGK);
m_tnid.hIcon=hIcon;
::Shell_NotifyIcon(NIM_ADD,&m_tnid);
if(hIcon)
::DestroyIcon(hIcon);

return 0;
}

处理右键单击,左键双击和点击主窗口最小化的函数如下:

LRESULT CGkDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
switch(message)
{
case MYWM_NOTIFYICON:
//如果是用户定义的消息
if(lParam==WM_LBUTTONDBLCLK)
{ //鼠标双击时主窗口出现
AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOW);
}
else if(lParam==WM_RBUTTONDOWN){
//鼠标右键单击弹出菜单
CMenu menu;
menu.LoadMenu(IDR_POP_MENU);
//载入事先定义的右键弹出菜单
CMenu* pMenu=menu.GetSubMenu(0);

CPoint pos;
GetCursorPos(&pos);
pMenu->TrackPopupMenu
(TPM_LEFTALIGN|TPM_RIGHTBUTTON,
pos.x,pos.y,AfxGetMainWnd());
}

break;
case WM_SYSCOMMAND:
//如果是系统消息
if(wParam==SC_MINIMIZE){
//接收到最小化消息时主窗口隐藏
AfxGetApp()->m_pMainWnd->ShowWindow(SW_HIDE);
return 0;
}
break;
}
return CDialog::WindowProc(message, wParam, lParam);
}
...全文
263 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
joywing 2001-12-31
  • 打赏
  • 举报
回复
怎么才能让帖子比较朝上哪
donaldking 2001-12-31
  • 打赏
  • 举报
回复
在你使用TrackPopupMenu的前面加上一句SetForegroundWindow,把你程序的主窗口设为当前窗口就可以了。
hzp 2001-12-31
  • 打赏
  • 举报
回复
是 WM_NULL.
hzp 2001-12-31
  • 打赏
  • 举报
回复
在你的TrackPopupMenu后再加一句,向主窗口发送空消息,试试。
pMenu->TrackPopupMenu(TPM_LEFTALIGN¦TPM_RIGHTBUTTON,
pos.x,pos.y,AfxGetMainWnd());

SendMessage(AfxGetMainWnd()->GetSafeHwnd(),NULL,0,0);

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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