2

如果行的宽度超过其父窗口的宽度,我想将复选框的现有文本包装成多行。我不确定该怎么做。

我要显示复选框字符串的图像

裁剪字符串的图像,仅在调整窗口大小或最大化时显示

4

2 回答 2

0

恐怕你会遇到这个问题。

制作多行复选框的设置是ES_MULTILINE,如果你看这里,你会看到它声明:

要使用CreateWindowCreateWindowEx函数创建编辑控件,请指定 EDIT 类、适当的窗口样式常量以及以下编辑控件样式的组合。创建控件后,这些样式无法修改,除非另有说明

因此,在我看来,您有三种前进方式,具体取决于您认为对您来说最好或最优雅的方式。

  1. 无论如何,将资源编辑器中的控件设置为多行。然后没关系,会换行。无需更改设置。

  2. 实现所需的功能来限制窗口可以缩小到的大小。如果你有兴趣,我可以告诉你怎么做。这样,如果您正确设置控件的调整大小属性,它可以调整大小,但只会减小已知尺寸(即:您在资源编辑器中创建的尺寸)。

  3. 可能在同一个地方有两个控件,一个是多行的,一个是单行的。当您决定要显示哪个时,交换可见性。但我认为这是一个坏主意,有点头疼,不值得麻烦。

恕我直言,我会同时执行想法 1 和 2,并且我很乐意扩展我的答案以提供更多信息。

更新

看了你的图片和关于翻译的评论,然后有第四个想法。如果您使用第三方应用程序来管理翻译并使用附属 DLL 文件,那么您可以按语言调整资源。由于某些窗口的冗长性质,我有时不得不将其默认宽度设置得更宽。

于 2017-03-18T16:07:16.053 回答
0

我为复选框设置了 BS_MULTILINE。窗口的最小尺寸是固定的,但我只希望复选框适合它。我希望它与其他标签在同一行中至少显示一个单词,并在第二行显示剩余单词。所以我正在检查第一行的总宽度是否大于窗口的宽度,然后显示带有 \r\n 的字符串,否则显示普通字符串。但是,我想将复选框的第一行或第一个单词与复选框对齐,其余单词应位于第一个单词下方。目前,复选框位于两行之间,看起来很奇怪。无论如何我可以做到这一点吗?

于 2017-03-19T16:30:25.213 回答