Windows下的任务栏图标编程
2007-05-23 13:20
369 查看
针对任务栏图标的编程不外乎就下面这么几点:
1:在任务栏添加,删除图标
2:在任务栏图标上点击鼠标,弹出菜单
3:当鼠标在任务栏图标上hover的时候,弹出Balloon Tip.
这是程序被最小化到托盘后的效果图:
下面的程序就是用来演示上面这三个方面的。
void CnidDlg::OnBnClickedOk()
{
/////////////////////////////////////////////////////////////////////////
//以下代码展示在任务栏添加图标的过程,要注意的是必须在stdafx.h中把_WIN32_IE声明为0x0500
nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd=this->m_hWnd;
nid.uID=IDR_MAINFRAME;
//nid.uFlags=NIF_ICON;
nid.uFlags=NIF_MESSAGE|NIF_INFO|NIF_ICON|NIF_TIP;
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
::Shell_NotifyIcon(NIM_ADD,&nid);
/////////////////////////////////////////////////////////////////////////
//以下代码展示了任务栏提示框的用法
//nid.uID=IDR_MAINFRAME;
//nid.uFlags=NIF_MESSAGE|NIF_INFO|NIF_ICON|NIF_TIP;
nid.dwInfoFlags=NIIF_INFO;
_tcscpy(nid.szInfoTitle,"自动提示");
strcpy(nid.szTip,"任务栏图标操作演示程序");
strcpy(nid.szInfo,"本程序已经转入后台运行......");
nid.uCallbackMessage=WM_BRUN; //这里自定义了一个消息
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
::Shell_NotifyIcon(NIM_MODIFY,&nid);
this->ShowWindow(SW_HIDE);
//OnOK();
}
LRESULT CnidDlg::OnBackGround(WPARAM wParam,LPARAM lParam)
{
//新建一个菜单资源,定义了在任务栏图标上点击右键和左键不同的动作
switch(lParam)
{
case WM_RBUTTONUP://右键起来时弹出快捷菜单,这里只有一个“关闭”
{
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CMenu* pSubMenu = menu.GetSubMenu(0);
::SetMenuDefaultItem(pSubMenu->m_hMenu, 0, TRUE);
CPoint mouse;
GetCursorPos(&mouse);
::SetForegroundWindow(this->m_hWnd);
::TrackPopupMenu(pSubMenu->m_hMenu, 0, mouse.x, mouse.y, 0,
this->m_hWnd, NULL);
break;
}
case WM_LBUTTONDBLCLK:
{
this->ShowWindow(SW_SHOWNORMAL); //处理左键双击
break;
}
}
return 0;
}
void CnidDlg::OnBnClickedCancel()
{
//以下方法展示了将任务栏图标去掉的过程
nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd=this->m_hWnd;
nid.uID=IDR_MAINFRAME;
nid.uFlags=NIF_ICON;
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
::Shell_NotifyIcon(NIM_DELETE,&nid);
this->EndDialog(1);
OnCancel();
}
源代码可以从这里下载:
http://oss.lzu.edu.cn/blog/job.php?action=download&pid=&tid=1082&aid=429
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1621164
[收藏到我的网摘] 常海龙发表于 2007年05月22日 16:47:59
1:在任务栏添加,删除图标
2:在任务栏图标上点击鼠标,弹出菜单
3:当鼠标在任务栏图标上hover的时候,弹出Balloon Tip.
这是程序被最小化到托盘后的效果图:
下面的程序就是用来演示上面这三个方面的。
void CnidDlg::OnBnClickedOk()
{
/////////////////////////////////////////////////////////////////////////
//以下代码展示在任务栏添加图标的过程,要注意的是必须在stdafx.h中把_WIN32_IE声明为0x0500
nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd=this->m_hWnd;
nid.uID=IDR_MAINFRAME;
//nid.uFlags=NIF_ICON;
nid.uFlags=NIF_MESSAGE|NIF_INFO|NIF_ICON|NIF_TIP;
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
::Shell_NotifyIcon(NIM_ADD,&nid);
/////////////////////////////////////////////////////////////////////////
//以下代码展示了任务栏提示框的用法
//nid.uID=IDR_MAINFRAME;
//nid.uFlags=NIF_MESSAGE|NIF_INFO|NIF_ICON|NIF_TIP;
nid.dwInfoFlags=NIIF_INFO;
_tcscpy(nid.szInfoTitle,"自动提示");
strcpy(nid.szTip,"任务栏图标操作演示程序");
strcpy(nid.szInfo,"本程序已经转入后台运行......");
nid.uCallbackMessage=WM_BRUN; //这里自定义了一个消息
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
::Shell_NotifyIcon(NIM_MODIFY,&nid);
this->ShowWindow(SW_HIDE);
//OnOK();
}
LRESULT CnidDlg::OnBackGround(WPARAM wParam,LPARAM lParam)
{
//新建一个菜单资源,定义了在任务栏图标上点击右键和左键不同的动作
switch(lParam)
{
case WM_RBUTTONUP://右键起来时弹出快捷菜单,这里只有一个“关闭”
{
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CMenu* pSubMenu = menu.GetSubMenu(0);
::SetMenuDefaultItem(pSubMenu->m_hMenu, 0, TRUE);
CPoint mouse;
GetCursorPos(&mouse);
::SetForegroundWindow(this->m_hWnd);
::TrackPopupMenu(pSubMenu->m_hMenu, 0, mouse.x, mouse.y, 0,
this->m_hWnd, NULL);
break;
}
case WM_LBUTTONDBLCLK:
{
this->ShowWindow(SW_SHOWNORMAL); //处理左键双击
break;
}
}
return 0;
}
void CnidDlg::OnBnClickedCancel()
{
//以下方法展示了将任务栏图标去掉的过程
nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd=this->m_hWnd;
nid.uID=IDR_MAINFRAME;
nid.uFlags=NIF_ICON;
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
::Shell_NotifyIcon(NIM_DELETE,&nid);
this->EndDialog(1);
OnCancel();
}
源代码可以从这里下载:
http://oss.lzu.edu.cn/blog/job.php?action=download&pid=&tid=1082&aid=429
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1621164
[收藏到我的网摘] 常海龙发表于 2007年05月22日 16:47:59
相关文章推荐
- Windows窗体编程基础学习:使用 NotifyIcon 组件向任务栏添加应用程序图标
- Windows窗体编程基础学习:使用 NotifyIcon 组件向任务栏添加应用程序图标
- Windows下的任务栏图标编程
- Windows C编程中Win7隐藏任务栏图标方法
- Windows窗体编程基础学习:使用 NotifyIcon 组件向任务栏添加应用程序图标
- windows任务栏图标编程步骤
- Windows窗体编程基础学习:使用 NotifyIcon 组件向任务栏添加应用程序图标
- Delphi之Windows Taskbar API 编程,包括任务栏进度条,图标覆盖,任务栏缩略图,跳转列表
- 在windows系统任务栏的托盘中显示图标 c++
- windows编程--动态加载光标和图标
- (C#)Windows Shell 外壳编程系列8 - 同后缀名不同图标?
- [C++] C++ Builder 下开发具有Windows任务栏布告区图标的应用程序
- 找回丢失的Windows任务栏图标(快速启动栏/显示桌面/语言栏等等)
- 开发具有Windows任务栏布告区图标的应用程序
- Windows通知栏图标高级编程概述
- Windows 7 任务栏开发 之 覆盖图标(Overlay Icon)
- windows任务栏图标出现(2)如何处理
- windows基础应用程序编程(五):图标和加速键
- Delphi对Windows通知栏图标编程示例