如何在对话框的左下角以 16 x 16 的尺寸显示 IDI_INFORMATION 图标?

How can I display the IDI_INFORMATION icon at 16 x 16 in the lower left of my dialog?

当你使用 CTaskDialog 时,你可以设置页脚图标,它是 16 x 16。我想在我自己的对话框中做类似的事情:

目前我自己的对话框底部有一个静态资源。


我知道我可以这样加载信息图标:

HICON hInfo = LoadStandardIcon(IDI_INFORMATION);
  1. 我们如何将其加载为 16 x 16?
  2. 我们如何在对话框的左侧显示它?

如果您(希望)不需要支持 Windows XP,您可以使用 LoadIconWithScaleDown

例如:

HICON hicon;
HRESULT hr = LoadIconWithScaleDown(NULL, (PCWSTR)IDI_INFORMATION,
             GetSystemMetrics(SM_CXICON) / 2, GetSystemMetrics(SM_CYICON) / 2,  &hicon);
...

这为您提供了额外的好处,即加载现代版本的图标而不是旧的丑陋图标。另见

您可以使用 Picture Control 来做到这一点,并在需要时放置它。作为代码,您可以这样做:

CStatic  myicon;
myicon.Attach(GetDlgItem(ID_STATIC_ICON));
myicon.SetIcon(static_cast<HICON>(::LoadImage(nullptr, MAKEINTRESOURCE(IDI_MYICON), IMAGE_ICON, 16, 16, 0)));

我没有测试代码,但应该可以。