//-----------初始化----------------------------------------------------------
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;
}