SetWindowText函数的文档没有对可用作窗口标题的字符串长度设置限制。
在WM_SETTEXT的文档中(通过调用SetWindowText发送的消息),请注意此消息处理的返回值可能是:
FALSE (对于编辑控件), LB_ERRSPACE (对于列表框)或 CB_ERRSPACE (对于组合框)如果不足空格可用于在编辑控件中设置文本。
但是,它没有说明设置窗口标题时的情况。是严格的限制设置,还是由程序员使用常识来提供自己的标题长度限制?
我发布了这个,因为我正在开发一个图形引擎,允许用户为主窗口提供自己的标题。我的想法是我会定义一个常量,例如
const static int MAX_APP_TITLE_LENGTH = /* ??? */;
在我的应用程序类中,并根据此检查用户提供的标题字符串的长度。
如果标题字符串太长,我可以抛出一条警告信息并将其截断,而不是直接将其传递给SetWindowText而产生意想不到的后果。
编辑:在评论中进行了一些讨论之后,即使将一个长度为100,000的字符串用作窗口标题,Windows似乎也不会抱怨,所以这个问题不值得担心(超出当然,输入的基本消毒!)