如何检查窗口中Row的长度或宽度是否大于其父窗口C ++的宽度

时间:2017-03-17 14:38:58

标签: c++ checkbox mfc cbutton

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

The image I want to show the checkbox string

The image where the string is cropped and only shows if window is resized or maximized

2 个答案:

答案 0 :(得分:0)

我担心你会遇到这个问题。

复选框多行的设置为ES_MULTILINE,如果您查看here,您会看到它指出:

  

要使用 CreateWindow CreateWindowEx 功能创建编辑控件,请指定EDIT类,相应的窗口样式常量以及以下编辑控件样式的组合。 控件创建后,除非另有说明,否则无法修改这些样式

所以,在我看来,你有三种前进方式,取决于你认为对你最好或最优雅的方式。

  1. 无论如何,将资源编辑器中的控件设置为多行。然后它不重要并将包装。无需更改设置。

  2. 实现所需的功能以限制窗口可以缩小的大小。我可以告诉你如果你感兴趣的话。这样,如果正确设置控件调整大小属性,它可以调整大小,但只减少已知维度(即:在资源编辑器中创建它的维度)。

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

  4. 恕我直言,我会同时做两个想法,我很乐意扩展我的答案以提供更多信息。

    更新

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

答案 1 :(得分:0)

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