Мне нужно добавить текст в элемент управления редактирования win32. У меня есть рабочая функция для этого, но текст, который печатается в элементе редактирования, является бредом, почему? пример кода взят из примера Microsoft из здесь
void settext(HWND hDlg,std::string s)
{
//std::wstring ws;
//ws.assign( s.begin(), s.end() );
//LPWSTR pwst = &ws[0];
//// get temporary LPCWSTR (pretty safe)
//LPCWSTR pcwstr = ws.c_str();
//SetDlgItemText(hWndEdit, IDC_EDIT1,pcwstr);
HWND hWndEdit = GetDlgItem (hDlg, IDC_EDIT1);
LPSTR pst = &s[0];
int ndx = GetWindowTextLength (hWndEdit);
SetFocus (hWndEdit);
#ifdef WIN32
SendMessage (hWndEdit, EM_SETSEL, (WPARAM)ndx, (LPARAM)ndx);
#else
SendMessage (hWndEdit, EM_SETSEL, 0, MAKELONG (ndx, ndx));
#endif
SendMessage (hWndEdit, EM_REPLACESEL,0,(LPARAM)pst);
}
и из вызова DlgProc im:
std::string ss("wwwwww");
settext(hwnd,ss);
обновить
, даже если я сделаю так, как предлагается здесь:
SendMessage (hWndEdit, EM_REPLACESEL,0,(LPARAM)s.c_str());
которые проходят компиляцию, но все же напечатанные символы являются тарабарскими
и если я это сделаю:
LPSTR pst = s.c_str()
компиляция не проходит ошибка:
ошибка C2440: 'инициализация': невозможно преобразовать из 'const char *' в 'LPSTR'