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

简介: VC 制作系统托盘程序实现将窗口最小化到系统托盘2008年01月11日 星期五 10:24前段时间因为要用到系统拖盘,所以研究了一下,在这里记录一下,免得以后忘了 ^_^先在类中定义...
VC 制作系统托盘程序实现将窗口最小化到系统托盘
2008年01月11日 星期五 10:24

前段时间因为要用到系统拖盘,所以研究了一下,在这里记录一下,免得以后忘了 ^_^
先在类中定义一个结构变量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);来更改。

目录
相关文章
|
关系型数据库 MySQL 数据库
MySQL的delete误操作的快速恢复方法
如果我们在数据库中不小心执行了类似“delete from t1”这样的不带where条件的语句,那么整张表的数据就全被删除了,如何在最短的时间恢复被删除的数据就显得十分关键。下面来演示如何通过binlog来快速恢复表数据。
15880 0
MySQL的delete误操作的快速恢复方法
|
Linux API 开发工具
[开源]基于ffmpeg和libvlc的视频剪辑、播放器
[开源]基于ffmpeg和libvlc的视频剪辑、播放器
331 0
|
开发工具 C++ 开发者
Qt Quick Image探秘:从底层原理到高级应用(一)
Qt Quick Image探秘:从底层原理到高级应用
451 0
|
消息中间件 算法 开发者
【Qt面试题】多线程情况下, Qt中的信号槽分别在什么线程中执行, 如何控制?
【Qt面试题】多线程情况下, Qt中的信号槽分别在什么线程中执行, 如何控制?
1050 1
|
编译器 C语言 计算机视觉
Qt+OpenCV配置教程(图解亲测)
Qt+OpenCV配置教程(图解亲测)
2626 0
Qt+OpenCV配置教程(图解亲测)
|
存储 网络协议 安全
编程入门(四)【计算机网络基础(由一根网线连接两个电脑开始)】
编程入门(四)【计算机网络基础(由一根网线连接两个电脑开始)】
193 1
《QT从基础到进阶·十五》用鼠标绘制矩形(QGraphicsView、QPainter、QGraphicsRectItem)
《QT从基础到进阶·十五》用鼠标绘制矩形(QGraphicsView、QPainter、QGraphicsRectItem)
1026 0
[✔️]Qt注册快捷键
[✔️]Qt注册快捷键
352 0
|
NoSQL 网络协议 程序员
7年资深后端带你读懂Redis源码,共总结了这7点心得
7年资深后端带你读懂Redis源码,共总结了这7点心得
71376 2
7年资深后端带你读懂Redis源码,共总结了这7点心得
QT软件开发: 点击鼠标在窗口里绘制矩形(窗口透明背景)
QT软件开发: 点击鼠标在窗口里绘制矩形(窗口透明背景)
624 0
QT软件开发: 点击鼠标在窗口里绘制矩形(窗口透明背景)