我有一个(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;

        }
    }

09-06 22:30