NOTIFYICONDATA m_ntyIconData; //-----------初始化---------------------------------------------------------- m_ntyIconData.cbSize = sizeof (NOTIFYICONDATA); m_ntyIconData.hWnd = this->m_hWnd; m_ntyIconData.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); strcpy(m_ntyIconData.szTip,"这是一个任务栏测试程序"); m_ntyIconData.uFlags = NIF_TIP|NIF_MESSAGE|NIF_ICON; //有效的成员包括Tip,msg,icon m_ntyIconData.uCallbackMessage = WM_SHOWICON; //响应的消息 //-----在任务栏上显示---------------- ::Shell_NotifyIcon(NIM_ADD,&m_ntyIconData); //在这可以隐藏窗口了 //----------删除任务栏上的显示 ::Shell_NotifyIcon(NIM_DELETE,&m_ntyIconData); //----------------消息函数---------------- LRESULT CTestDlg::OnShowTask(WPARAM wParam,LPARAM lParam) { if (wParam!=IDR_MAINFRAME) { return 1; } CMenu menu; POINT p; CMenu *pMenu = NULL; switch (lParam) { case WM_LBUTTONDBLCLK: //左键双击 ShowWindow(SW_SHOW); break; case WM_RBUTTONUP: //右键单击 ::GetCursorPos(&p); menu.LoadMenu(IDR_MENU1); pMenu = menu.GetSubMenu(0); if (pMenu!=NULL) { this->SetForegroundWindow(); //这条要的, 不信去掉看看会怎样 pMenu->TrackPopupMenu(TPM_LEFTALIGN,p.x,p.y,this); } break; default: break; } return 0; }

评论