我正在尝试从菜单中读取字符串,如下所示:
char* buf;
int retLength = GetMenuString(menu, IDM_BLABLA, buf, 0, 0);
pclog("Buffer= %s, Length=%i\n", buf, retLength);
输出结果为:
Buffer= , Length=11
这段代码有什么问题,该方法返回正确的非零长度,但是空字符串?
答案 0 :(得分:2)
第四个参数应该是缓冲区的大小。尝试重写为
char buf[100];
int retLength = GetMenuString(menu, IDM_BLABLA, buf, 100, 0);
pclog("Buffer= %s, Length=%i\n", buf, retLength);
通过传入0,因为缓冲区GetMenuString
的大小只返回字符串的长度,所以它正是你告诉它做的。 : - )
分享并享受。
答案 1 :(得分:1)
来自文档:http://msdn.microsoft.com/en-us/library/windows/desktop/ms647983(v=vs.85).aspx
您需要提供一个分配的缓冲区,其中包含max count参数中指定的最大长度。您已向函数表明该最大计数为0
。
您需要为要复制的文本提供缓冲区。
char buff[255];
int retlen = GetMenuString(menu, IDM_BLABLA, buf, 255, 0);