woaidongmao

文章均收录自他人博客,但不喜标题前加-[转贴],因其丑陋,见谅!~
随笔 - 1469, 文章 - 0, 评论 - 661, 引用 - 0
数据加载中……

托盘图标

头文件

protected:
    HICON m_hIcon;
    NOTIFYICONDATA m_tnid;
   afx_msg LRESULT OnTrayMessage(WPARAM wParam, LPARAM lParam);

 

实现文件

ON_COMMAND(IDM_MENU_TRAY_SHOW_WINDOW, OnMenuTrayShowWindow)
ON_COMMAND(IDM_MENU_TRAY_EXIT, OnMenuTrayExit)
ON_MESSAGE(MYWM_NOTIFYICON, OnTrayMessage)

void CHYServerDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
    if (SC_MINIMIZE == nID || SC_CLOSE == nID)
    {
        ShowWindow(SW_HIDE);
        return;
    }
    if (IDM_ABOUTBOX == (nID & 0xFFF0))
    {
        CAboutDlg dlgabout;
        dlgabout.DoModal();
    }
    else
    {
        CDialog::OnSysCommand(nID, lParam);
    }
}

 

LRESULT CHYServerDlg::OnTrayMessage(WPARAM wParam, LPARAM lParam)
{
    if(WM_LBUTTONDBLCLK == lParam)
    {
        //鼠标双击时主窗口出现
        ShowWindow(SW_SHOW);
    }
    else if(WM_RBUTTONDOWN == lParam)
    {
        //鼠标右键单击弹出选单
        CMenu menu;
        menu.LoadMenu(IDR_TRAY_RIGHT_MENU);
        //载入事先定义的选单
        CMenu* pMenu = menu.GetSubMenu(0);
        CPoint pos;
        GetCursorPos(&pos);
        SetForegroundWindow();
        pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, pos.x, pos.y, AfxGetMainWnd());
    }
    return 1;
}

 

void CHYServerDlg::OnMenuTrayShowWindow()
{
    //---- TODO: Add your command handler code here
    ShowWindow(SW_SHOW);
}

void CHYServerDlg::OnMenuTrayExit()
{
    //---- TODO: Add your command handler code here
    CDialog::OnOK();
}

int CHYServerDlg::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;
    m_tnid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
    m_tnid.uCallbackMessage=MYWM_NOTIFYICON;//用户定义的回调消息
    CString szToolTip;
    szToolTip=_T(VERSION_STRING);
    _tcscpy(m_tnid.szTip, szToolTip);
    m_tnid.uID=IDR_MAINFRAME;
    HICON hIcon;
    hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    m_tnid.hIcon=hIcon;
    ::Shell_NotifyIcon(NIM_ADD, &m_tnid);
    if(hIcon)::DestroyIcon(hIcon);
    return 0;
}

void CHYServerDlg::OnDestroy()
{
    CDialog::OnDestroy();
    ::Shell_NotifyIcon(NIM_DELETE, &m_tnid);
    //---- TODO: Add your message handler code here
}

posted on 2008-05-05 12:10 肥仔 阅读(337) 评论(0)  编辑 收藏 引用 所属分类: Windows开发


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理