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


Автор: Dreamer_0x01 16.10.2006, 14:48
Добрый день всем-всем-всем!

Решил вот выводить некоторые данные на консоль, а с сим механизмом никогда ВООБЩЕ не работал.
Все выводится как мне надо, но при закрытии программы консоль автоматом закрывается тоже. Можно ее как-то оставить "повисеть" до принудительного ее закрывания?
(это чтобы окно висело и в заголовке было написано что-то типа "сеанс программы такой-то закончен", или как его там дословно - не помню) =)

Автор: tnt17 16.10.2006, 17:06
Юзай getch(); перед выходом из программы.

Автор: Dreamer_0x01 18.10.2006, 20:12
я понимаю, что можно вставить принудительную задержку в ход выполнения программы. Но все-таки хотелось бы добиться именно описанного выше эффекта.

Автор: Nuzur 19.10.2006, 09:33
Dreamer_0x01, создай поток в нем создай консоль и жди от окна создателя сообщения о закрытии, после чего передавай сообщения пользователю. Оно?

Автор: Dreamer_0x01 20.10.2006, 14:05
Nuzur
Не очень понял. 
Цитата(Nuzur @  19.10.2006,  09:33 Найти цитируемый пост)
и жди от окна создателя сообщения о закрытии

Где ждать, и каким образом?

А как сделать, если у меня консольное окно - единственное? (или программа использует несолько окон, но только консольные?)

Мне кажется, это должно как-то делаться намного проще, без ожиданий собщений от потоков создателей.






Автор: Nuzur 20.10.2006, 16:19


Dreamer_0x01

Цитата

Где ждать, и каким образом?

CEvent
Цитата

А как сделать, если у меня консольное окно - единственное? (или программа использует несолько окон, но только консольные?)

какая разница? Создал ты свою консоль, создал с первой поток, выбрал ГЛАВНУЮ тебе уж веднее какую.
Поток висит и проверяет CEvent каждого сына\дочери(как вам бут угодно) но ет уже детали.
Про синхронизацию потоков отправляю к форуму(не один раз обсуждалось) и к соответ. лит.
Удачи!


Автор: Earnest 20.10.2006, 16:54
Dreamer_0x01, зачем усложняешь? Либо консоль создается для какого-то процесса (что просто и неявно), и тогда - уж извини - накрывается вместе с этим процессом. И единственный выход - поставить какую-нибудь задержку. Не обязательно getch() - можно ждать чего-нибудь - события, например... Главное, чтобы процесс не закрылся.

Либо консоль создается отдельно, явно и ты явно ею управляешь...
Установить свой заголовок можно в обоих случаях - SetConsoleTitle.

Автор: Rickert 20.10.2006, 17:57
Если работаешь в VS то просто запусти программу через Ctrl + F5. Также можно в конце программы воткнуть Sleep(10000) - 10 секунд будет висеть.

Автор: Dreamer_0x01 22.10.2006, 12:33
Earnest
помнишь win98?
Там при запуске консольных программ, либо программ, работающих в эмуляции ДОС, пр завершении работы программы консоль оставалась висеть на экране, в ней было написано что-то типа того, что сеанс завершен. А был режим иавтоматического закрытия таких окон при завершении. Выставлялось это в свойствах ярлыка, запускающего такую программу. Я вот и хочу сделать что-то подобное.

ЗЫ. Задержкой я и сейчас пользуюсь, просто тупо жду реакции пользователя, но хочется как всегда что-то "эдакое" сотворить =)

Цитата

Про синхронизацию потоков отправляю к форуму(не один раз обсуждалось)


Да синхронизация меня сейчас менее всего интересует, не тот проект малость ;)

Автор: Rickert 22.10.2006, 19:41
Цитата(Dreamer_0x01 @  22.10.2006,  12:33 Найти цитируемый пост)
Там при запуске консольных программ, либо программ, работающих в эмуляции ДОС, пр завершении работы программы консоль оставалась висеть на экране, в ней было написано что-то типа того, что сеанс завершен. 

См. мой пост: CTRL+F5

Автор: Dreamer_0x01 23.10.2006, 00:50
Мне не подойдет CTRL+F5, я ж не буду заказчику предлагать к моей проге вижуал студио поставить и мой исходник в нем запустить ;)

Автор: Rickert 23.10.2006, 03:34
Dreamer_0x01, а, ну так бы и сказал, а то я думал у тебя что-то типа проблема увидеть результат выводящийся на экран smile

Автор: Dreamer_0x01 23.10.2006, 08:42
Я результат увижу в любом случае ;)
А вот пользователь может не заметить ;)

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