使用SB_SETTEXT在状态栏中显示的字符数是否有限制?

时间:2016-01-27 14:45:25

标签: c++ winapi mfc

我尝试使用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链接来支持他们的答案?

另外,如果确实存在限制,有没有办法解决这个问题,并在状态栏的单个窗格中显示更多字符数?

1 个答案:

答案 0 :(得分:0)

一个有根据的猜测:问题是这些控件在内部限制为32K个字符,因为内部限制为64K个字节。这是Win3.1旧版(或Win95)出现的几种情况。当时Windows支持的实模式从称为本地堆的东西中抽取内存。我无法找到您实际控制的信息,但这里只有another一个。

SB_SETPARTS将状态栏的部分数量限制为255的通知,因此简单的数学表明每个部分127 = 32K/256是合理的限制。可以想象他们可以处理一个更动态的分配协议,但也可以想象可能导致的各种极端情况。

我的猜测是使用此控件无法绘制更多内容。我建议你推广自己的,可能是分类的静态'之一。

好的,还有另一件事可以尝试踢。尝试使用ANSI程序,每个窗格可以执行255个ANSI字符。