vc最小化托盘
2010-04-22 09:23
204 查看
首先添加一个响应托盘的函数
#define WM_SHOWTASK (WM_USER + 1986) //用于托盘
//添加一个托盘函数
BOOL CIPMsgDlg::TrayMessage(HWND hWnd, DWORD dwMessage, HICON hIcon, PSTR pszTip)
{
BOOL bReturn;
NOTIFYICONDATA NofityData;
NofityData.cbSize = sizeof(NOTIFYICONDATA);
NofityData.hWnd = hWnd;
NofityData.uID = IDR_MAINFRAME;
NofityData.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
NofityData.uCallbackMessage = WM_SHOWTASK;
NofityData.hIcon = hIcon;
lstrcpyn(NofityData.szTip, pszTip, sizeof(NofityData.szTip));
bReturn = Shell_NotifyIcon(dwMessage, &NofityData);
if (hIcon)
DestroyIcon(hIcon);
return bReturn;
}
然后在OnInitDialog()里添加
TrayMessage(m_hWnd,NIM_ADD,m_hIcon,"IpMsg");//托盘
就可以产生一个托盘
//自定义消息处理函数,处理托盘鼠标事件
//头文件
afx_msg LRESULT onShowTask(WPARAM wParam,LPARAM lParam);
//源文件
ON_MESSAGE(WM_SHOWTASK,onShowTask)
//在这你一定要添加一个菜单 ID是IDR_LISTPOPMENU
LRESULT CIPMsgDlg::onShowTask(WPARAM wParam, LPARAM lParam)
{
switch(lParam)
{
case WM_RBUTTONUP://右键起来时弹出快捷菜单,这里只有一个“关闭”
{
LPPOINT lpoint = new tagPOINT;
CMenu menu;
menu.LoadMenu(IDR_LISTPOPMENU);//菜单ID
::GetCursorPos(lpoint);//得到鼠标位置
CMenu *pPopup;
pPopup = menu.GetSubMenu(1);
pPopup->TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoin t->y,this);
delete lpoint;
}
break;
case WM_LBUTTONDBLCLK: //双击左键的处理
{
this->ShowWindow(SW_SHOW);//简单的显示主窗口完事儿
}
break;
}
return 0;
}
//初始化时隐藏对话框 window消息函数
void CIPMsgDlg::OnNcPaint()
{
// TODO: Add your message handler code here
static int i = 2;
if(i > 0)
{
i --;
ShowWindow(SW_HIDE);
}
else
CDialog::OnNcPaint();
// Do not call CDialog::OnNcPaint() for painting messages
}
//然后可以添加托盘菜单命令 是自己添加的菜单命令
//托盘右键显示对话框菜单
void CIPMsgDlg::OnShowDlgMenu()
{
// TODO: Add your command handler code here
this->ShowWindow(SW_SHOW);
}
//托盘右键关闭菜单
void CIPMsgDlg::OnExitMenu()
{
// TODO: Add your command handler code here
this->SendMessage(WM_CLOSE);//关闭主对话框
#define WM_SHOWTASK (WM_USER + 1986) //用于托盘
//添加一个托盘函数
BOOL CIPMsgDlg::TrayMessage(HWND hWnd, DWORD dwMessage, HICON hIcon, PSTR pszTip)
{
BOOL bReturn;
NOTIFYICONDATA NofityData;
NofityData.cbSize = sizeof(NOTIFYICONDATA);
NofityData.hWnd = hWnd;
NofityData.uID = IDR_MAINFRAME;
NofityData.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;
NofityData.uCallbackMessage = WM_SHOWTASK;
NofityData.hIcon = hIcon;
lstrcpyn(NofityData.szTip, pszTip, sizeof(NofityData.szTip));
bReturn = Shell_NotifyIcon(dwMessage, &NofityData);
if (hIcon)
DestroyIcon(hIcon);
return bReturn;
}
然后在OnInitDialog()里添加
TrayMessage(m_hWnd,NIM_ADD,m_hIcon,"IpMsg");//托盘
就可以产生一个托盘
//自定义消息处理函数,处理托盘鼠标事件
//头文件
afx_msg LRESULT onShowTask(WPARAM wParam,LPARAM lParam);
//源文件
ON_MESSAGE(WM_SHOWTASK,onShowTask)
//在这你一定要添加一个菜单 ID是IDR_LISTPOPMENU
LRESULT CIPMsgDlg::onShowTask(WPARAM wParam, LPARAM lParam)
{
switch(lParam)
{
case WM_RBUTTONUP://右键起来时弹出快捷菜单,这里只有一个“关闭”
{
LPPOINT lpoint = new tagPOINT;
CMenu menu;
menu.LoadMenu(IDR_LISTPOPMENU);//菜单ID
::GetCursorPos(lpoint);//得到鼠标位置
CMenu *pPopup;
pPopup = menu.GetSubMenu(1);
pPopup->TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoin t->y,this);
delete lpoint;
}
break;
case WM_LBUTTONDBLCLK: //双击左键的处理
{
this->ShowWindow(SW_SHOW);//简单的显示主窗口完事儿
}
break;
}
return 0;
}
//初始化时隐藏对话框 window消息函数
void CIPMsgDlg::OnNcPaint()
{
// TODO: Add your message handler code here
static int i = 2;
if(i > 0)
{
i --;
ShowWindow(SW_HIDE);
}
else
CDialog::OnNcPaint();
// Do not call CDialog::OnNcPaint() for painting messages
}
//然后可以添加托盘菜单命令 是自己添加的菜单命令
//托盘右键显示对话框菜单
void CIPMsgDlg::OnShowDlgMenu()
{
// TODO: Add your command handler code here
this->ShowWindow(SW_SHOW);
}
//托盘右键关闭菜单
void CIPMsgDlg::OnExitMenu()
{
// TODO: Add your command handler code here
this->SendMessage(WM_CLOSE);//关闭主对话框
相关文章推荐
- VC最小化程序到托盘
- VC++如何将程序最小化到托盘
- VC中如何实现最小化到托盘以及恢复
- VC++:如何将程序启动时最小化到托盘
- VC 制作系统托盘程序实现将窗口最小化到系统托
- vc中程序最小化到托盘(任务拦)的实现
- VC++ 如何实现程序启动后最小化到托盘
- VC++MFC对话框应用程序实现程序最小化到系统托盘
- (转)VC 中如何实现最小化到托盘以及恢复?
- VC最小化程序到托盘
- VC++中把一个对话框最小化到托盘[转载]
- VC实现将对话框最小化到系统托盘
- VC实现将程序最小化到托盘
- VC实现最小化后在系统托盘显示
- VC 制作系统托盘程序实现将窗口最小化到系统托盘
- 实现 VC 最小化到 托盘
- VC++如何将程序最小化到托盘
- VC++中实现程序启动后隐藏窗口,最小化到托盘图标。
- [VC++]最小化图标至托盘中
- vc中程序最小化到托盘(任务拦)的实现