如果行的宽度超过其父窗口的宽度,我想将复选框的现有文本包装成多行。我不确定该怎么做。
2 回答
恐怕你会遇到这个问题。
制作多行复选框的设置是ES_MULTILINE
,如果你看这里,你会看到它声明:
要使用CreateWindow或CreateWindowEx函数创建编辑控件,请指定 EDIT 类、适当的窗口样式常量以及以下编辑控件样式的组合。创建控件后,这些样式无法修改,除非另有说明。
因此,在我看来,您有三种前进方式,具体取决于您认为对您来说最好或最优雅的方式。
无论如何,将资源编辑器中的控件设置为多行。然后没关系,会换行。无需更改设置。
实现所需的功能来限制窗口可以缩小到的大小。如果你有兴趣,我可以告诉你怎么做。这样,如果您正确设置控件的调整大小属性,它可以调整大小,但只会减小已知尺寸(即:您在资源编辑器中创建的尺寸)。
可能在同一个地方有两个控件,一个是多行的,一个是单行的。当您决定要显示哪个时,交换可见性。但我认为这是一个坏主意,有点头疼,不值得麻烦。
恕我直言,我会同时执行想法 1 和 2,并且我很乐意扩展我的答案以提供更多信息。
更新
看了你的图片和关于翻译的评论,然后有第四个想法。如果您使用第三方应用程序来管理翻译并使用附属 DLL 文件,那么您可以按语言调整资源。由于某些窗口的冗长性质,我有时不得不将其默认宽度设置得更宽。
我为复选框设置了 BS_MULTILINE。窗口的最小尺寸是固定的,但我只希望复选框适合它。我希望它与其他标签在同一行中至少显示一个单词,并在第二行显示剩余单词。所以我正在检查第一行的总宽度是否大于窗口的宽度,然后显示带有 \r\n 的字符串,否则显示普通字符串。但是,我想将复选框的第一行或第一个单词与复选框对齐,其余单词应位于第一个单词下方。目前,复选框位于两行之间,看起来很奇怪。无论如何我可以做到这一点吗?