2015-04-14 2 views
0
char arbc[60]; 
cout << "Message: "; 
cin.getline(arbc+'\0',sizeof(arbc)+1); 
system("pause"); 
PostMessage(hwndch,WM_SETTEXT,(WPARAM)*arbc,0); 

Таким образом, hwndch является дочерним элементом окна, а дочерний элемент является текстовым полем, а родительский - это основная форма окна. Проблема заключается в том, что WM_SETTEXT не устанавливает текст текстового поля в строку символов. Я знаю, что это не проблема с windowchild, потому что WM_CHAR выводит по меньшей мере 1 символ в текстовое поле. Примечание: Я изменяю ручки другого процесса.SendMessage to TextBox Window Ребенок в C++ не работает

+0

Вы не следовать документации и смешались 'wParam' и' lParam'. Последняя также ожидает строку с нулевым завершением указателя, а не символ, маскирующийся как указатель. – chris

ответ

3

Вы не можете использовать PostMessage с WM_SETTEXT. Это синхронное сообщение. Ваша проблема еще больше, когда окно находится в другом процессе. Система должна вывести текст из вашего процесса в другой процесс. Это не может быть сделано с асинхронным сообщением.

Вместо этого используйте SendMessage.

другие Ваши проблемы включают в себя по крайней мере следующее:

  • wParam аргумент является неправильным. Этот параметр игнорируется. Pass (LPARAM)arbc - lParam. documentation вполне понятен.
  • Вы не должны использовать C-строки в любом случае. Используйте std::string, а затем c_str().
  • Неправильное использование вами sizeof. Ваше использование getline тоже неверно.
  • Вы, похоже, смущены тем, какую функцию вы вызываете. Название говорит SendMessage, код говорит PostMessage.

Вы, вероятно, хотите что-то вдоль этих линий:

std::cout << "Message: "; 
std::string msg; 
std::getline(std::cin, msg); 
SendMessage(hwndch, WM_SETTEXT, 0, (LPARAM)msg.c_str()); 
+0

Не забудьте построить 'arbc + '\ 0''. – HerrJoebob

+0

@Herr Что насчет этого? Мне кажется, что это абсурд для меня –

+0

Да, это была точка ... для OP: вы добавляете числовое значение символа к указателю, а не нулевое завершение строки, как вы, вероятно, планировали. – HerrJoebob

Смежные вопросы