【发布时间】:2015-03-16 12:52:34
【问题描述】:
我正在尝试获取缓冲区的长度,但出现未处理的异常错误。 谁能帮帮我。我做错了什么?
case WM_COMMAND:
switch (LOWORD(wp))
{
case IDC_MAIN_BUTTON:
{
char buffer[256];
SendMessage(hEdit,
WM_GETTEXT,
sizeof(buffer) / sizeof(buffer[0]),
(LPARAM*)(buffer));
int bl = strlen(buffer);
MessageBox(NULL,
bl,
"Information",
MB_ICONINFORMATION);
}
break;
}
【问题讨论】:
-
strlen返回size_t类型。将bl更改为size_t类型。 -
SendMessage也返回文本长度。 -
我的猜测是对
SendMessage的调用失败并且没有任何内容被写入buffer。这意味着它可能不是以空值终止的,并且对strlen的调用将读取超出缓冲区的末尾。
标签: c++ c winapi visual-c++ sendmessage