最小化窗口到托盘区-VC++

1、在窗口类的.h文件中添加变量:NOTIFYICONDATA  pnid;

2、在窗口类的.CPP文件中自定义消息:WM_MYMESSAGE

3、在窗口类的初始化函数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,"局域网监控系统客户端");

4、为WM_MYMESSAGE添加消息响应函数:

BEGIN_MESSAGE_MAP(CClientDlg, CDialog)

ON_MESSAGE(WM_MYMESSAGE,OnMyMessage)

ON_WM_SIZE()//窗口消息(在类向导中添加)

END_MESSAGE_MAP()

5、OnMyMessage函数的实现:

LRESULT CClientDlg::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;

}

6、在类向导中为对话框添加ON_WM_SIZE()消息,并实现OnSize函数

void CClientDlg::OnSize(UINT nType, int cx, int cy)

{

CDialog::OnSize(nType, cx, cy);

if (nType==SIZE_MINIMIZED)//如果事件为最小化

{

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

ShowWindow(SW_HIDE);//隐藏主窗口

}

}

时间: 2024-11-09 04:45:16

最小化窗口到托盘区-VC++的相关文章

Delphi 7下最小化到系统托盘(主要是WM_TRAYMSG和WM_SYSCOMMAND消息)

在Delphi 7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本.定义如下: 123456789   _NOTIFYICONDATAA = record   cbSize: DWORD;   Wnd: HWND;   uID: UINT;   uFlags: UINT;   uCallbackMessage: UINT;   hIcon: HICON;   szTip: array [0..63] of Ansi

将Mozilla ThunderBird最小化到系统托盘(转载)

转自:http://be-evil.org/mozilla-thunderbird-minize-to-tray.html Mozilla ThunderBird是一款非常不错的邮件客户端,但是其在默认状态下不能最小化到系统任务栏中,这个设计让我十分不爽,不过Mozilla那强悍的插 件资源完全弥补这个问题,下面介绍一款插件可以实现将Mozilla ThunderBird最小化到系统托盘: MinimizeToTray Plus Versions 1.0.8 这款插件可以将ThunderBird

C#窗口实现最小化到系统托盘

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace notifyIconShow { public partial class ColdJoke : Form {

C# 实现WinForm窗口最小化到系统托盘代码,并且判断左右鼠标的事件

1.设置WinForm窗体属性showinTask=false 2.加notifyicon控件notifyIcon1,为控件notifyIcon1的属性Icon添加一个icon图标. 3.添加窗体最小化事件(首先需要添加事件引用): this.SizeChanged += new System.EventHandler(this.Form1_SizeChanged); //上面一行是主窗体InitializeComponent()方法中需要添加的引用 private void Form1_Siz

C#Winform将软件最小化至系统托盘

最近做了一个关于软件最小化到托盘里的功能,对此做了一点小小的总结,关于如何将软件最小化托盘里,并且点击对应小图标会有许多可供选择的菜单,其实主要用的控件是就NotifyIcon控件与contextMenuStrip控件的结合使用,利用contextMenuStrip控件添加对应的菜单以及菜单对应的功能. 第一步:首先介绍一下NotifyIcon控件的属性: BalloonTipIcon -- 气泡提示的类型,有None(无).Info(蓝色感叹号).Warnning(黄色感叹号).Error(小

WPF 最大化最小化窗口

public static void FullOrMin(this Window window)        {            //如果是全屏,则最小化            if (window.WindowState == WindowState.Maximized)            {                window.Topmost = false;                window.WindowState = WindowState.Normal; 

wpf 窗口最小化后,触发某事件弹出最小化窗口并置顶

//如果窗口最小化了弹出并置顶----事件触发调用 ShowWindowAsync(new System.Windows.Interop.WindowInteropHelper(CommonHelper.view).Handle, 1); SetForegroundWindow(new System.Windows.Interop.WindowInteropHelper(CommonHelper.view).Handle); [System.Runtime.InteropServices.Dll

wpf 最大最小化窗口详细

转自分享 public static void Win(this Window window)        {            //如果是全屏,则最小化            if (window.WindowState == WindowState.Maximized)            {                window.Topmost = false;                window.WindowState = WindowState.Normal;  

foobar2000设置关闭按钮最小化到系统托盘

1.设置托盘选项: 2.[File]->[Preferences]->[Advanced]->[Display]->[Default User Interface]->[Close minimises] 最后来一张经典皮肤感受下foobar2000的强大: