Re: Переопределение stdout / cout
От: alsemm Россия  
Дата: 14.11.08 16:17
Оценка:
Здравствуйте, e-Inventor, Вы писали:

EI>Здравствуйте


EI>у меня следующая проблема... есть некий класс, у которого есть метод print()

EI>исторически так сложилось, что внутри этого метода используется printf()
EI>который пишет в stdout и менять это нельзя

EI>у меня GUI морда, которая использует этот класс. Мне надо получить

EI>в какую-нибудь переменную вывод этого метода...
Классика жанра, блин

Вас спасет SetStdHandle. В двух словах — делаете pipe через CreateFile, этот пайп привязываете к stdout через SetStdHandle. Заупускаете отдельную нитку, в которой читаете из пайпа (писать в него неявно будут printf-ы). Еще надо не забыть синхронизировать std::cout и компанию — ios::sync_with_stdio().
По теме читать тут:
http://support.microsoft.com/kb/q105305/
http://www.halcyon.com/~ast/dload/guicon.htm
http://msdn.microsoft.com/en-us/library/ms682499(VS.85).aspx

Алексей
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.