不要在 mfc 中更改与窗口 dpi 相关的对话框字体?



我有一个(355,99)尺寸的对话框,它只有一个菜单和任务栏,所以它是小尺寸的。它的显示在100% dpi时很好,但在125% dpi时,任务上的一些控制被切断。如何根据以下函数

中的dpi缩放它们
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
   CMDIFrameWnd::OnGetMinMaxInfo(lpMMI);
   lpMMI->ptMinTrackSize = CPoint(355,99); // set minimum size  
}

我自己找到了解决方案,所以我把它贴出来帮助别人。对于我的问题,我已经找到了系统的dpi,并设置了相应的对话框大小。下面是我的代码:

  void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)  
  {
      CMDIFrameWnd::OnGetMinMaxInfo(lpMMI);
      HDC hdcScreen = ::GetDC(NULL);
      int iDPI = -1; // assume failure
      if (hdcScreen) 
      {
          iDPI = ::GetDeviceCaps(hdcScreen, LOGPIXELSX);
          ::ReleaseDC(NULL, hdcScreen);
       }
       switch(iDPI)
       {
          case 96:
              lpMMI->ptMinTrackSize = CPoint(355,99);
              break;
          case 120:
              lpMMI->ptMinTrackSize = CPoint(360,115);
              break;
          case 144:
            lpMMI->ptMinTrackSize = CPoint(365,134);
            break;
           case 196:
             lpMMI->ptMinTrackSize = CPoint(370,150);
             break;
            default:
              lpMMI->ptMinTrackSize = CPoint(355,99);
              break;
        }
    }

相关内容

  • 没有找到相关文章

最新更新