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

5

使用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个屏幕)。

Stretched Window

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

我尝试过


好问题。但是你为什么要这样做呢?看起来你想通过窗口标题进行一些进程间通信... - Mat
在应用程序中,标题显示姓名+姓氏+参考号码+电话号码。当姓氏很长时,电话号码会被截断。用户希望看到完整的电话号码。 - robor
255/4 = 63。客户的名字是什么? - Mat
3
不知道,我刚刚被分配处理这个 bug :) - robor
1个回答

5
似乎在DefWindowProc()本地窗口函数中,255个字符是一种内部限制。
WPF通过调用本地方法来更改窗口的标题:
UnsafeNativeMethods.SetWindowText(new HandleRef(this, CriticalHandle), title);

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

但是...

即使您创建了一个使用DefWindowProc()函数的标准和本地Win32窗口,您也会观察到相同的行为-窗口标题最多255个字符。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接