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

rob*_*r78 5 c# windows wpf xaml

在VS2015中创建了WPF应用程序。将窗口的标题设置为长度为290的字符串。

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窗口标题允许的最大长度是多少?

我试过了

dym*_*oid 5

255个字符似乎是本DefWindowProc()机窗口函数的内部限制。

WPF使用对本机方法的调用来更改Windows的标题:

UnsafeNativeMethods.SetWindowText(new HandleRef(this, CriticalHandle), title);
Run Code Online (Sandbox Code Playgroud)

此方法接受任何长度的字符串,因此应该可以正常工作。这不是WPF问题。

但...

即使创建使用该DefWindowProc()功能的标准本机Win32窗口,您也会观察到相同的行为-窗口标题中最多255个字符。

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