最小化托盘

来源:互联网 发布:怎么用mac剪辑视频 编辑:程序博客网 时间:2024/06/05 08:33

第一步:在BOOL CXXDlg::OnInitDialog()中添加

///最小化托盘ShowWindow(SW_HIDE);ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW, 0);

第二步:添加函数 在头文件中添加消息处理函数

#define WM_TASKBAR WM_APP+1000

类中添加函数

LRESULT OnTaskbar(WPARAM wParam, LPARAM lParam);

在.cpp中添加

BEGIN_MESSAGE_MAP(CAutoAddDlg, CDialog)    ON_WM_SYSCOMMAND()    ON_WM_PAINT()    ON_WM_QUERYDRAGICON()    //}}AFX_MSG_MAP    ON_MESSAGE(WM_TASKBAR, OnTaskbar)    ON_WM_DESTROY()END_MESSAGE_MAP()

第三步:添加函数实现

BOOL CAutoAddDlg::AddIcon(){    HICON hIcon=theApp.LoadIcon(IDI_ICON_Time);//图标句柄    CString lpszTip = _T("little chock!");    //给NOTIFYICONDATA结构赋值    NOTIFYICONDATA tnid;    tnid.cbSize = sizeof(NOTIFYICONDATA);    tnid.hWnd = m_hWnd;    tnid.uID = IDI_ICON_Time;    tnid.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;    tnid.uCallbackMessage = WM_TASKBAR;    tnid.hIcon = hIcon;    lstrcpyn(tnid.szTip, lpszTip, sizeof(tnid.szTip));    return Shell_NotifyIcon(NIM_ADD, &tnid);}BOOL CAutoAddDlg::DeleteIcon(){    //提供结构大小,窗口句柄和图标ID    NOTIFYICONDATA tnid;    tnid.cbSize = sizeof(NOTIFYICONDATA);    tnid.hWnd = m_hWnd;    tnid.uID = IDI_ICON_Time;    //用NIM_DELETE删除图标    return Shell_NotifyIcon(NIM_DELETE, &tnid);}///处理托盘事件-鼠标覆盖-鼠标点击(左击-右击)LRESULT CAutoAddDlg::OnTaskbar(WPARAM wParam, LPARAM lParam){    UINT uMouseMsg = (UINT)lParam;    switch (uMouseMsg)    {    case WM_LBUTTONDOWN://鼠标左键消息        ShowWindow(SW_SHOWNORMAL);        break;    case WM_RBUTTONUP: // 鼠标右键消息        break;        //添加其他响应消息    default:        break;    }    return 0;}

第四步:添加释放函数,如果删除图标,则在关闭窗口后托盘图标仍然存在,不过仍然存在一些问题,如果程序非正常关闭,则托盘图标仍然存在,有待后续研究

void CAutoAddDlg::OnDestroy(){    CDialog::OnDestroy();    // TODO: Add your message handler code here    DeleteIcon();}
0 0