Re: вопрос по WinAPI (C++)

Mihalna

Может, по-хорошему надо обложиться книжками и самому искать ответ, но ломаить =)
Вопрос такой: надо создать консольное приложение с помощью графического интерфейса, но я совершенно не знаю, как это делается. Я думаю, можно сделать снизу какое-то поле, в котором пользователь вводил бы строки, а сверху - нередактируемое поле, в котором, собственно, содержались бы ответы на его запросы и то, что он сам вводил. Короче, думаю, мне хватит 4 вещи:
1) Как создать поле, в котором пользователь будет вводить 1 строчку, и которая будет считываться после нажатия Enter
2) Как ее считывать
3) Как создать поле, в которое можно будет выводить строчки и сохранять все, выведенное туда раньше
4) Как в это поле выводить строчки
P.S. Прошу прощения, что оскверняю этот форум такими нубскими вопросами

yolki

непонятно, что значит консольное приложение с полями для ввода
создать поле для ввода можно например так...

#define ID_EDIT 1001 // произвольная константа чтобы различать контролы у себя на окне
...

CreateWindow("edit","Default Text",
WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT|ES_AUTOHSCROLL,
10,50,410,30,hwnd,HMENU(ID_EDIThInstance,NULL);
добавь в стили ES_READONLY - поле будет только для чтения.
потом можно брать из него текст:

char S[100];
Edit_GetText(GetDlgItem(hwnd,ID_EDITS,100);
или установить в него текст:

Edit_SetText(GetDlgItem(hwnd,ID_EDIT"New Text");

Mihalna

Если я все правильно понял, то Edit_SetText сотрет текст, что был в том поле и запишет заместо него новый. Конечно, можно сперва считать то, что там было и потом записать опять вместе с новыми строчками, но тогда придется создавать уже не char S[100], а гораздо больше (или размер текста будет ограничен всего 100 символами). Нет ли функции, позволяющей добавлять в конец текста одну строчку, не удаляя содержимое поля?

yolki

Есть контрол, который выглядит как адрессбар в браузере - т.е. это edit, но со списком того, что туда можно подставить. в принципе, этот список пополняемый.
контрол вроде combobox со стилем CBS_DROPDOWNLIST. в MSDN уточни

yolki

С другой стороны, многострочные edit никто не отменял..
Загодя размер можно узнавать при помощи Edit_GetTextLength
или "консольное" - это типа как "консоль" в квейке/хальфе?
тогда там просто - вешаешь доп.обработчик на клавиши "вверх/вниз" и подставляешь команды из сохранённой хистори.
Оставить комментарий
Имя или ник:
Комментарий: