VC 创建托盘,托盘tooltip。右键托盘菜单,点击别的地方会隐藏掉的问题。

托盘上的菜单右键弹出后,然后再别的地方,比如桌面,菜单无法隐藏掉,一直在托盘上,除非操作下菜单才能隐藏掉,只需要加上一句话

::SetForegroundWindow(m_nid.hWnd); 

就可以解决这个问题。


下面是托盘创建

class CXXXDlg
{

private:
NOTIFYICONDATA     m_trayid;        //作为托盘ID
};

//创建托盘
void CXXXDlg::CreateTray(HICON icon)
{
	m_trayid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);
	m_trayid.hWnd = this->m_hWnd;
	m_trayid.uID = 128;
	m_trayid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
	m_trayid.uCallbackMessage = UM_SHOW_THIRDBIND;
	m_trayid.hIcon = icon;

	wcscpy_s(m_trayid.szTip, _T("我是托盘"));
	Shell_NotifyIcon(NIM_ADD, &m_trayid);
}
//显示托盘tooltip
void CXXXDlg::ShowTrayTooltip()
{
    m_trayid.cbSize=sizeof(NOTIFYICONDATA);
    m_trayid.uFlags = NIF_INFO;
    m_trayid.uVersion = NOTIFYICON_VERSION;
    m_trayid.uTimeout = 5000;
    m_trayid.dwInfoFlags = NIIF_INFO;
    wcscpy_s(m_trayid.szInfoTitle, L"提示" );                  //气泡标题
    wcscpy_s(m_trayid.szInfo, L"我是托盘tooltip");             //气泡内容
    Shell_NotifyIcon( NIM_MODIFY, &m_trayid);
}

LRESULT   CXXXDlg::onShowTask(WPARAM    wParam,LPARAM    lParam)   //托盘响应消息     
{     
    if(wParam !=128)      
        return    1; 

    switch(lParam)       
    { 
    case    WM_RBUTTONUP:      
        {   

            ::SetForegroundWindow(m_nid.hWnd);                    //点击别的地方,托盘隐藏
            LPPOINT    lpoint=new    tagPOINT;     
            ::GetCursorPos(lpoint); 
            m_menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON, lpoint->x, lpoint->y, this); 
            delete   lpoint;
            break;
        }      
    case   WM_LBUTTONDBLCLK:   
        {     
            this->ShowWindow(SW_SHOW);
            SetForegroundWindow();
        }   
        break;     
    } 
    return    0;  
}


转载于:https://www.cnblogs.com/yuzhould/archive/2013/04/26/4454263.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值