我尝试使用MFC代码在状态栏中显示长字符串,如下所示:
// i've set only one pane in the status bar using CStatusBar::SetIndicators()
pFrameWnd->m_wndStatusBar.SetPaneText( 0, szText, TRUE );
但状态栏中显示的字符串会被截断为127个字符。
由于MFC类成员CStatusBar::SetPaneText()在内部使用消息SB_SETTEXT,我想知道我们可以使用SB_SETTEXT在状态栏中显示的数字字符是否有任何限制?
我用谷歌搜索并发现一些讨论论坛说明确实有一个限制,但没有一个人对MSDN文档提出相同的陈述。
那么,如果字符数有限制,是否有人可以提供MSDN链接来支持他们的答案?
另外,如果确实存在限制,有没有办法解决这个问题,并在状态栏的单个窗格中显示更多字符数?
答案 0 :(得分:0)
一个有根据的猜测:问题是这些控件在内部限制为32K
个字符,因为内部限制为64K
个字节。这是Win3.1旧版(或Win95)出现的几种情况。当时Windows支持的实模式从称为本地堆的东西中抽取内存。我无法找到您实际控制的信息,但这里只有another一个。
SB_SETPARTS
将状态栏的部分数量限制为255的通知,因此简单的数学表明每个部分127 = 32K/256
是合理的限制。可以想象他们可以处理一个更动态的分配协议,但也可以想象可能导致的各种极端情况。
我的猜测是使用此控件无法绘制更多内容。我建议你推广自己的,可能是分类的静态'之一。
好的,还有另一件事可以尝试踢。尝试使用ANSI程序,每个窗格可以执行255个ANSI字符。