Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > C++ > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 11.10.2017, 08:45   #1
erslgoeirjh
Пользователь
 
Регистрация: 19.05.2009
Сообщений: 98
По умолчанию Вопросы по консольному окну в диалоговом MFC-приложении

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

в функции 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 строк?

Если можно, то как это сделать?
erslgoeirjh вне форума Ответить с цитированием
Старый 11.10.2017, 08:54   #2
Alex11223
Заблокирован
 
Регистрация: 12.01.2011
Сообщений: 19,504
По умолчанию

А для чего оно? Может лучше сделать свое консольное окно?
Alex11223 вне форума Ответить с цитированием
Старый 11.10.2017, 09:18   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,197
По умолчанию

GetConsoleWindow() даст вам HWND окна.
SetConsoleScreenBufferSize() укажет размер буфера.
waleri на форуме Ответить с цитированием
Старый 16.10.2017, 12:01   #4
erslgoeirjh
Пользователь
 
Регистрация: 19.05.2009
Сообщений: 98
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
GetConsoleWindow() даст вам HWND окна.
SetConsoleScreenBufferSize() укажет размер буфера.
С функцией GetConsoleWindow я разобрался--я добавил следующий код после инициализации консольного окна:

Код:
HANDLE  hStdout;
hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO  csbiInfo;
GetConsoleScreen BufferInfo(hStdout,&csbiInfo);
COORD  dwSize = csbiIndo.dwSize;
dwSize.Y = 9999;
SetConsoleScreenBufferSize(hStdout,dwSize);
А как быть с помещением консольного окна на передний план и на задний план, зная его HWND ? Какие функции при этом надо использовать?
erslgoeirjh вне форума Ответить с цитированием
Старый 16.10.2017, 14:45   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,197
По умолчанию

SetForegroundWindow()
SetWindowPos()
waleri на форуме Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы по MFC: step by step prygun_evg Visual C++ 1 20.08.2012 14:19
Отправка команды стороннему консольному приложению xxx-z-xxx C# (си шарп) 5 16.02.2012 17:23
"Немое" окно в приложении на MFC Tihon Win Api 0 31.05.2011 10:11
Combobox на Диалоговом листе GennOk Microsoft Office Excel 17 30.01.2010 19:16
Проблема немодального диалога в многопоточном приложении (Visual С++ 6 MFC Win32) Kernel_BuG Помощь студентам 1 26.09.2008 08:59


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS