如何使WPF窗口标题的文本长度大于255个字符?

在VS2015中创build了WPF应用程序。 将窗口标题设置为长度为290的string。

Title = "123456789 223456789 323456789 423456789 523456789 623456789 723456789 823456789 923456789 133456789 233456789 333456789 433456789 533456789 633456789 733456789 833456789 933456789 143456789 243456789 343456789 443456789 543456789 643456789 743456789 843456789 943456789 153456789 253456789 ";

运行应用程序时,标题被截断为255个字符(跨2个屏幕最大化窗口和窗口)。

拉伸的窗口

  1. 如何增加显示字符的数量?
  2. WPF窗口标题允许的最大长度是多less?

我试过了

  • 如何设置WPF窗口的宽度等于其标题栏中的内容?
  • 在代码和XAML中设置标题栏文本。

Solutions Collecting From Web of "如何使WPF窗口标题的文本长度大于255个字符?"

看来255个字符在DefWindowProc()本地窗口函数中是一个内部限制。

WPF使用调用本地方法来更改窗口的标题:

 UnsafeNativeMethods.SetWindowText(new HandleRef(this, CriticalHandle), title); 

这种方法接受任何长度的字符串,所以应该实际上工作。 这不是一个WPF问题。

但…

即使你创建了一个使用DefWindowProc()函数的标准和原生的Win32窗口,你也会观察到相同的行为 – 窗口标题中最多有255个字符。

Windows绘制标题栏以响应WM_NCPAINT消息(以及窗口框架,系统按钮等)。 在处理WM_NCPAINT消息的DefWindowProc()代码中,代码调用GetWindowText()来获取窗口的标题字符串。 在对GetWindowText()这个调用中,缓冲区的大小似乎是255个字符 (在旧的Windows中,缓冲区只有79 个字节 )。 这将窗口标题的长度限制为255个字符。