缩放CMFCToolbar以进行DPI更改

时间:2014-11-05 11:02:05

标签: winapi dpi windows-applications cmfctoolbar

我在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));
    }
}

每次将应用程序移动到不同的监视器时,都必须为按钮加载和设置数百个图像。此外,由于大量图像作为资源嵌入,应用程序可执行文件变得更大。

有更有效的方法吗?

0 个答案:

没有答案