系统托盘问题 本人想制作一个系统托盘程序(对托盘右击鼠标会有东西弹出) 应该点用些什么函数 或用什么方法呢 谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 自己的笔记(程序运行、最小化后图标在右下角,类似QQ) 在头文件MainFrm.h中声明NOTIFYICONDATA nid; int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { //***** 初始化系统托盘图标 *****// nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA); nid.hWnd=this->m_hWnd; nid.uID=IDR_MAINFRAME; nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ; nid.uCallbackMessage=WM_USER+1;//自定义的消息名称 nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME)); strcpy(nid.szTip,"双击打开多功能电子钟");//信息提示条 Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标 //***** 初始化系统托盘图标 *****// //CenterWindow(); } LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { switch(message){ case WM_USER+1: //如果是用户定义的消息 if(lParam==WM_LBUTTONDOWN) //WM_LBUTTONDBLCLK不怎么灵 { //鼠标单击时主窗口出现 ::SetForegroundWindow(this->m_hWnd); //::SetWindowPos(this->m_hWnd,HWND_TOP,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOW); WindowIsHide=false; return 0; } else if(lParam==WM_RBUTTONDOWN) // && WindowIsHide { ::SetForegroundWindow(this->m_hWnd); //将主框架窗口置前,左击其他地方,菜单消失 //鼠标右键单击弹出菜单 CMenu menu; menu.LoadMenu(IDR_MAINFRAME); CMenu* pMenu=menu.GetSubMenu(0); CPoint point; GetCursorPos(&point); pMenu->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,AfxGetMainWnd()); ::PostMessage(this->m_hWnd, WM_NULL, 0,0); //左击其他地方,菜单消失 menu.DestroyMenu(); return 0; } break; case WM_SYSCOMMAND: //如果是系统消息 if(wParam==SC_MINIMIZE||wParam==SC_CLOSE||wParam==SC_MAXIMIZE||wParam==SC_SIZE) { //主窗口隐藏 AfxGetApp()->m_pMainWnd->ShowWindow(SW_HIDE); WindowIsHide=true; return 0; } break; } return CFrameWnd::WindowProc(message, wParam, lParam); } void CMainFrame::OnDestroy() { CFrameWnd::OnDestroy(); ::Shell_NotifyIcon(NIM_DELETE,&nid); } 大同小异,自己改一下就行了。http://blog.csdn.net/hityct1/archive/2007/12/05/1918285.aspx 初级界面问题! 有关CEdit控件的问题 怎么隐藏DLL中的信息,不让工具软件可以查看??? 请教一个udp的简单问题!! 请问SDK写的代码可以用在MFC中码? MFC 半透明控件设计 快来找找感觉!! 如何控制子模态对话框的显示位置 CListCtrl中的ToolTip能显示超过80个字节的内容么? 各位大哥帮帮忙,为什么我统计的时间不是自己想要的时间?? CDHtmlDialog 类能不能获取<iframe>标签下的网页窗口 如何让静态控件响应鼠标,按下,松开,移动
在头文件MainFrm.h中声明NOTIFYICONDATA nid; int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { //***** 初始化系统托盘图标 *****// nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA); nid.hWnd=this->m_hWnd; nid.uID=IDR_MAINFRAME; nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ; nid.uCallbackMessage=WM_USER+1;//自定义的消息名称 nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME)); strcpy(nid.szTip,"双击打开多功能电子钟");//信息提示条 Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标 //***** 初始化系统托盘图标 *****// //CenterWindow(); } LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { switch(message){ case WM_USER+1: //如果是用户定义的消息 if(lParam==WM_LBUTTONDOWN) //WM_LBUTTONDBLCLK不怎么灵 { //鼠标单击时主窗口出现 ::SetForegroundWindow(this->m_hWnd); //::SetWindowPos(this->m_hWnd,HWND_TOP,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOW); WindowIsHide=false; return 0; } else if(lParam==WM_RBUTTONDOWN) // && WindowIsHide { ::SetForegroundWindow(this->m_hWnd); //将主框架窗口置前,左击其他地方,菜单消失 //鼠标右键单击弹出菜单 CMenu menu; menu.LoadMenu(IDR_MAINFRAME); CMenu* pMenu=menu.GetSubMenu(0); CPoint point; GetCursorPos(&point); pMenu->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,AfxGetMainWnd()); ::PostMessage(this->m_hWnd, WM_NULL, 0,0); //左击其他地方,菜单消失 menu.DestroyMenu(); return 0; } break; case WM_SYSCOMMAND: //如果是系统消息 if(wParam==SC_MINIMIZE||wParam==SC_CLOSE||wParam==SC_MAXIMIZE||wParam==SC_SIZE) { //主窗口隐藏 AfxGetApp()->m_pMainWnd->ShowWindow(SW_HIDE); WindowIsHide=true; return 0; } break; } return CFrameWnd::WindowProc(message, wParam, lParam); } void CMainFrame::OnDestroy() { CFrameWnd::OnDestroy(); ::Shell_NotifyIcon(NIM_DELETE,&nid); }
大同小异,自己改一下就行了。http://blog.csdn.net/hityct1/archive/2007/12/05/1918285.aspx