Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Подменить консоль эдитом


Автор: Dray 5.6.2006, 18:26
Просто есть код - консольное приложение, и там при помощи cout << выводится очень много полезных вещей. Хотелось бы просто перенести этот код без больших изменений в MFC'шное приложение и сделать так что cout << выводил не на консоль а на CEdit. Реально так связать cout  с эдитом??? Может можно как нибудь написать свой класс производный от ostream который будет связан с CEdit'ом? Да и в целом в некоторых задачах у меня часто возникали мысли использовать эдит как консоль, так что было бы интересно узнать способ это сделать. 

Автор: Earnest 5.6.2006, 18:57
Заведи себе просто поток для протоколирования и выводи туда (вместо cout). 
А отображение содержимого этого потока в каком-нибудь окне (можно и в Edit) - совершенно другая задача, не надо их путать. 

Цитата(Dray @  5.6.2006,  19:26 Найти цитируемый пост)
Может можно как нибудь написать свой класс производный от ostream который будет связан с CEdit'ом? 

Лучше реализовать эти функции отдельно: 1) запись протокола 2) вывод в какое-нибудь окно. Методов связи можно придумать кучу... 

Если тебе для отладочных целей нужно, можно совсем просто сделать, у меня есть пример. Но только это не ostream, и
Цитата(Dray @  5.6.2006,  19:26 Найти цитируемый пост)
просто перенести этот код без больших изменений 

вряд ли получится.
 

Автор: Dray 5.6.2006, 23:00
Цитата(Earnest @  5.6.2006,  18:57 Найти цитируемый пост)
можно совсем просто сделать, у меня есть пример.

 smile 
Хочется сделать что-то на подобие Output в Вижал Студии.
Цитата(Earnest @  5.6.2006,  18:57 Найти цитируемый пост)
Цитата(Dray @  5.6.2006,  19:26 Найти цитируемый пост)
просто перенести этот код без больших изменений 

вряд ли получится.

Да уж. Я действительно много хочу.  smile  

Автор: Earnest 6.6.2006, 12:56
Вот пример 2 вспомогательных классов для отладочного вывода.
CDebugLog - протокол, реализован как синглетон, может вызываться из разных потоков.
CDebugLogWnd - окно, которое умеет выводить в себя содержимое лога.

Как использовать: окно (или его производную) поместить в какую-нибудь немодальную диалоговую панель. Вызывать ф-ю Update либо на Idle, либо по таймеру.

Внутри кода: макрос DBGTRACE используется точно как макрос TRACE.

 

Автор: Dray 6.6.2006, 19:22
Большое спасибо! Очень интересный пример. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)