16,472
社区成员
发帖
与我相关
我的任务
分享
ZeroMemory(&nid, sizeof(NOTIFYICONDATA_V3_SIZE));
nid.uVersion = NOTIFYICON_VERSION;
nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA_V3_SIZE);
nid.hWnd=this->m_hWnd;
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
nid.uID=IDR_MAINFRAME;
nid.uFlags= NIF_MESSAGE|NIF_ICON|NIF_TIP|NIF_INFO;
nid.dwState = NIS_SHAREDICON;
nid.dwStateMask = NIS_SHAREDICON;
nid.uCallbackMessage=WM_SHOWTASK;
wcscpy_s(nid.szTip,_T("XXXXXXX"));
wcscpy_s(nid.szInfo,_T("XX"));
wcscpy_s(nid.szInfoTitle,_T("XXXX"));
nid.dwInfoFlags=NIIF_INFO;
nid.uTimeout=5000;
//在托盘区添加图标
Shell_NotifyIcon(NIM_ADD,&nid);
BOOL CBalloonTipDlg::OnInitDialog()
{
//对对话框字体,颜色的一些修改
//对注册表的一些查询
nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd=this->m_hWnd;
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
nid.uID=IDR_MAINFRAME;
nid.uFlags= NIF_MESSAGE|NIF_ICON|NIF_TIP|NIF_INFO;
nid.uCallbackMessage=WM_SHOWTASK;//自定义的消息名称,注意:这里的消息是用户自定义消息
wcscpy_s(nid.szTip,_T("XXXXXXXX"));//信息提示条
wcscpy_s(nid.szInfoTitle,_T("XXXXX"));
nid.dwInfoFlags=NIIF_INFO;
nid.uTimeout=5000;
//在托盘区添加图标
Shell_NotifyIcon(NIM_ADD,&nid);
nid.uFlags = NIF_INFO;
wcscpy_s(nid.szInfo,_T("XX"));
Shell_NotifyIcon(NIM_MODIFY,&nid);
return TRUE;
}
Shell_NotifyIcon(NIM_MODIFY,&nid);
BOOL CBalloonTipDlg::OnInitDialog()
{
//对对话框字体,颜色的一些修改
//对注册表的一些查询
nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd=this->m_hWnd;
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
nid.uID=IDR_MAINFRAME;
nid.uFlags= NIF_MESSAGE|NIF_ICON|NIF_TIP|NIF_INFO;
nid.uCallbackMessage=WM_SHOWTASK;//自定义的消息名称,注意:这里的消息是用户自定义消息
wcscpy_s(nid.szTip,_T("XXXXXXXX"));//信息提示条
wcscpy_s(nid.szInfo,_T("XX"));
wcscpy_s(nid.szInfoTitle,_T("XXXXX"));
nid.dwInfoFlags=NIIF_INFO;
nid.uTimeout=5000;
//在托盘区添加图标
Shell_NotifyIcon(NIM_ADD,&nid);
Shell_NotifyIcon(NIM_MODIFY,&nid);
return TRUE;
}
nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA_V3_SIZE);
/**
* @summary 气球显示
* @param szMsg [in] 显示的信息内容
* @param szTitle [in] 显示的信息标题
* @param uTimeout [in] 超时时间(毫秒)
* @param dwInfoFlags [in] 参数 说明如下
//NIN_BALLOONSHOW显示
//NIN_BALLOONHIDE隐藏
//NIN_BALLOONTIMEOUT超时或者用户关闭才消失
//NIN_BALLOONUSERCLICK单击才显示
* @return true 修改托盘成功
* @return false 修改托盘失败
**/
BOOL CXXXXXXDlg::ShowBalloonTip(LPCTSTR szMsg, LPCTSTR szTitle, UINT uTimeout, DWORD dwInfoFlags)
{
m_nid.cbSize=sizeof(NOTIFYICONDATA);
m_nid.uFlags = NIF_INFO;
m_nid.uTimeout = uTimeout;
m_nid.dwInfoFlags = dwInfoFlags;
wcscpy_s(m_nid.szInfo,szMsg ? szMsg : _T(""));
wcscpy_s(m_nid.szInfoTitle,szTitle ? szTitle : _T(""));
return Shell_NotifyIcon(NIM_MODIFY, &m_nid);
}
void CXXXXXXDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if(nType == SIZE_MINIMIZED)
{
ShowWindow(SW_HIDE);
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_ICONNOTIFY; // 自定义的消息名称
m_nid.hIcon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
wcscpy_s(m_nid.szTip, _T("VStar文件下载工具")); // 信息提示条
Shell_NotifyIcon(NIM_ADD, &m_nid); // 在托盘区添加图标
ShowBalloonTip(_T("最小到托盘区域!"), _T("XXX工具"), 1000, NIN_BALLOONTIMEOUT);
}
}
#pragma once
#include <tchar.h>
#ifndef ASSERT
#include <assert.h>
#define ASSERT assert
#endif
struct MessageBalloon : public NOTIFYICONDATA
{
MessageBalloon(LPCTSTR _szInfo = _T("Prompt"), LPCTSTR _szInfoTitle = 0, LPCTSTR _szTip = 0, HICON _hIcon = 0)
{
ASSERT(_szInfo);
static struct wnd_holder{
HWND hwnd_;
wnd_holder(){hwnd_ = CreateWindowW(L"STATIC", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);}
~wnd_holder(){DestroyWindow(hwnd_);}
} wh;
memset(this, 0, sizeof(*this));
cbSize = sizeof(*this);
hWnd = wh.hwnd_;
hIcon = _hIcon ? _hIcon : ::LoadIcon(::GetModuleHandle(NULL),MAKEINTRESOURCE(128/*IDR_MAINFRAME*/));
if (! hIcon) hIcon = ::LoadIcon(NULL, IDI_INFORMATION);
/*if (! hIcon) hIcon = ::LoadIcon(NULL, "butterfly.ico");*/
// if 'NIF_INFO' is an undeclared identifier, define _WIN32_IE 0x500 at the very beginning
uFlags = NIF_INFO | NIF_TIP | NIF_ICON;
dwInfoFlags = NIIF_INFO;
_tcscpy(szInfo, _szInfo);
if (! _szInfoTitle) LoadString(::GetModuleHandle(NULL), 57344/*AFX_IDS_APP_TITLE*/, szInfoTitle, sizeof(szInfoTitle));
else _tcscpy(szInfoTitle, _szInfoTitle);
_tcscpy(szTip, _szTip ? _szTip : szInfoTitle);
Shell_NotifyIcon(NIM_ADD, this);
}
~MessageBalloon(){Shell_NotifyIcon(NIM_DELETE, this);}
};