`

VC对话框最小化到托盘

阅读更多

1.***dlg.h头文件设置:

1)public:

void setTray();//设置托盘
NOTIFYICONDATA nid;//NOTIFYICONDATA结构包含了系统用来处理托盘图标的信息

2)protected:

// Generated message map functions
//{{AFX_MSG(C***Dlg)
afx_msg LRESULT onShowTask(WPARAM wParam,LPARAM lParam);

//}}AFX_MSG

2.***dlg.cpp实现设置:

1) #define WM_SHOWTASK (WM_USER + 1) //设置响应消息

2) BEGIN_MESSAGE_MAP(C***Dlg, CDialog)
//{{AFX_MSG_MAP(C***Dlg)
ON_MESSAGE(WM_SHOWTASK,onShowTask)

//}}AFX_MSG_MAP
END_MESSAGE_MAP()

3)最小化菜单响应

void C***Dlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if(nID==SC_MINIMIZE)
{
setTray();//最小化到托盘
}

}

4)托盘函数

void C***Dlg::setTray()
{
nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd=this->m_hWnd;
nid.uID=IDR_MAINFRAME;
nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP;
nid.uCallbackMessage=WM_SHOWTASK;//自定义的消息名称
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
strcpy(nid.szTip,"ClientTracer"); //信息提示条
Shell_NotifyIcon(NIM_ADD,&nid); //在托盘区添加图标
ShowWindow(SW_HIDE); //隐藏主窗
}

5)消息函数

LRESULT C***Dlg::onShowTask(WPARAM wParam,LPARAM lParam)
{
//wParam接收的是图标的ID,而lParam接收的是鼠标的行为
if(wParam!=IDR_MAINFRAME) return 1;
switch(lParam)
{
case WM_RBUTTONUP://右键起来时弹出快捷菜单,这里只有一个“关闭”
{
LPPOINT lpoint=new tagPOINT;
::GetCursorPos(lpoint);//得到鼠标位置
CMenu menu;
menu.CreatePopupMenu();//声明一个弹出式菜单
//增加菜单项“关闭”,点击则发送消息WM_DESTROY给主窗口,将程序结束。
menu.AppendMenu(MF_STRING,WM_DESTROY,"退出");
//确定弹出式菜单的位置
SetForegroundWindow();//弹出菜单失去焦点后自动消失
menu.TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this);
//资源回收
HMENU hmenu=menu.Detach();
menu.DestroyMenu();
delete lpoint;
}
break;
case WM_LBUTTONDBLCLK://双击左键的处理
{
Shell_NotifyIcon(NIM_DELETE,&nid);//删除托盘图标
ShowWindow(SW_SHOWNORMAL);//显示主窗口
//this->SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);//使窗口总是在最前面
}
break;
}
return 0;
}

6)继承WM_DESTROY:

void C***Dlg::OnDestroy()
{
CDialog::OnDestroy();

// TODO: Add your message handler code here
Shell_NotifyIcon(NIM_DELETE,&nid); //退出程序后删除托盘图标
}

3.说明:代码均是添加到现有MFC框架代码!

分享到:
评论

相关推荐

    VC对话框最小化到系统托盘

    当一个应用的主窗口需要在用户不再直接与之交互时保持活动状态,但又不占据桌面空间时,将对话框最小化到系统托盘区域是一个常见的需求。这个功能允许程序在后台运行,而不会被用户关闭或忘记。下面我们将深入探讨...

    VC实现将对话框最小化到系统托盘

    ### VC实现将对话框最小化到系统托盘 在Windows应用程序开发中,有时我们需要实现将一个对话框或者窗口最小化到系统托盘的功能,这样的设计不仅美化了界面,还为用户提供了更多的操作便利性。本篇文章将详细介绍...

    VC 一步一步教你把对话框最小化到任务栏托盘

    在Windows编程领域,将对话框最小化到任务栏托盘是一项常见的需求,特别是在开发桌面应用程序时。本教程将深入探讨如何使用Visual C++(VC)和MFC(Microsoft Foundation Classes)库来实现这一功能。MFC是微软为...

    MFC窗口最小化到托盘,显示图标

    本文将详细讲解如何利用MFC实现窗口最小化到系统托盘,并在托盘区域显示图标,以及如何处理用户的点击事件。 首先,我们需要在MFC应用程序中创建一个主窗口类,通常是CMyApp或CMainFrame。在这个类中,我们需要重写...

    支持最小化到托盘的VC 音量控制程序.rar

    该压缩包文件“支持最小化到托盘的VC 音量控制程序.rar”是一个基于Microsoft Visual C++(简称VC)开发的音量控制程序。它包含了一套源代码,允许用户进行多媒体技术的实践和学习。这个程序的独特之处在于它支持...

    用VC++写的屏幕截图软件,并可以最小化成托盘图标

    标题 "用VC++写的屏幕截图软件,并可以最小化成托盘图标" 描述了一款使用Microsoft Visual C++(简称VC++)开发的屏幕截图应用程序,它具有将窗口最小化到系统托盘区域的功能。这样的设计使得用户在不使用程序时可以...

    vc全局键盘钩子MFC对话框实现

    本文将深入探讨如何在MFC(Microsoft Foundation Classes)框架下使用C++实现一个全局键盘钩子,并结合对话框、最小化到托盘以及事件记录与统计功能。 首先,我们需要了解什么是全局键盘钩子。全局键盘钩子是...

    以MFC实现弹出确认窗口,以及窗口的最大化、还原和最小化

    这段代码实现了将窗口最小化到任务栏托盘区,并在托盘图标上双击时恢复窗口。 通过上述步骤,你就可以在MFC环境中实现弹出确认窗口以及窗口的各种状态管理。这些基本功能对于构建用户友好的网络软件至关重要,确保...

    vc实现鼠标穿透 最小化托盘 表盘 定时提醒 美化

    这个项目"vc实现鼠标穿透 最小化托盘 表盘 定时提醒 美化"显然是一款集成了多种实用特性的桌面应用程序。接下来,我们将详细探讨这些功能的实现原理和相关知识点。 1. **鼠标穿透(Mouse Transparency)**: 鼠标...

    vc 实现托盘小功能

    在VC++编程环境中,实现托盘小功能主要是为了在用户最小化窗口时,将应用程序隐藏到系统托盘区域,而不是完全关闭或隐藏在任务栏后面。这样,用户可以通过托盘图标快速访问应用,提高用户体验。以下是对实现这一功能...

    托盘程序源码(VC)

    7. **隐藏主窗口**:为了将程序最小化到托盘,开发者需要在程序启动时隐藏主窗口,并在退出时解除最小化,或者在用户与托盘图标交互时切换窗口状态。 8. **事件处理**:托盘程序需要监听如鼠标点击、双击等事件,...

    基于VC的托盘示例程序

    【基于VC的托盘示例程序】是一种使用Microsoft Visual C++(简称VC)开发的桌面应用程序,它展示了如何创建一个最小化到系统托盘区的对话框程序。在Windows操作系统中,托盘区域位于任务栏的右下角,通常包含各种小...

    VC6闹钟托盘程序,调试过

    这个程序设计使得它能够在最小化到任务栏托盘区后继续运行,而不是在用户关闭窗口时完全退出。通过这种方式,它可以在后台持续执行其闹钟功能,当设定的时间到达时提醒用户。 描述中的"托盘最小化,隐藏,托盘菜单...

    VC++实现托盘弹出消息窗口

    1. **系统托盘图标**:这是Windows API的一部分,允许程序在任务栏右下角显示一个图标,即使主窗口被最小化或隐藏。实现这个功能需要用到`Shell_NotifyIcon`函数,它属于shell32库,需要包含`#include <windows.h>`...

    VC 6.0 托盘程序源码

    7. **隐藏主窗口**:为了让程序在任务栏上只显示托盘图标,需要将主窗口最小化到系统托盘,并处理WM_SIZE消息,以便在窗口最小化时将其隐藏。 8. **状态指示**:托盘图标可以用来显示程序的状态,例如通过改变图标...

    VC 制作显示托盘图标的闹铃程序.rar

    一个闹铃程序,VC 制作的可以显示托盘图标的闹钟程序,设定的时间到,会以弹出对话框MessageBox的形式发出警报提醒,将程序图标放入系统托盘,响应在托盘图标上的单击,屏蔽最大化(MFC Bug),将最小化重定向至隐藏...

    VC托盘程序

    根据给定的文件信息,本文将详细介绍如何使用Visual C++(VC)开发环境来创建一个系统托盘程序...这样的程序设计非常适合于那些希望最小化用户界面干扰但又需要持续运行的应用场景,比如系统监控工具或网络管理软件等。

    用VC6.0实现的定时器

    这是一个用VC++实现的基于对话框的MFC程序,含源代码,在VC++6.0下通过编译、连接。用户可在对话框中输入拟定时间...点击最小化按钮可隐藏界面变成托盘中的图标。该程序可用于课堂教学、小型会议,作为发言时间的控制。

    VC 托盘的建立

    // 当窗口最小化时,隐藏窗口而不是最小化 ShowWindow(SW_HIDE); } else { CWinApp::OnSysCommand(nID, lParam); } } ``` 5. **创建托盘图标**: 在消息处理函数中添加代码来创建托盘图标: ```cpp ...

    VCC++6.0开发的托盘例子

    托盘图标是Windows操作系统中一个非常实用的功能,它允许应用程序在任务栏通知区域显示一个图标,即使窗口被最小化或隐藏,用户仍然可以通过点击托盘图标与应用进行交互。这种设计模式在很多后台运行、需要常驻内存...

Global site tag (gtag.js) - Google Analytics