Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > Edit Box или List Box? |
Автор: murzzzzz 30.5.2005, 18:19 | ||
а если мне надо, чтобы в окне в процессе программы постепенно появлялся текст(список результатов выполнения вычислений), который, конечно же, пользователь не может изменять, то мне для этого нужно взять Edit Box или List Box? и какую функцию надо использовать, чтобы выводился этот текст? (с помощью CString,например:
или в VC более рационально инфу выводить как-то по-другому) кстати, давно хотела спросить, понимает ли в VC cout и cin, если да, то в какие классы надо включить? |
Автор: kometa_triatlon 30.5.2005, 21:17 | ||||
murzzzzz Что использовать - все равно. Можешь сделать едитбокс, поставить свойство read only и выводить текст - пользователь сменить не может. Для вывода используй функцию SetWindowText(LPCSTR text). Хотя лучше вариант такой: в нужном месте размещаешь статический текст, удаляешь из него собственно текст. Потом так:
IDC_TEXT - идентификатор статического текста. Если нужен все-таки список, тогда лучше листбокс. У него есть функция AddString()
|
Автор: murzzzzz 31.5.2005, 22:45 | ||||||
Уважаемый kometa_triatlon, я сделала, вроде, так как Вы и сказали:
и после компиляции мне сообщается, что IDC_LISTBOX' : undeclared identifier. Если честно, я вообще не сильно поняла смысл строчки
поэтому я вообще попробовала по-своему, по-ламерски)):
первоначальный вариант был с пустой функцией p.Create() ![]() ![]() |
Автор: murzzzzz 31.5.2005, 23:29 | ||||
кстати, я поняла смысл строки:
ну, в смысле в литературе нашла описание)). только в этой самой литературе чуть-чуть подругому, в нашем случае выглядело бы так:
а вместо троеточия должны быть не один, а 2 аргумента: 1-дескриптор диалогового окна(если бы еще знать, что это такое... ![]() чем больше начинаю соображать, тем больше начинаю путаться во всем этом...и все-таки, как же надо правильно делать этот список?? |
Автор: bel_nikita 31.5.2005, 23:50 |
http://forum.vingrad.ru/index.php?showtopic=49419 |
Автор: kometa_triatlon 1.6.2005, 00:44 | ||||||||||||||
IDC_LISTBOX - идентификатор listBox'a с которым ты работаешь. Так что если у тебя его нет, то ничего не выйдет. Так что размещай на форме ЛистБокс, задавай ему идентификатор IDC_LISTBOX и тогда все получится. Функция Create используется для динамического создания объектов, это другой случай.
Функция GetDlgItem возвращает указатель на контрол, идентификатор которого ты указываешь.
Как видишь, разница в том что нет (CListBox*). Зачем оно нужно? Чтобы привести твой указатель к нужному нам типу, потому что GetDlgItem возвращает указатель типа CWnd*. И если у класса CWnd нет функции AddString (а ее там нет), то ты не сможешь ее вызвать.
Дело в том, что функция GetDlgItem существует в двух вариантах. Первый возвращает указатель на объект. Это то, что я тебе показал. Второй вариант принимает указатель в качестве аргумента и присваивает ему нужное значение. Разница небольшая, кому как нравится. То есть можно так:
А можно так:
Добавлено @ 00:52 И не обязательно обращаться ко мне на Вы ;) Неужели я кажусь таким большим и страшным? ![]() |
Автор: Coocky 1.6.2005, 13:21 | ||
Что за бред? В МФС все просто!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Перегруженые функции CWnd* GetDlgItem( int nID ) const; void CWnd::GetDlgItem( int nID, HWND* phWnd ) const; |
Автор: Любитель 5.6.2005, 20:58 | ||
1. Либо у тебя другой идентифкатор (что наиболее вероятно) - в property поставь 2. Либо строчки #include "resourse.h" нет. |