• 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;  
    }


  • 相关阅读:
    logback配置和使用
    安装多个jdk导致eclipse打不开问题
    Spring事务管理
    使用JavaConfig配置SpringMVC
    Spring pom.xml配置
    Maven私服搭建(Nexus Repository Manager 3)
    Maven多环境配置
    Maven多模块构建实例
    Maven依赖机制
    Maven安装与配置
  • 原文地址:https://www.cnblogs.com/yuzhould/p/4454263.html
Copyright © 2020-2023  润新知