将编辑控件的行保存为TCHAR的矢量

C++ Windows: Saving the line of an edit control into a vector of TCHAR

本文关键字:TCHAR 编辑 控件 保存      更新时间:2023-10-16

下面的代码可以正常工作:

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('');
    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(''));
    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,因此,没有任何东西将被写入我的向量。

这里有什么问题?

来自文档:

指向接收该行副本的缓冲区的指针。之前发送消息时,将该缓冲区的第一个字设置为大小为TCHAR s,缓冲区.