托盘图标的使用

Shell_NotifyIcon 此API函数用来对托盘图标进行操作。

在相应的相应函数中添加如下代码:

void CLockTestDlg::OnBnClickedButtonHid()
{
    // TODO: Add your control notification handler code here
    NOTIFYICONDATA nid = {0};
    nid.cbSize    = sizeof(nid);
    nid.hWnd    = m_hWnd;
    nid.uID        = 10;
    nid.uFlags    = NIF_ICON | NIF_MESSAGE | NIF_TIP ;
    nid.hIcon    = AfxGetApp()->LoadIcon(IDI_ICON_TEST);
    nid.uCallbackMessage = UM_NOTIFI;
    _tcscpy(nid.szTip, _T("测试"));
    Shell_NotifyIcon(NIM_ADD, &nid);
    ShowWindow(SW_HIDE);
}

在默认的消息处理函数中添加:

LRESULT CLockTestDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
    // TODO: Add your specialized code here and/or call the base class
    if (UM_NOTIFI == message)
    {
        if (WM_LBUTTONDBLCLK == lParam)
        {
            ShowWindow(SW_SHOW);
        }

        if (WM_RBUTTONUP == lParam)
        {
            
        }
    }
    return CDialog::DefWindowProc(message, wParam, lParam);
}

为了能够在进程结束后,图标正常消失,应添加如下代码:

void CLockTestDlg::OnClose()
{
    // TODO: Add your message handler code here and/or call default
    NOTIFYICONDATA nid = {0};
    nid.cbSize    = sizeof(nid);
    nid.hWnd    = m_hWnd;
    nid.uID        = 10;

    Shell_NotifyIcon(NIM_DELETE, &nid);
    CDialog::OnClose();
}

 

为了使用其他程序的图标可以在VS菜单中选择,文件,文件|打开|文件选择相应的EXE文件后,将图标导出即可。

posted @ 2013-09-22 12:32  鬞鬤  阅读(174)  评论(0)    收藏  举报