2

我想知道我应该如何处理 WinAPI/MFC 下的 GUI 布局。

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

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

我偶然发现了一篇关于基于字体http://support.microsoft.com/kb/145994/en-us计算 DLU 的文章,但还在某处看到了一个警告,即在某些情况下对话框可能具有非系统字体,因此这种方法是不是很安全。另外,这篇文章似乎只关注英文字符,而不考虑 unicode 空间中可能更宽的所有其他字符?

有没有人在这个方向进行过研究并找到了更好的方法?

PS:没有 Winforms/WPF/Delphi,要求。

4

2 回答 2

2

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

它不需要直接支持控件,您仍然可以将其作为自定义控件插入并在属性页中填写窗口类来定位。例如,这就是我在 VS2005 中插入链接控件的方式:作为具有“SysLink”类的自定义控件。

于 2010-11-02T23:05:20.157 回答
2

MapDialogRect(文中提到)是Windows用来将对话框资源中的对话框单位转换为像素单位的函数。MapDialogRect 有效(GetDlgBaseUnits 失败),因为它给定了对话框的实际句柄,并且可以向它发送WM_GETFONT消息以检索将呈现对话框的实际字体。

于 2010-11-03T09:07:03.637 回答