本人想制作一个系统托盘程序(对托盘右击鼠标会有东西弹出)
                                                  应该点用些什么函数 或用什么方法呢
                                                                   谢谢

解决方案 »

  1.   

    自己的笔记(程序运行、最小化后图标在右下角,类似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); } 
      

  2.   


    大同小异,自己改一下就行了。http://blog.csdn.net/hityct1/archive/2007/12/05/1918285.aspx