CWnd图标发生了什么

时间:2010-12-22 09:09:08

标签: windows icons

我有一个动态创建的CWnd窗口,看起来标题栏区域和任务栏的图标是随机选择的。

要设置图标,请致电:

// Set the icon for this dialog.  The framework does this automatically when the application's main window is not a dialog
m_hIcon = AfxGetApp()->LoadIconW(IDI_ICON);
SetIcon(m_hIcon, TRUE);         // Set big icon
SetIcon(m_hIcon, FALSE);        // Set small icon

与在MFC样本中一样,但似乎总是选择并缩小32x32图标,即使有其他更接近的匹配可用。标题栏中的图标实际上只有16x16,但它是从32x32版本创建的。

当32x32图标比16x16图标更详细时,这会导致混乱,因为缩小图标看起来像模糊。

CFrameWnd窗口似乎有某种不同的行为,因为它们似乎选择了更接近的匹配。

有没有人知道在标题栏中强制显示较小图标的解决方案,以便我可以为W7任务栏保留较大的图标?

1 个答案:

答案 0 :(得分:2)

这是LoadIcon,而不是LoadIconW,这是偶然编译的。 MFC方法使用LoadIcon()API函数。从SDK文档:

  

LoadIcon只能加载一个图标   大小符合SM_CXICON和   SM_CYICON系统度量值。使用   LoadImage函数加载图标   其他尺寸。

请改用LoadImage(),以便传递适当的大小。进行两次调用以检索大型和小型版本。或者将小图标图像存储在另一个带有其他资源ID的图标中。