我在 Window 8.1 的 MFC 应用程序中有几个大工具栏。现在,当应用程序移动到具有不同 DPI 设置的监视器时,我正在使用以下代码使用当前 DPI 缩放替换每个按钮的图像。
const auto& toolbars = m_cToolBarManager.GetToolbar();
for (const auto& toolbar : toolbars)
{
CMFCToolBarImages* images = toolbar->GetImages();
for (int index = 0; index < toolbar->GetCount(); ++index)
{
CMFCToolBarButton* button = (CMFCToolBarButton*)toolbar->GetButton(index);
TRY_POINTER(button);
if (button->m_nStyle & TBBS_SEPARATOR)
{
continue;
}
images->AddIcon(LoadScaledIcon(button->m_nID));
}
}
每次将应用程序移动到不同的监视器时,都必须为按钮加载和设置数百张图像。此外,由于作为资源嵌入的大量图像,应用程序的可执行文件变得更大。
有没有更有效的方法来做到这一点?