以下代码可以正常工作:
int iLength = SendMessage(hWndEdit, EM_LINELENGTH, 0, 0);
if(iLength > 0) {
TCHAR* szBuffer = new TCHAR[iLength+1];
iLength = SendMessage(hWndEdit, EM_GETLINE, 0, (LPARAM)szBuffer);
szBuffer[iLength] = TEXT('\0');
MessageBox(hWnd, szBuffer, TEXT("Edit content"), MB_OK);
delete[] szBuffer;
}
现在,我想使用
std::vector<TCHAR>
做同样的事情:int iLength = SendMessage(hWndEdit, EM_LINELENGTH, 0, 0);
if(iLength > 0) {
std::vector<TCHAR> data(iLength+1, TEXT('\0'));
iLength = SendMessage(hWndEdit, EM_GETLINE, 0, (LPARAM)&data[0]);
MessageBox(hWnd, &data[0], TEXT("Edit content"), MB_OK);
}
它可以编译,但是在
iLength = SendMessage(hWndEdit, EM_GETLINE, 0, (LPARAM)&data[0]);
处,变量iLength
将始终设置为0,因此,不会将任何内容写入向量中。这里有什么问题?提前致谢。
最佳答案
从the documentation:
指向接收该行副本的缓冲区的指针。之前
发送消息时,将此缓冲区的第一个字设置为
缓冲区的TCHAR
s。