Следующий код работает нормально:
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, и, соответственно, в мой вектор ничего не будет записано.
В чем здесь проблема? Заранее спасибо.