关闭最小化任务栏图标

 BOOL Cxxx系统Dlg::OnInitDialog()

{

      CDialogEx::OnInitDialog();

      ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

      ASSERT(IDM_ABOUTBOX < 0xF000);

      CMenu* pSysMenu = GetSystemMenu(FALSE);

      if (pSysMenu != NULL)

      {

           BOOL bNameValid;

           CString strAboutMenu;

           bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);

           ASSERT(bNameValid);

           if (!strAboutMenu.IsEmpty())

           {

                 pSysMenu->AppendMenu(MF_SEPARATOR);

                 pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

           }

      }

      SetIcon(m_hIcon, TRUE);                // 设置大图标

      SetIcon(m_hIcon, FALSE);         // 设置小图标   

      //---------------------------托盘显示---------------------------------//

    m_nid.cbSize  = (DWORD)sizeof(NOTIFYICONDATA);

    m_nid.hWnd    = this->m_hWnd;

    m_nid.uID     = IDR_MAINFRAME;

    m_nid.uFlags  = NIF_ICON | NIF_MESSAGE | NIF_TIP ;

    m_nid.uCallbackMessage = WM_SHOWTASK;             // 自定义的消息名称

    m_nid.hIcon   = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));

    strcpy(m_nid.szTip, "xxxxxx系统");             

    Shell_NotifyIcon(NIM_ADD, &m_nid);                // 在托盘区添加图标

      //--------------------------------------------------------------------//

      return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE

}

#define WM_SHOWTASK (WM_USER+100)

      HICON m_hIcon;

      NOTIFYICONDATA m_nid;////////////托盘变量
      LRESULT OnShowTask(WPARAM wParam,LPARAM lParam);

ON_MESSAGE(WM_SHOWTASK,OnShowTask)


m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

LRESULT Cxxx系统Dlg::OnShowTask(WPARAM wParam, LPARAM lParam)

{

    if(wParam != IDR_MAINFRAME)

        return 1;

    switch(lParam)

    {

    case WM_RBUTTONUP:                   // 右键起来时弹出菜单

        {                   

            LPPOINT lpoint = new tagPOINT;

            ::GetCursorPos(lpoint);   // 得到鼠标位置

            CMenu menu;

            menu.CreatePopupMenu();    // 声明一个弹出式菜单

            menu.AppendMenu(MF_STRING, WM_DESTROY, "退出监控程序");

            menu.TrackPopupMenu(TPM_LEFTALIGN, lpoint->x ,lpoint->y, this);

            HMENU hmenu = menu.Detach();

            menu.DestroyMenu();

            delete lpoint;

        }

        break;

    case WM_LBUTTONDBLCLK:      // 双击左键的处理

        {

                this->ShowWindow(SW_SHOWNORMAL);   // 显示主窗口

        }

        break;

    }

    return 0;

}

 

BOOL C系统Dlg::DestroyWindow()

{

      Shell_NotifyIcon(NIM_DELETE,&m_nid);

      return CDialogEx::DestroyWindow();

}

 

posted @ 2016-11-10 11:12  fyk1Ex  阅读(444)  评论(0)    收藏  举报