c++ MFC如何发送一个应用程序到托盘



我写了一个小程序,在后台做一些操作。

因为它不需要用户的注意,我想把应用程序发送到系统托盘中,当有人点击它时,窗口应该再次弹出。

问题是,我写了一个MFC程序(对话框),它做了我想做的一切。现在我需要找到一种方法把它送到托盘里。

类型:MFC(对话框窗口)lnguage: c++IDE: Visual Studio 2012

你知道我该怎么做吗?或者你可能知道一个很好的教程或函数/类我需要?

我已经在codeprojects.com和谷歌搜索过了,但似乎没有太多关于这个。谢谢。

编辑1:

我试过这样做:

HWND hMainWindow = this->GetSafeHwnd();
HICON hProgramIcon = this->GetIcon(false);
char szTip[16] = "Tracker"; 
nidTrayIcon.cbSize = sizeof(nidTrayIcon); 
nidTrayIcon.hIcon = hProgramIcon; 
nidTrayIcon.hWnd = hMainWindow; 
nidTrayIcon.uCallbackMessage = (WM_USER + 1); 
nidTrayIcon.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
nidTrayIcon.uID = 0x0200; 
strcpy_s((char*)nidTrayIcon.szTip,16, szTip2);
nidTrayIcon.szTip[strlen(szTip)] = ''; 
Shell_NotifyIcon(NIM_ADD, &nidTrayIcon);

如果我运行这段代码,我的应用程序关闭代码"0x03"(路径未找到…)

编辑2:

this->ShowWindow(SW_HIDE);

也不起作用。同样的问题。

你正在寻找NotifyIcon类:http://msdn.microsoft.com/en-gb/library/system.windows.forms.notifyicon.aspx

,这里是一个教程:http://alanbondo.wordpress.com/2008/06/22/creating-a-system-tray-app-with-c/

也就是说,仅仅将应用程序添加到系统托盘中是一个非常糟糕的UI想法。它曾经在windows 95/98期间非常流行,微软提供了一个有用的代码示例,每个人都可以复制和粘贴。很快,我们的系统托盘里就有了鱼和眼睛。托盘越来越满,因此完全没用了。

如果你的应用程序正在做一些不需要用户注意的事情,让它成为一个服务,或者只是让用户最小化任务栏的对话框,并在对话框上显示一个进度条。这样,将鼠标悬停在任务栏图标上,用户就可以查看进度了。

使用系统尝试显示有用的通知。只有当图标将传达可能影响用户当前工作(如网络连接)的系统级活动时,才添加图标。否则,不要弄乱我的系统托盘。我不想把我的注意力从需要我关注的工作(你说你的工作不需要)转移到我的系统托盘里去看一只蹦蹦跳跳的兔子。

相关内容

  • 没有找到相关文章

最新更新