添加系统托盘的时候指定NIF_INFO就可以了 .h文件中: protected : void __fastcall WndProc(TMessage Message); private : // User declarations UINT CRN_TRAYICON_MESSAGE; // 托盘区响应消息 void __fastcall CrnAddTrayIcon();
添加系统托盘的时候指定NIF_INFO就可以了
.h文件中:
protected :
void __fastcall WndProc(TMessage &Message);
private : // User declarations
UINT CRN_TRAYICON_MESSAGE; // 托盘区响应消息
void __fastcall CrnAddTrayIcon();
void __fastcall CrnRemoveTrayIcon();
.cpp文件中:
#include <tchar.h>
#include <stdio.h>
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
CRN_TRAYICON_MESSAGE = ::RegisterWindowMessage(TEXT( "IconNotify" ));
}
//---------------------------------------------------------------------------
// 重载WndProc
void __fastcall TForm1::WndProc(TMessage &Message)
{
if (Message.Msg == WM_SYSCOMMAND)
{
if (Message.WParam == SC_MINIMIZE)
{
CrnAddTrayIcon();
::ShowWindow(Handle, SW_HIDE);
}
}
else if (Message.Msg == CRN_TRAYICON_MESSAGE && Message.LParam == WM_LBUTTONUP)
{
// 如果单击鼠标左键则显示窗体
::ShowWindow(Handle, SW_SHOW);
// 使程序出现在任务栏
::ShowWindow(Application->Handle, SW_SHOW);
CrnRemoveTrayIcon();
}
TForm::WndProc(Message);
}
//---------------------------------------------------------------------------
// 添加图标到托盘区
void __fastcall TForm1::CrnAddTrayIcon()
{
NOTIFYICONDATA nid;
::ZeroMemory(&nid, sizeof (nid));
nid.cbSize = sizeof (nid);
nid.hWnd = Handle;
nid.uID = NULL;
nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_INFO;
nid.hIcon = Application->Icon->Handle;
nid.uCallbackMessage = CRN_TRAYICON_MESSAGE;
nid.dwInfoFlags = NIIF_INFO;
nid.uTimeout = 1000;
_tcsncpy(nid.szInfo,
TEXT( "最小化窗体时程序将隐藏到这里.\r\n" )
TEXT( "欢迎光临 www.ccrun.com" ),
sizeof (nid.szInfo));
_tcsncpy(nid.szInfoTitle, TEXT( "我的应用程序" ), sizeof (nid.szInfoTitle));
::Shell_NotifyIcon(NIM_ADD, &nid);
}
//---------------------------------------------------------------------------
// 删掉托盘区的图标
void __fastcall TForm1::CrnRemoveTrayIcon()
{
NOTIFYICONDATA nid;
::ZeroMemory(&nid, sizeof (nid));
nid.cbSize = sizeof (nid);
nid.hWnd = Handle;
::Shell_NotifyIcon(NIM_DELETE, &nid);
}
http://tieba.baidu.com.cn/p/401816277
*********** VC创建托盘的几个步骤 *******************
第一步:在***APP头文件中定义一个自定义消息WM_MYMESSAGE,
#define MWM_MYMESSAGE WM_USER+5
第二步:创建一个函数向任务栏添加托盘图标,然后在需要调用它的地方调用即可.
NOTIFYICONDATA为包含任务栏托盘程序信息的结构体
CreateIcon()
{
//创建任务栏图标对象
NOTIFYICONDATA tnd;
tnd.cbSize=sizeof(NOTIFYICONDATA);
//将当前程序托盘
tnd.hWnd=this->m_hWnd; //m_hWnd数据成员是一个HWND类型的公有变量
tnd.uID=IDR_MAINFRAME;
//定义托盘的属性:消息响应方式、图标、提示语言
tnd.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP;
tnd.uCallbackMessage=WM_MYMESSAGE;
//托盘图标的设置
tnd.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
//托盘图标提示信息的编辑
strcpy(tnd.szTip,"乐迷播放器,单击图标弹出窗口");
//向任务栏添加图标
Shell_NotifyIcon(NIM_ADD,&tnd);
}
第三步:利用向导自动生成鼠标左键按下函数
void CMusicFanDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x, point.y));
CDialog::OnLButtonDown(nFlags, point);
}
第四步:利用向导生成系统消息响应函数WindowProc(),并在其中添加消息响应函数,代码如下:
LRESULT CMusicFanDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
switch(message)
{
case WM_MYMESSAGE:
{
if(lParam==WM_RBUTTONUP||lParam==WM_LBUTTONUP)
{
if(markTray) //其中markTray为BOOL型,用于标志当点击托盘图标时是显示还是隐藏程序对话框.
{
this->ShowWindow(SW_SHOW);
m_PlayListDlg->ShowWindow(SW_SHOW);
m_LyricDlg->ShowWindow(SW_SHOW);
markTray=FALSE;
}
else
{
this->ShowWindow(SW_HIDE);
m_PlayListDlg->ShowWindow(SW_HIDE);
m_LyricDlg->ShowWindow(SW_HIDE);
markTray=TRUE;
}
}
break;
}
}
return CDialog::WindowProc(message, wParam, lParam);
}
第五步: 关闭程序时取消托盘图标模式,创建一个函数,然后调用.
void CMusicFanDlg::DelTrayPanel()
{
//创建任务栏图标对象
NOTIFYICONDATA tnd;
tnd.cbSize=sizeof(NOTIFYICONDATA);
//将当前程序托盘
tnd.hWnd=this->m_hWnd; //m_hWnd数据成员是一个HWND类型的公有变量
tnd.uID=IDR_MAINFRAME;
//定义托盘的属性:消息响应方式、图标、提示语言
tnd.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP;
tnd.uCallbackMessage=WM_MYMESSAGE;
//托盘图标的设置
tnd.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
//托盘图标提示信息的编辑
strcpy(tnd.szTip,"乐迷播放器,单击图标弹出窗口");
//向任务栏添加图标
//取消托盘图标模式
Shell_NotifyIcon(NIM_DELETE ,&tnd);
}
【文章原创作者:滨海网页制作公司 http://www.1234xp.com/binhai.html 欢迎留下您的宝贵建议】