WM_SETTEXT用于基因
WM_SETTEXT counterpart for substring
正如我从WM_SETTEXT
的文档中获取的那样,它期望"指向null终止的字符串"。
我想知道是否有同等版本适用于非终止终止字符串,大概是乘坐指针(到字符串的开头(和一个数字(表示字符串的长度(,但是我可以什么都没找到。我错过了什么?或者甚至还有更深层的原因为什么没有这样的设施?
没有这样的功能,因为它不是必需的。如果您想将窗口文本设置为程序中字符串的子字符串,则可以将该子字符串复制到新字符串并将其传递给WM_SETTEXT
。
请记住,Win32是低级API。它已经是一个很大的API。如果提供您正在寻找的便利方法,它将更大。如果您希望有这样的方便,那么您就可以自由自己包装Win32功能。
这里也没有任何真正的绩效含义。是的,将子弦复制到null终止的缓冲区将花费您花费,但是与实际发送WM_SETTEXT
Mesage的成本相比,该费用很小,并具有UI更新。
在某种程度上相关的是多行编辑控件的功能。由于这些包含比窗口字幕,单线编辑,静态文本控件等要大得多的文本,因此它们确实允许您在控件内的子串上操作。例如,查看EM_REPLACESEL
消息,该消息使您可以在控件中修改子弦,而不是被迫替换整个文本。出于绩效原因至关重要。
这纯粹是出于C样式原因。编程窗口的主要语言是在设计Winapi时C,C仅与零终止字符串一起使用。
您只需通过指针操作就可以实现想要的目标。
char s[] = "hey there";
char s2[32] = {0};
strncpy(s2, s + 4, 5); // s2 will contain "there ..."
SendMessageA(hwnd, WM_SETTEXT, NULL, (LPARAM)s2);
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 用于访问容器<T>数据成员的正确 API
- 重载操作程序时出错>>用于类中的字符串 memebr
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- C++中的cin.ignore()函数不适用于整个流
- 没有用于初始化C++中的变量模板的匹配构造函数
- 用于C++中带有数组和指针的循环
- 为什么它不适用于Visual 2019的原因
- 使用在用于SFINAE的void_t中具有参数的方法
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 重载==不适用于二进制树
- Insert函数不适用于2 if语句C++
- 用于矢量处理的多个线程
- 使外部项目可用于find_package CMake
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- 为什么模数运算符不适用于该代码
- 并行用于C++17中数组索引范围内的循环
- 将fold表达式与std::一起用于两个元组
- 在用于格式4的arm模拟器中实现功能时的一个问题