Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2017, 08:45   #1
erslgoeirjh
Форумчанин
 
Регистрация: 19.05.2009
Сообщений: 153
По умолчанию Вопросы по консольному окну в диалоговом 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
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А для чего оно? Может лучше сделать свое консольное окно?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 11.10.2017, 09:18   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

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

Цитата:
Сообщение от 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,493
По умолчанию

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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