zoukankan      html  css  js  c++  java
  • VC 制作系统托盘程序实现将窗口最小化到系统托

    转自:http://blog.csdn.net/jax_lee/article/details/6764300

    VC 制作系统托盘程序实现将窗口最小化到系统托盘
     

    前段时间因为要用到系统拖盘,所以研究了一下,在这里记录一下,免得以后忘了 ^_^
    先在类中定义一个结构变量NOTIFYICONDATA pnid;然后在OnInitDialog进行初始化
        pnid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);//该结构体大小
        pnid.hWnd=m_hWnd;    //窗口句柄
        pnid.uID=(UINT)m_hIcon;      //图标句柄
        pnid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ; //图标有效|自定义消息有效|鼠标指向显示文字有效

        pnid.uCallbackMessage=WM_MYMESSAGE;//自定义的消息名称
        pnid.hIcon=m_hIcon;         //图标句柄
        strcpy(pnid.szTip,"这是一个测试");//鼠标指向所显示的文字
    实现最小化到系统拖盘,这定义一个窗口的OnSize事件
    void CMyDlg::OnSize(UINT nType, int cx, int cy)
    {
    CDialog::OnSize(nType, cx, cy);
    // TODO: 在此处添加消息处理程序代码
    if (nType==SIZE_MINIMIZED)//如果事件为最小化
        {
             Shell_NotifyIcon(NIM_ADD,&pnid);//在托盘区添加图标
             ShowWindow(SW_HIDE);//隐藏主窗口 
        }
    }


    还原功能则先在CMyDlg.h做下列操作:
    #define WM_MYMESSAGE WM_USER+101 //定义自定义消息,加的这个值一般都要大于100
    afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam); //在类中定义消息响应函数

    然后就在CMyDlg.app中定义消息映射,函数实现了。


    BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
    END_MESSAGE_MAP() 之间查入消息映射
    ON_MESSAGE(WM_MYMESSAGE,OnMyMessage)
    然后建立OnMyMessage函数。
    LRESULT CMyDlg::OnMyMessage(WPARAM wParam, LPARAM lParam){
        if( lParam == WM_LBUTTONDOWN )//如果在图标中单击左键则还原
        {             
              Shell_NotifyIcon(NIM_DELETE,&pnid);//删除托盘图标
              ShowWindow(SW_SHOWNORMAL);//显示主窗口
              this->SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);//使窗口总是在最前面
        }
         return 0;
    }

    如果要更改显示图标则先更改pnid结构里的值,然后使用Shell_NotifyIcon(NIM_MODIFY,&pnid);来更改。


  • 相关阅读:
    349. Intersection of Two Arrays
    346. Moving Average from Data Stream
    345. Reverse Vowels of a String
    344. Reverse String
    342. Power of Four
    POJ2823 Sliding Window
    《STL源码剖析》笔记
    [jobdu]扑克牌顺子
    [jobdu]第一个只出现一次的字符
    [jobdu]包含min函数的栈
  • 原文地址:https://www.cnblogs.com/walccott/p/4957614.html
Copyright © 2011-2022 走看看