我正在将一个旧的(Visual Studio 6.0)应用程序移植到Visual Studio 2012,以便添加一些增强功能。资源视图中的应用程序图标显然有2个版本的图标,32x32 4位位图和16x16 4位位图。
在主AppDlg.cpp中有2次调用SetIcon()
,如下所示(默认情况下由MFC应用程序向导创建):
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
但是,应用程序对话框窗口左上角显示的图标较大,缩小为16x16而不是小图标。它也发生在系统托盘中显示的图标上。
在Windows资源管理器中查看时,它似乎使用了正确的小文件(详细视图/列表视图)。所以它在某些情况下选择小的。
如何选择对话框和系统托盘左上角的较小的16x16图标?
答案 0 :(得分:2)
已知微软的bug。请参阅this讨论。 (如果你不想阅读,只需注释掉SetIcon(m_hIcon,FALSE)行就可以了)。请注意,SetIcon仅在对话框标题栏(小图标)上设置图标,并在使用Alt-tab(大图标)时设置
您在Windows资源管理器中看到的图标是主要的应用程序图标(您的rc文件中ID最低的图标)。它与主对话框的SetIcon()方法
无关系统托盘中的图标完全不同。通常情况下,您可以使用Shell_NotifyIcon API来设置图标,但我敢打赌,您的项目将有一个帮助类,它设置了图标CSystemTray,而Chris Maunder是许多程序员使用的流行图标。只需在程序中搜索Shell_NotifyIcon,即可确切了解系统托盘图标所使用的资源