如何使 WPF 窗口标题的文本长度大于 255 个字符?
Posted
技术标签:
【中文标题】如何使 WPF 窗口标题的文本长度大于 255 个字符?【英文标题】:How to make the text length of the title of a WPF Window greater 255 characters? 【发布时间】:2017-03-25 16:52:13 【问题描述】:在 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 个屏幕扩展的窗口)。
-
如何增加显示字符数?
WPF 窗口标题允许的最大长度是多少?
我试过了
How to set WPF Window's width equal to the content in its Title Bar? 在代码和 XAML 中设置标题栏文本。【问题讨论】:
好问题。然而,你为什么要这样做?看起来您想通过窗口标题进行一些进程间通信... 在应用程序中显示标题,姓名+姓氏+参考号码+电话号码。当姓氏很长时,电话号码会被截断。用户想查看电话号码。 255/4 = 63 客户叫什么名字? 不知道。我刚刚被分配了错误:) 【参考方案1】:似乎 255 个字符是 DefWindowProc()
原生窗口函数的内部限制。
WPF 使用对本机方法的调用来更改窗口的标题:
UnsafeNativeMethods.SetWindowText(new HandleRef(this, CriticalHandle), title);
此方法接受任何长度的字符串,因此应该可以正常工作。这不是 WPF 问题。
但是……
即使您创建一个使用DefWindowProc()
函数的标准和本机 Win32 窗口,您也会观察到相同的行为 - 窗口标题中最多 255 个字符。
Windows 绘制标题栏以响应WM_NCPAINT
消息(以及窗口框架、系统按钮等)。在处理WM_NCPAINT
消息的DefWindowProc()
代码中,代码调用GetWindowText()
来获取窗口的标题字符串。在对GetWindowText()
的调用中,缓冲区的大小似乎是 255 chars(在旧 Windows 中,缓冲区只有 79 bytes)。这将窗口标题的长度限制为 255 个字符。
【讨论】:
以上是关于如何使 WPF 窗口标题的文本长度大于 255 个字符?的主要内容,如果未能解决你的问题,请参考以下文章