现在的位置: 首页 > 综合 > 正文

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

2013年08月16日 ⁄ 综合 ⁄ 共 845字 ⁄ 字号 评论关闭

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

::SetForegroundWindow(m_nid.hWnd); 

就可以解决这个问题。

void  CXXXDlg::CreateTray() 
{   
	m_nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);   //NOTIFYICONDATA m_nid 托盘成员变量

        m_nid.hWnd= this->m_hWnd;
	m_nid.uID = 128;
	m_nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
	m_nid.uCallbackMessage = WM_SHOWTASK;
	m_nid.hIcon=LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(128));
	Shell_NotifyIcon(NIM_ADD, &m_nid);
}

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

抱歉!评论已关闭.