2016-11-11 54 views
4

在VS2015中创建了WPF应用程序。设置该窗口的标题,以长度290如何使WPF窗口标题的文本长度大于255个字符?

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

我试图

+0

好问题。但是,你为什么要这样做?看起来你想通过窗口标题做一些国际过程通信... – Mat

+0

在应用程序中标题显示,名称+姓氏+参考号码+电话号码。当姓氏很长时,电话号码被截断。用户希望看到电话号码。 – robor78

+0

255/4 = 63客户的名字是什么? – Mat

回答

3

看来255个字符是DefWindowProc()原生窗口函数的内部限制。

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

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

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

但是......

即使你创建标准和本机Win32窗口,使用DefWindowProc()功能,你会看到相同的行为 - 最多255个字符的窗口标题。

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