我在Visual Studio 2010中工作。我正在创建一个简单的应用程序,它在托盘中显示图标(任务栏)。我面临的问题是应用程序显示在托盘(任务栏)中,但其图标未显示。我的代码如下:
NOTIFYICONDATA nid;
nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hWnd = hWnd;
nid.uID = 100;
nid.uVersion = NOTIFYICON_VERSION;
nid.uCallbackMessage = WM_MYMESSAGE;
nid.hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_ICON2));
//nid.hIcon =(HICON) hIcon;
wcscpy_s(nid.szTip, L"ultraDefender");
nid.uFlags = NIF_MESSAGE NIF_ICON NIF_TIP;
Shell_NotifyIcon(NIM_ADD, &nid);
请指导我
答案 0 :(得分:2)
nid.uFlags = NIF_MESSAGE NIF_ICON NIF_TIP;
应该是
nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
此外,
MAKEINTRESOURCE(IDI_ICON2)
应该是
IDI_ICON2
如果这是图标的名称
答案 1 :(得分:0)
您应该在填充之前将结构清零...还有其他成员,您不使用非零值会影响您的结果:
NOTIFYICONDATA nid;
ZeroMemory( &nid, sizeof(nid) );
...
另外,正如 noz 所说,你的旗帜需要或者是:
nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;