该函数SetWindowText函数的文档没有对可以用作窗口标题字符串的长度设置限制。
在WM_SETTEXT(通过调用SetWindowText发送的消息)的文档中,注意到该消息的处理返回值可能是:
如果没有足够的空间来设置编辑控件中的文本,则为FALSE(对于编辑控件),LB_ERRSPACE(对于列表框)或CB_ERRSPACE(对于组合框)。
但是,它并没有说明设置窗口标题的情况。是否设置了严格的限制,还是由程序员使用常识提供自己的标题长度限制?
之所以这样发布,是因为我正在开发一种图形引擎,允许用户为主窗口提供自己的标题。我的想法是定义一个常量,例如
const static int MAX_APP_TITLE_LENGTH = /* ??? */;
Run Code Online (Sandbox Code Playgroud)
在我的应用程序类中,并对照此检查用户提供的标题字符串的长度。
如果标题字符串太长,我可以抛出警告消息并截断它,而不是将其直接传递到SetWindowText中,从而产生意想不到的后果。
编辑:在评论中进行了一些讨论之后,即使将长度为100,000的字符串用作窗口标题,Windows似乎也不会抱怨,因此,这个问题不值得担心(当然,除了输入的基本清理之外)!
小智 3
从技术上讲,标题大小没有限制,但 lpClassName 字段严格限制为 256 个字符(我不希望您认为您可能拥有无限的类名,并且您的代码崩溃。)
来源:https://learn.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-wndclassexw
归档时间: |
|
查看次数: |
2214 次 |
最近记录: |