Передача значения векторной строки в win32 Функция SetWindowText в C ++ - PullRequest
0 голосов
/ 15 марта 2011

Как я могу передать значение векторной строки в функцию Win32 SetWindowText в C ++.

, пока это мой код для этого:

vector <string> filelist;
string path;
path = Text;
filelist = GetPath(path);
SetWindowText(EditShow,filelist);

Ответы [ 2 ]

5 голосов
/ 15 марта 2011

Вы можете объединить их все в одну строку и передать ее в виде c-строки:

#include <sstream>   // for std::stringstream
#include <algorithm> // for std::copy
#include <iterator>  // for std::ostream_iterator

std::stringstream buffer;
std::copy(filelist.begin(), filelist.end(), 
          std::ostream_iterator<std::string>(buffer, "\n");
SetWindowText(EditShow,buffer.str().c_str());
1 голос
/ 15 марта 2011

Во-первых, вы, кажется, пытаетесь вставить список строк в SetWindowText.

, поскольку каждое окно может иметь только один заголовок, SetWindowText не может обработать список. Вместо этого вы должны извлечь одну строку из списка и использовать ее в качестве параметра для SetWindowText

string windowText = filelist[0];

Документация от SetWindowText показывает, что функция ожидает LPCTSTR lpString.

Поскольку сейчас у нас есть string, мы должны использовать

LPCTSTR title = windowText.c_str();

Возможно, эта строка не скомпилируется со следующим сообщением об ошибке:
невозможно преобразовать из 'const char *' в 'LPCTSTR'
Вам придется изменить набор символов по умолчанию в вашем проекте. Вот как вы это делаете

Наконец вы можете позвонить

SetWindowText(EditShow,title);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...