【问题标题】:Windows 7 application taskbar icons, font size and shortcutsWindows 7 应用程序任务栏图标、字体大小和快捷方式
【发布时间】:2011-02-10 11:57:18
【问题描述】:

我们遇到了一些涉及 Windows 7 为不同应用程序显示的任务栏图标的行为。我想知道是否有人可以对此有所了解:

  • Windows 7 设置为 font-size = 110%。
  • 两个 MFC 对话框应用程序 A.exe 和 B.exe 中嵌入了完全相同的 .ico 资源。
  • A.exe 有一个与之关联的快捷方式; B.exe 没有。
  • 运行 A.exe 会在任务栏上显示一个漂亮的内插图标。
  • 运行 B.exe 在任务栏上显示不同的图标(未插入)。

我们希望 A.exe 和 B.exe 的任务栏上显示相同的图标 - 这很容易通过创建 B.exe 的快捷方式来实现相同的行为。不过,我真的很想了解更多关于发生了什么。

为了了解发生了什么,我在 B.exe 中处理了 WM_GETICON 消息,根据 GetSystemMetrics SM_CXICON/SM_CYICON 或 SM_CXSMALLICON/SM_CYSMALLICON 大小给出的大小返回一个图标。但是,这似乎并没有影响任务栏中显示的图标。

我也知道我们可以创建一个 .ico 文件,以将许多不同大小的图标构建到 B.exe 中 - 也许这会改进一些事情,但这是一个乏味的解决方案!

有什么想法吗?

【问题讨论】:

  • “A.exe 有与之关联的快捷方式;B.exe 没有”是什么意思。这里关联的快捷方式是什么意思?...
  • 创建可执行的 A.exe 后,我使用 Windows 资源管理器浏览到包含 A.exe 的文件夹,单击 A.exe 将其选中,右键单击并选择“创建快捷方式” ' 选项。
  • 你确定A.exe和B.exe是一样的吗?特别是,A.exe 是否有一个指定 dpiAware = true 的清单?
  • 原来的问题是在一个工作的应用程序中。然而,为了测试发生了什么,我们创建了 A.exe 和 B.exe,它们是 Visual Studio 2008 中的两个独立的 MFC 对话框应用程序。我们可能使用了项目默认值,并且在没有任何更改的情况下构建了这两个应用程序,除了我确保.ico 资源在两个项目中是相同的图标。我没有遇到 dpiAware 清单设置 - 我会检查一下,看看它是如何影响这个问题的。

标签: winapi mfc windows-7 taskbar


【解决方案1】:

刚刚遇到以下简单场景的这个问题(全部在win7上):

  1. 创建带有图标 B 的 A.exe
  2. 使用不同的图标 C 创建与 A.exe 关联的 B.lnk(通过 winapi CreateLink)
  3. 单击 B.lnk 运行。在某些win7机器上,任务栏的图标是C。但是,在其他一些机器(也是win7)上,它是B。

如果图标是C,甚至无法通过以下代码更改:

const HANDLE bigicon = ::LoadImage(::GetModuleHandle(0), MAKEINTRESOURCE(IDI_TO_ICON), IMAGE_ICON, 256, 256, 0);
if (bigicon) {
    ::SendMessage(theMainWnd, WM_SETICON, ICON_BIG, (LPARAM)bigicon);
    ::SendMessage(GetWindow(theMainWnd, GW_OWNER), WM_SETICON, ICON_BIG, (LPARAM)bigicon);
}
const HANDLE smallicon = ::LoadImage(::GetModuleHandle(0), MAKEINTRESOURCE(IDI_TO_ICON_SMALL), IMAGE_ICON, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), 0);
if (smallicon) {
    ::SendMessage(theMainWnd, WM_SETICON, ICON_SMALL, (LPARAM)smallicon);
    ::SendMessage(GetWindow(theMainWnd, GW_OWNER), WM_SETICON, ICON_SMALL, (LPARAM)smallicon);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-22
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 2010-10-28
    • 1970-01-01
    相关资源
    最近更新 更多