WinAPI的UI布局噩梦

WinAPI的UI布局噩梦,winapi,mfc,layout,dpi,Winapi,Mfc,Layout,Dpi,我想知道在WinAPI/MFC下如何处理GUI布局 在理想情况下,我应该通过资源编辑器创建表单/对话框,一切都应该正常工作。在现实世界中,对话框编辑器是来自冰河时代的古老庞然大物,不支持大多数comctl32控件 这就是问题的症结所在。对话框编辑器使用DLU单位,当我在运行时创建新控件时,我必须用像素偏移量表示它们 我偶然发现了一篇关于基于字体计算DLU的文章,但也看到了一条警告,在某些情况下对话框可能有非系统字体,因此这种方法不是很安全。另外,本文似乎只关注英文字符,而不考虑unicode空间

我想知道在WinAPI/MFC下如何处理GUI布局

在理想情况下,我应该通过资源编辑器创建表单/对话框,一切都应该正常工作。在现实世界中,对话框编辑器是来自冰河时代的古老庞然大物,不支持大多数comctl32控件

这就是问题的症结所在。对话框编辑器使用DLU单位,当我在运行时创建新控件时,我必须用像素偏移量表示它们

我偶然发现了一篇关于基于字体计算DLU的文章,但也看到了一条警告,在某些情况下对话框可能有非系统字体,因此这种方法不是很安全。另外,本文似乎只关注英文字符,而不考虑unicode空间中可能更宽的所有其他字符

有人在这方面做过研究并找到了更好的方法吗

备注:编号:Winforms/WPF/Delphi,要求

对话框编辑器是来自冰河时代的古老庞然大物,不支持大多数comctl32控件


它不需要直接支持控件,您仍然可以通过将其作为自定义控件插入并填充属性页中的窗口类来使用它进行定位。例如,我就是这样在VS2005中插入链接控件的:作为类为“SysLink”的自定义控件。

(本文中提到)是Windows用于将对话框资源中的对话框单位转换为像素单位的函数。MapDialogRect可以工作(GetDlgBaseUnits失败的地方),因为它给了对话框一个实际的句柄,可以向它发送一个
WM_GETFONT
消息来检索对话框将使用的实际字体。

Hmm,我怎么会错过它,所有的文章似乎都有不同的长度,但我以前没有见过这种方法,谢谢!