zoukankan      html  css  js  c++  java
  • 托盘的实现

    #define WM_TRAYICON_MSG (WM_USER+100)
    public:
        afx_msg void OnBnClickedButTuo();
        BOOL TrayMyIcon(BOOL bAdd=TRUE);
        LRESULT OnTrayCallBackMsg(WPARAM wparam, LPARAM lparam);
    添加消息映射
      ON_MESSAGE(WM_TRAYICON_MSG, OnTrayCallBackMsg)
    //按钮事件,实现托盘
    void CWuMaDlg::OnBnClickedButTuo()
    {
        // TODO:  在此添加控件通知处理程序代码
        TrayMyIcon();
    }
    //托盘实现
    BOOL CWuMaDlg::TrayMyIcon(BOOL bAdd)
    {
        BOOL bRet = FALSE;
        NOTIFYICONDATA tnd;
        tnd.cbSize = sizeof(NOTIFYICONDATA);
        tnd.hWnd = m_hWnd;
        tnd.uID = IDR_MAINFRAME;
        if (bAdd == TRUE) {
            tnd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
            tnd.uCallbackMessage = WM_TRAYICON_MSG;
            tnd.hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME));
            _tcscpy_s(tnd.szTip, sizeof(tnd.szTip), _T("無聊辅助v1.0"));
            ShowWindow(SW_MINIMIZE);
            ShowWindow(SW_HIDE);
            bRet = Shell_NotifyIcon(NIM_ADD, &tnd);
        }
        else{
            ShowWindow(SW_SHOWNA);
            SetForegroundWindow();
            bRet = Shell_NotifyIcon(NIM_DELETE, &tnd);
        }
        return bRet;
    }
    //消息响应
    LRESULT CWuMaDlg::OnTrayCallBackMsg(WPARAM wparam, LPARAM lparam)
    {
        switch (lparam)
        {
        case WM_RBUTTONUP:
        {
                             CMenu mMenu, *pMenu = NULL;
                             CPoint pt;
                             mMenu.LoadMenu(IDR_MENU1);
                             pMenu = mMenu.GetSubMenu(0);
                             GetCursorPos(&pt);
                             SetForegroundWindow();
                             pMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, this);
                             break;
        }
        case WM_LBUTTONDBLCLK:
            ShowWindow(SW_RESTORE);
            SetForegroundWindow();
            TrayMyIcon(FALSE);
            break;
        default:break;
        }
        return NULL;
    }
    //右键显示界面
    void CWuMaDlg::OnMenuShow()
    {
        ShowWindow(SW_RESTORE);
        TrayMyIcon(FALSE);
    }
    
    //退出
    void CWuMaDlg::OnMenuExit()
    {
        TrayMyIcon(FALSE);
        OnCancel();
    }
  • 相关阅读:
    SQL SERVER 导出到Oracle 问题与技巧
    oracle Array类型作为参数传入函数(存储过程) 大字符串参数解决方案
    Oracle 时间处理(加减)
    批处理(命令行)安装数据库
    导致Asp.Net站点重启的10个原因 ,记录重启原因
    关于vs2010 起始页
    SQL Server 导数据 Oracle
    MYSQL正确删除binlog的方法
    yum 安装supervisor
    redis集群配置与管理
  • 原文地址:https://www.cnblogs.com/wumac/p/4502328.html
Copyright © 2011-2022 走看看