请问:如果使程序最小化后,显示一个小图标在窗口右下角的任务栏中啊???

loachli 2005-09-23 09:01:20
就像SQL-SERVER数据库那样,在窗口右下角的任务栏中显示一个图标?
...全文
343 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cjn2009 2006-02-19
  • 打赏
  • 举报
回复
踩点
llgzhang 2006-01-17
  • 打赏
  • 举报
回复
不错
NETFUNNER 2005-10-10
  • 打赏
  • 举报
回复
顶~~~
xx_jj 2005-09-23
  • 打赏
  • 举报
回复
先要void C。。。Dlg::InitTray()
{
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_NOTIFYICON; //自定义的消息名称
nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
strcpy(nid.szTip,"才行大锅饭大"); //信息提示
Shell_NotifyIcon(NIM_ADD,&nid); //在托盘区添加图标
}
LONG C。。Dlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam) //wParam中是响应消息的图 标 ID, lParam中则是Windows的消息
{

switch ( lParam )
{
case WM_RBUTTONDOWN:
{ // 托盘图标上单击鼠标右键,弹出菜单
CMenu pMenu;
if (pMenu.LoadMenu(IDR_MENU_TRAY))
{
CMenu* pPopup = pMenu.GetSubMenu(0);
ASSERT(pPopup != NULL);
CPoint Point;
GetCursorPos( &Point ); // 确定鼠标位置以便在该位置附近显示菜单
SetForegroundWindow();
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,Point.x, Point.y, this);
}
}
break;
case WM_LBUTTONDBLCLK:
OnMenuitemShow();
break;
case WM_LBUTTONDOWN:
{
CMenu pMenu;
if (pMenu.LoadMenu(IDR_MENU_TRAY))
{
CMenu* pPopup = pMenu.GetSubMenu(0);
ASSERT(pPopup != NULL);
CPoint Point;
GetCursorPos( &Point );
SetForegroundWindow();
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,Point.x, Point.y, this);
}
}
break;
}
return 0;
}

void CvrhomeDlg::OnMenuitemShow()
{
// TODO: Add your command handler code here
ShowWindow( SW_SHOWNORMAL);
// ShowWindow(SW_RESTORE);
}
void C。。Dlg::OnMenuitemExit()
{
// TODO: Add your command handler code here
Shell_NotifyIcon(NIM_DELETE, &nid);
CDialog::OnCancel();
} //托盘处理函数


添加一个消息#define WM_NOTIFYICON WM_USER+5 //托盘消息
记得 最后释放
goodboyws 2005-09-23
  • 打赏
  • 举报
回复
#define WM_NOTIFYICON WM_USER+1000
//向任务栏添加图标
BOOL TaskBarAddIcon(HWND hwnd, UINT uID, HICON hicon, LPSTR lpszTip)
{
BOOL res;
NOTIFYICONDATA tnid;

tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = hwnd;
tnid.uID = uID;
tnid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
tnid.uCallbackMessage = WM_NOTIFYICON; //这个是操作任务栏图标向窗口hwnd发送的消息
tnid.hIcon = hicon;
if (lpszTip)
lstrcpyn(tnid.szTip, lpszTip, sizeof(tnid.szTip));
else
tnid.szTip[0] = '\0';

res = Shell_NotifyIcon(NIM_ADD, &tnid);

if (hicon)
DestroyIcon(hicon);

return res;
}
//从任务栏删除图标
BOOL TaskBarDeleteIcon(HWND hwnd, UINT uID)
{
BOOL res;
NOTIFYICONDATA tnid;

tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = hwnd;
tnid.uID = uID;

res = Shell_NotifyIcon(NIM_DELETE, &tnid);
return res;
}



BEGIN_MESSAGE_MAP(CMyWindow, CWnd)
ON_MESSAGE(WM_NOTIFYICON, OnNotifyIcon)
END_MESSAGE_MAP()

//处理来自任务栏的消息
LRESULT CMyWindow::OnNotifyIcon(WPARAM wParam, LPARAM lParam)
{
UINT uID;
UINT uMouseMsg;

uID = (UINT) wParam;
uMouseMsg = (UINT) lParam;

if (uMouseMsg == WM_RBUTTONUP )
{
//显示菜单
SetForegroundWindow();

TrackPopupMenu(pSub->GetSafeHmenu(), TPM_RIGHTALIGN | TPM_RIGHTBUTTON |
TPM_LEFTBUTTON, pt.x, pt.y, NULL, m_hWnd, NULL);
PostMessage(WM_NULL, 0, 0);
}
else if (uMouseMsg == WM_LBUTTONDBLCLK)
{
//显示窗口
SetWindowPos(&wndTop, 0, 0, 0,
0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
SetForegroundWindow();

}

return 0;
}
phoenix96_2000 2005-09-23
  • 打赏
  • 举报
回复
http://www.codeproject.com/shell/systemtray.asp

带气球提示的~
Kudeet 2005-09-23
  • 打赏
  • 举报
回复
系统托盘编程完全指南
http://www.vckbase.com/document/viewdoc/?id=492
http://www.vckbase.com/document/viewdoc/?id=495
http://www.vckbase.com/document/viewdoc/?id=498

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧