设计一个适用于所有分辨率的 MFC 应用程序?

Lau*_*ren 5 scaling mfc resolution visual-c++

我目前正在为 Windows 设计我的第一个 GUI。我正在使用 MFC 和 Visual Studio 2008。我一直在设计我的程序的显示器具有 1680x1050 的原始分辨率。如果我编译并将我的程序发送给我的一位同事以在他们的计算机上运行(通常是一台以 1024x768 运行的笔记本电脑),我的程序将无法显示在他们的屏幕上。

我一直在努力阅读如何设计 MFC 应用程序,以便它可以在所有分辨率下运行,但我一直在发现误导性信息。在我看来,DLU 似乎应该为您调整应用程序的大小,并且唯一应该遇到问题的情况是当您拥有一个需要担心其分辨率的实际位图时。但如果是这种情况,当我将显示器设置为较低的分辨率时,为什么我的程序不再适合我的屏幕?我的程序没有“缩小”以占用与它在 1680x1050 时使用的屏幕空间相同的数量,而是变得巨大而颗粒状。

这里的“明显”解决方案是将我的分辨率设置为 1024x768 并重新设计我的程序以适应屏幕。除了我已经尽可能地压缩对话框中的所有内容,以尝试让我的程序适合以 1024x768 运行的屏幕。我的对话框字体设置为 Microsoft Sans Serif 8,但在 1024x768 下运行时仍然显得很大(远大于 8 磅)。

我知道必须有一种方法可以让我的程序保持相同的缩放比例……对吗?或者这是解决问题的错误方法?设计 MFC 程序以便它可以在多种分辨率(例如 800x600 及更高)上运行的正确/标准方法是什么?

Dan*_*eer 3

我假设您的应用程序 GUI 是基于对话框的(主窗口是一个对话框)?

在这种情况下,您就会遇到问题,因为正如您所发现的,MFC 不支持正确调整对话框的大小。您的选择是:

  • 重新设计您的 GUI 以使用 SDI 或 MDI GUI。
  • 使用对话框调整大小扩展。有很多可用的,对于一些非常好的建议,请参阅这个问题。另一种选择是thisthis
  • 不要使用MFC。wxWidgets 对对话框大小调整有更好的支持。