Windows Mobile C ++托盘图标

时间:2011-09-20 15:49:19

标签: c++ winapi windows-mobile

我正在尝试将主要在后台运行的应用程序放在Windows Mobile 6.5上的“托盘式”区域中。

我用Shell_NotifyIcon

显而易见
BOOL ShowTrayIcon(HWND hWnd, HINSTANCE hIns, BOOL bShowIcon)
{
BOOL bRet = FALSE;

g_structNotifyIconData.cbSize = sizeof(NOTIFYICONDATA);
g_structNotifyIconData.hIcon = LoadIcon(hIns, MAKEINTRESOURCE(IDI_GPSCOMPASS));
g_structNotifyIconData.hWnd = hWnd;
g_structNotifyIconData.uCallbackMessage = WM_SYSTRAY_MSG;
g_structNotifyIconData.uFlags = NIF_MESSAGE | NIF_ICON;
g_structNotifyIconData.szTip[0] = 'Bzz';
g_structNotifyIconData.uID = ID_TRAY;

if (bShowIcon)
bRet = Shell_NotifyIcon(NIM_ADD, &g_structNotifyIconData);
else
bRet = Shell_NotifyIcon(NIM_DELETE, &g_structNotifyIconData);


return bRet;
}

这是我试图放置图标的地方:

Tray icon within the 'today' area http://www.fotoszok.pl/upload/666d99dc.jpg

Shell_NotifyIcon 可以做到这一点,但今天的屏幕上没有显示图标,我可以在任何地方看到它在除了今日/主屏幕之外的托盘中。

现在我已经在某处看到这是因为今日屏幕中的托盘区域是为系统通知保留的,而'我们'不能在那里放置任何图标 - 如果这是真的,有人可以确认吗?

1 个答案:

答案 0 :(得分:1)

确实,Shell_NotifyIcon不支持在今日屏幕中添加图标。这甚至是功能文档中提到的第一件事之一:

此函数向系统发送消息,以从任务栏状态区域添加,修改或删除特定于应用程序的图标。它不会影响主屏幕上显示的图标。

您可以尝试使用SHNotificationAdd