0

我在 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);

请指导我

4

2 回答 2

2
nid.uFlags = NIF_MESSAGE NIF_ICON NIF_TIP;

应该

nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;

还,

MAKEINTRESOURCE(IDI_ICON2)

应该

IDI_ICON2    

如果这是图标的名称

于 2013-09-05T11:39:55.607 回答
0

您应该在填写之前将结构清零......还有其他您未使用的成员,其中非零值会影响您的结果:

NOTIFYICONDATA nid;
ZeroMemory( &nid, sizeof(nid) );
...

此外,正如noz所说,您的标志需要是 or'd:

nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
于 2013-09-05T12:27:33.550 回答