中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > 综合文章
VC Tray Icon的使用
作者:未知 时间:2005-07-27 21:55 出处:CSDN 责编:chinaitpower
              摘要:VC Tray Icon的使用
为CMainFrame增加如下的成员变量:
 NOTIFYICONDATA m_trayIcon;
 CMenu m_menuTray;

在CMainFrame的OnCreate函数末尾增加:
 m_trayIcon.cbSize = sizeof(NOTIFYICONDATA);
 m_trayIcon.hIcon = (HICON)LoadImage(AfxGetApp()->m_hInstance,
  MAKEINTRESOURCE(IDI_TRAYICON), IMAGE_ICON, 16, 16, 0);
 m_trayIcon.hWnd = m_hWnd;
 m_trayIcon.uID = MAINTRAYICON;
 m_trayIcon.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
 m_trayIcon.uCallbackMessage = WM_TRAYICON;
 strcpy(m_trayIcon.szTip, LoadResString(IDS_TOOLTIP));
 Shell_NotifyIcon(NIM_ADD, &m_trayIcon);

增加消息WM_TRAYICON响应函数:
ON_MESSAGE(WM_TRAYICON,OnTrayNotify)

int CMainFrame::OnTrayNotify(WPARAM wParam, LPARAM lParam)
{
 if(wParam != MAINTRAYICON)
  return 0L;
 
 if(m_menuTray.m_hMenu == NULL && !m_menuTray.LoadMenu(IDR_MAINFRAME))
  return 0;
 
 CMenu* pSubMenu = m_menuTray.GetSubMenu(0);
 if (!pSubMenu)
  return 0;
 
 if (lParam == WM_RBUTTONUP)
 {
  ::SetMenuDefaultItem(pSubMenu->m_hMenu, 0, TRUE);
  CPoint pos;
  GetCursorPos(&pos);
  
  SetForegroundWindow();
  pSubMenu->TrackPopupMenu(TPM_RIGHTALIGN|TPM_LEFTBUTTON
   |TPM_RIGHTBUTTON, pos.x, pos.y, this, NULL);
 }
 else if(lParam == WM_LBUTTONDOWN)
 {
  ShowWindow(SW_SHOW);
  SetForegroundWindow();
 }
 else if(lParam == WM_LBUTTONDBLCLK)
 {
  SendMessage(WM_COMMAND, pSubMenu->GetMenuItemID(0), 0);
 }
 return 1L;
}
如果同时还需要屏蔽窗口关闭按钮的话需要增加消息处理函数:
ON_WM_SYSCOMMAND()

void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam)
{
 if(nID == SC_CLOSE)
 {
  ShowWindow(SW_HIDE);
  return;
 }
 CFrameWnd::OnSysCommand(nID, lParam);
}

在窗口的Destroy函数调用:
 Shell_NotifyIcon(NIM_DELETE, &m_trayIcon);

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有