Вопросы по консольному окну
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 10.10.17 13:21
Оценка: -1
В моей программе, помимо главного диалогового окна, используется также консольное окно, в котором происходит ввод-вывод информации.
Это консольное окно у меня инициализировано следующим образом:

в функции CInitDlg::OnInitDialog :

::AllocConsole();
freopen("CONIN$","rt",stdin);
freopen("CONOUT$","wt",stdout);
freopen("CONOUT$","wt",stderr);


деинициализация консольного окна происходит у меня в функции CInitDlg::OnBnClickedCancel :

fclose(stdout);
fclose(stderr);
fclose(stdin);
::FreeConsole();


В связи с этим у меня два вопроса:
1) Можно ли в программе в зависимости от условия сделать так, чтобы это окно то выскакивало на передний план экрана, то удалялось на задний план?
2) Можно ли программно задать буфер этого консольного окна по вертикали, то есть чтобы вместо 80 строк в этом окне было бы, скажем, 3000 строк?

Если можно, то как это сделать?
1613 г. = 2024 г.
Re: Вопросы по консольному окну
От: AlexGin Беларусь  
Дата: 11.10.17 07:20
Оценка:
Здравствуйте, RussianFellow, Вы писали:

RF>В моей программе, помимо главного диалогового окна, используется также консольное окно, в котором происходит ввод-вывод информации.

RF>Это консольное окно у меня инициализировано следующим образом...

Зачем нужно делать консольный ввод/вывод, если есть диалоговое окно
Просто добавить соотвтетствуюшие контролы (элементы управления) в диалоговое окно — и вперёд

P.S. Если всё-таки нужно (позарез) консольное окно, то вот подробности по этому поводу:
https://docs.microsoft.com/en-us/windows/console/console-functions

P.P.S. Уважаемый RussianFellow, данный вопрос Вы уже подымали месяца три назад:
http://rsdn.org/forum/mfc/6801342
Автор: RussianFellow
Дата: 05.06.17

и Вам тогда уже здесь ответили (в том числе и я).
Отредактировано 11.10.2017 7:30 AlexGin . Предыдущая версия . Еще …
Отредактировано 11.10.2017 7:23 AlexGin . Предыдущая версия .
Re: Вопросы по консольному окну
От: Nikita123 Россия  
Дата: 13.10.17 14:29
Оценка:
Здравствуйте, RussianFellow, Вы писали:
RF>В моей программе, помимо главного диалогового окна, используется также консольное окно, в котором происходит ввод-вывод информации.
RF>Это консольное окно у меня инициализировано следующим образом:
RF>деинициализация консольного окна происходит у меня в функции CInitDlg::OnBnClickedCancel :
RF>В связи с этим у меня два вопроса:
RF>1) Можно ли в программе в зависимости от условия сделать так, чтобы это окно то выскакивало на передний план экрана, то удалялось на задний план?
RF>2) Можно ли программно задать буфер этого консольного окна по вертикали, то есть чтобы вместо 80 строк в этом окне было бы, скажем, 3000 строк?
RF>Если можно, то как это сделать?
Что-то у вас каждые три месяца возникают одни и те же вопросы. Это как-то странно...
Почитайте наконец-то MSDN по теме консольных окон.
Или лучше уберите консольное окно и вводите и выводите данные в диалоговом окне.
Так делают все нормальные разарботчики.
Желаю успеха,
Никита.
Re[2]: Вопросы по консольному окну
От: Vain Россия google.ru
Дата: 14.11.17 09:59
Оценка:
Здравствуйте, Nikita123, Вы писали:

N>Или лучше уберите консольное окно и вводите и выводите данные в диалоговом окне.

N>Так делают все нормальные разарботчики.
Кто такие эти нормальные разработчики? Они уже запили нормальные консольные окна с не меньшей функциональностью как во вкладке Свойства/Options? Чтобы можно было самому и размер, и шрифт, и цвет, и 100500 параметров менять?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[3]: Вопросы по консольному окну
От: Nikita123 Россия  
Дата: 16.11.17 10:44
Оценка: +2
Здравствуйте, Vain, Вы писали:
N>>Или лучше уберите консольное окно и вводите и выводите данные в диалоговом окне.
N>>Так делают все нормальные разарботчики.
V>Кто такие эти нормальные разработчики? Они уже запили нормальные консольные окна с не меньшей функциональностью как во вкладке Свойства/Options? Чтобы можно было самому и размер, и шрифт, и цвет, и 100500 параметров менять?
Не нужны никакие "нормальные консольные окна с не меньшей функциональностью". У топик-стартера из диалогового окна открывается консольное окно для вывода данных. Это просто дичь какая-то.
Желаю успеха,
Никита.
Re[4]: Вопросы по консольному окну
От: Vain Россия google.ru
Дата: 17.11.17 12:54
Оценка: 1 (1)
Здравствуйте, Nikita123, Вы писали:

N>>>Так делают все нормальные разарботчики.

V>>Кто такие эти нормальные разработчики? Они уже запили нормальные консольные окна с не меньшей функциональностью как во вкладке Свойства/Options? Чтобы можно было самому и размер, и шрифт, и цвет, и 100500 параметров менять?
N>Не нужны никакие "нормальные консольные окна с не меньшей функциональностью". У топик-стартера из диалогового окна открывается консольное окно для вывода данных. Это просто дичь какая-то.
Почему дичь? В каком месте дичь? Если изначально гуёвое приложение, к примеру, MFC, то его просто так на консольное не переключить. А если только на раз окно нужно? К примеру, для отладки или ещё чего? Вообщем, ваша дичь не аргументирована.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[5]: Вопросы по консольному окну
От: Nikita123 Россия  
Дата: 17.11.17 13:35
Оценка:
Здравствуйте, Vain, Вы писали:
N>>>>Так делают все нормальные разарботчики.
V>>>Кто такие эти нормальные разработчики? Они уже запили нормальные консольные окна с не меньшей функциональностью как во вкладке Свойства/Options? Чтобы можно было самому и размер, и шрифт, и цвет, и 100500 параметров менять?
N>>Не нужны никакие "нормальные консольные окна с не меньшей функциональностью". У топик-стартера из диалогового окна открывается консольное окно для вывода данных. Это просто дичь какая-то.
V>Почему дичь? В каком месте дичь? Если изначально гуёвое приложение, к примеру, MFC, то его просто так на консольное не переключить. А если только на раз окно нужно? К примеру, для отладки или ещё чего? Вообщем, ваша дичь не аргументирована.
Я ничего не понял из вашего сообщения. Зачем MFC-приложение переключать на консольное? И зачем консольное окно для отладки? Для отладки есть отладчик в Visual Studio. Если очень нужно, то можно записывать отладочные сообщения в текстовый log-файл или в окно отладчика функцией OutputDebugString() или в окна сообщений функцией MessageBox() или AfxMessageBox(). Выводить данные в консольное окно в MFC-приложении — это и есть просто дичь. Для вывода данных в MFC-приложении используются окна, которые наследуются от класса CWnd. Консольное окно в MFC-приложении не нужно совсем.
Желаю успеха,
Никита.
Re[6]: Вопросы по консольному окну
От: Михaил  
Дата: 17.11.17 13:44
Оценка: +1
Здравствуйте, Nikita123, Вы писали:

N>Я ничего не понял из вашего сообщения. Зачем MFC-приложение переключать на консольное? И зачем консольное окно для отладки? Для отладки есть отладчик в Visual Studio. Если очень нужно, то можно записывать отладочные сообщения в текстовый log-файл или в окно отладчика функцией OutputDebugString() или в окна сообщений функцией MessageBox() или AfxMessageBox(). Выводить данные в консольное окно в MFC-приложении — это и есть просто дичь. Для вывода данных в MFC-приложении используются окна, которые наследуются от класса CWnd. Консольное окно в MFC-приложении не нужно совсем.


Не соглашусь, это удобно (и быстро запрограммировать), когда нужно вывести какую то отладочную информацию в реальном времени. Ещё и разными цветами можно писать.
Не всем и не все удобно в отладчике смотреть и файлы разбирать.
Re: Вопросы по консольному окну
От: Михaил  
Дата: 17.11.17 13:55
Оценка:
Здравствуйте, RussianFellow, Вы писали:

RF>2) Можно ли программно задать буфер этого консольного окна по вертикали, то есть чтобы вместо 80 строк в этом окне было бы, скажем, 3000 строк?


RF>Если можно, то как это сделать?


BOOL WINAPI SetConsoleScreenBufferSize(
_In_ HANDLE hConsoleOutput,
_In_ COORD dwSize
);



Для вывода на передний план
HWND wnd = GetConsoleWindow();
::SetForegroundWindow(wnd)

Для вывода консоли на задний план, вывести main gui окно на передний
Re[6]: Вопросы по консольному окну
От: Vain Россия google.ru
Дата: 17.11.17 13:58
Оценка: 3 (1)
Здравствуйте, Nikita123, Вы писали:

V>>Почему дичь? В каком месте дичь? Если изначально гуёвое приложение, к примеру, MFC, то его просто так на консольное не переключить. А если только на раз окно нужно? К примеру, для отладки или ещё чего? Вообщем, ваша дичь не аргументирована.

N>Я ничего не понял из вашего сообщения. Зачем MFC-приложение переключать на консольное?
К примеру, чтобы консольное окно открывалось системой. Чтобы можно было делать перенаправление ввода-вывода без изменения кода.

N>И зачем консольное окно для отладки? Для отладки есть отладчик в Visual Studio.

Отладка это термин такой, не подразумевающий только подключение отладчика.

N>Если очень нужно, то можно записывать отладочные сообщения в текстовый log-файл или в окно отладчика функцией OutputDebugString() или в окна сообщений функцией MessageBox() или AfxMessageBox().

Это все полу/недо средства. Вывод в файл требует бОльших телодвижений, чем просто включить консольное окно. Самое базовое и простое средство отладки это вывод в консольное окно с помощью обычных принтов.

N>Для вывода данных в MFC-приложении используются окна, которые наследуются от класса CWnd. Консольное окно в MFC-приложении не нужно совсем.

Вывод не верный. Какая разница какое приложение? Консольное окно и вывод в него поддерживаются обычными функциями printf из любого места в программе. А вот дичь это городить отдельную инфраструктуру на GUI-шных окнах, вместо того чтобы воспользоваться встроенной и проверенной.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[7]: Вопросы по консольному окну
От: Carc Россия https://vk.com/gosha_mazov
Дата: 21.11.17 15:37
Оценка:
Здравствуйте, Михaил, Вы писали:

М>Не соглашусь, это удобно (и быстро запрограммировать), когда нужно вывести какую то отладочную информацию в реальном времени. Ещё и разными цветами можно писать.

М>Не всем и не все удобно в отладчике смотреть и файлы разбирать.
А еще консоль может быть чужим приложением, и попросту переписать его нельзя. Соответственно и нужно то: запустить эту чужую консоль из своего GUI, и как-то забрать ее вывод. У меня как-то была такая задача, да так руки и не дошли толком разобраться с консолями.
Aml Pages Home
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.