是否可以关闭 MessageBox() 中的自动换行?

Is it possible to turn off automatic line wrapping in MessageBox()?

Win32 的 MessageBox() 似乎会在文本超过一定宽度后自动换行。但这似乎有些不稳定,我很难弄清楚它到底发生在什么时候。考虑示例文本:

Hello World this is a test Hello World this is a test Hello World this is a test Hello World this is a test Hello World this is a test

我在设置 MB_YESNO 时得到这个结果:

添加MB_ICONQUESTION样式时,换行突然出现在不同的位置,看起来像这样:

所以看起来有某种固定的 window 宽度,大约 470 像素,之后文本将被换行。但这似乎不是全部真相,因为在使用wxWidgets的wxMessageBox()函数时,它突然变成了这样:

所以我想问两件事:

  1. 是否可以关闭自动换行,以便 MessageBox() 仅在文本中有换行符时换行?

  2. 如果无法关闭自动换行,是否有关于 MessageBox() 何时换行的文档,因为目前这似乎有点不一致,我正在尝试弄清楚这里的规则是什么...

没有关于如何 MessageBox() auto-wraps 长文本的文档。它为您提供的唯一选项是通过在文本本身中放置明确的换行符来控制文本的换行方式。

不考虑自动换行,如果你想控制对话框的大小,使用TaskDialogIndirect() instead. The TASKDIALOGCONFIG结构有一个cxWidth字段:

The width of the task dialog's client area, in dialog units. If 0, the task dialog manager will calculate the ideal width.