Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
art3330
10 / 10 / 1
Регистрация: 16.12.2012
Сообщений: 141
#1

Определенный размер окна при консольном выводе - C++

19.04.2013, 14:49. Просмотров 923. Ответов 11
Метки нет (Все метки)

Доброго времени суток.
Возникла такая проблема. Пишу я в geany в windows, подключен gnu c++. При выполнении программы вызывается командная строка, в которой: во-первых окно можно делать любых размеров (но это пол беды), а во-вторых справа присутствует scroll bar, наличие которого нежелательно, так как мне надо выводить определенную таблицу, и с помощью клавиш ее скролить. Поэтому было бы великолепно, сли бы можно было сделать как на паскале. Что у нас есть окно определенных размеров, с которым мы работает.
Надеюсь вопрос мой понятен.
Говорю заранее спасибо за помощь =)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2013, 14:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определенный размер окна при консольном выводе (C++):

Размер окна в консольном приложении - C++
Всем доброго времени суток. Пишу на CodeBlocks консольное приложение, но есть проблема, как изначально изменить размеры окна вывода? Так...

Изменение цвета текста/фона при консольном выводе - C++
Доброго времени суток. Как изменить цвет фона/текста в консоли с++ в формате RGB? Я знаю, что есть подобная фича в windows.h, но это не...

Изменение цвета текста и фона при консольном выводе - C++
Всем привет. Помогите решить мою проблему. Как менять цвет текста и фона при консольном выводе. Чё-то конкретного примера я не нашёл. Не...

В консольном выводе выделить разными цветами элементы матрицы - C++
Доброй ночи всем. Я делаю задачу в Visual C++ 2008 Express. У меня вот какое дело. Выводится на экран матрица M на N. Это типа...

"Неожиданное" закрытие окна при выводе результатов на консоль - C++
Здраствуйте, Уважаемые программисты! Недавно начал учить язык програмирования C++, произошла такакя проблема, пишу-пишу код. И когда...

Изменить размер шрифта в консольном приложении (программно) - C++
Как изменить размер шрифта консоли, только размер, сам шрифт остаётся родной. ОС: Windows

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Игорь с++
436 / 459 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
19.04.2013, 15:39 #2
вопрос не совсем понятен,если тебе надо сделать окно определенного размера юзай winapi а в частности функцию MoveWindow . А вот если тебе надо заблокировать скролбар ,то алгоритм следующий - находишь твоё окно FindWindow далее перичесляеш все его дочернии окна ,тем самым ты находиш скролбар ,при помощи функции - EnumChildWindow (могу ошибаться где то в написании последней функции,но смысл такой,найдеш),и последний шаг , так как ты уже получил дескриптор скролбара блокируеш его,и он становится выбитый и юзер не чего с ним не сделает (прошу прошение если где то в названиях функций сделал ошибки,пишу с телефона,очень не удобно).
1
Croessmah
Эксперт CЭксперт С++
13209 / 7480 / 841
Регистрация: 27.09.2012
Сообщений: 18,388
Записей в блоге: 3
Завершенные тесты: 1
19.04.2013, 15:39 #3
http://www.vsokovikov.narod.ru/New_M...ole/con_fn.htm
1
art3330
10 / 10 / 1
Регистрация: 16.12.2012
Сообщений: 141
19.04.2013, 16:09  [ТС] #4
Спасибо. Буду разбираться )
0
art3330
10 / 10 / 1
Регистрация: 16.12.2012
Сообщений: 141
21.04.2013, 01:53  [ТС] #5
Изменить размер окна оказалось не так уж и сложно. А что-то с отключение скролл-бара разобраться пока не могу. Если у кого-нибудь есть готовое рещение, то будьте добры, поделитесь
0
UnsKneD
алкокодер
154 / 150 / 11
Регистрация: 27.12.2012
Сообщений: 548
21.04.2013, 02:00 #6
art3330, размер буфера экрана уменьшите.
1
art3330
10 / 10 / 1
Регистрация: 16.12.2012
Сообщений: 141
21.04.2013, 02:09  [ТС] #7
UnsKneD, ага! То есть у нас появляются скролл бары, лишь потому, что консоль большая (очень грубо говоря), а вызывается в уменьшенном виде. Уменьшая буфер мы избавляемся от этой ерунды. Я правильно понимаю?
0
UnsKneD
алкокодер
154 / 150 / 11
Регистрация: 27.12.2012
Сообщений: 548
21.04.2013, 02:12 #8
art3330, скролл бар появляется потому что большой буфер экрана, он статический в консоле.

Добавлено через 27 секунд
грубо говоря, вы правильно понимаете)))
0
art3330
10 / 10 / 1
Регистрация: 16.12.2012
Сообщений: 141
21.04.2013, 02:14  [ТС] #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <windows.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#include <iostream>
#include <fstream>
 
void RedirectIOToConsole() //перенаправление стандартных потоков в нововый консольный буффер
{
    int hConHandle; long lStdHandle; FILE *fp;
 
    // redirect unbuffered STDOUT to the console
    lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE);
    hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
    fp = _fdopen( hConHandle, "w" );
    *stdout = *fp;
    setvbuf( stdout, NULL, _IONBF, 0 );
 
    // redirect unbuffered STDIN to the console
    lStdHandle = (long)GetStdHandle(STD_INPUT_HANDLE);
    hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
    fp = _fdopen( hConHandle, "r" );
    *stdin = *fp;
    setvbuf( stdin, NULL, _IONBF, 0 );
 
    // redirect unbuffered STDERR to the console
    lStdHandle = (long)GetStdHandle(STD_ERROR_HANDLE);
    hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
    fp = _fdopen( hConHandle, "w" );
    *stderr = *fp;
    setvbuf( stderr, NULL, _IONBF, 0 );
 
    // make cout, wcout, cin, wcin, wcerr, cerr, wclog and clog
    // point to console as well
    std::ios::sync_with_stdio();
}
 
 
int main()
{
    //создаю новый консольный буффер, какой мне нужно
    HANDLE FirstScreenBuffer= CreateConsoleScreenBuffer( GENERIC_READ | GENERIC_WRITE,0,NULL,CONSOLE_TEXTMODE_BUFFER,NULL );
    
    //активирую его. Теперь консолька на него настроилась 
    SetConsoleActiveScreenBuffer(FirstScreenBuffer);
    
    int res= SetStdHandle(  STD_OUTPUT_HANDLE , FirstScreenBuffer);
    
    RedirectIOToConsole(); //перенастраиваю стандартные потоки ввода/вывода
    
    std::cout<< "ля ля ля\n"; //вывод: ля ля ля
}
Нашел вот такой код. При попытке скомпилировать, выдает ошибку, что res неиспользуемая переменная. Добавил строчку std::cin>>res; все работает. А как без этой строчки обойтись. Ибо неудобно.
0
UnsKneD
алкокодер
154 / 150 / 11
Регистрация: 27.12.2012
Сообщений: 548
21.04.2013, 02:18 #10
art3330, эм, а вы не потеряли
C++
1
int res = SetStdHandle(  STD_OUTPUT_HANDLE , FirstScreenBuffer);
? Только что скомпилировал( проект пустой, VS2012 ), всё на ура прошло.
0
art3330
10 / 10 / 1
Регистрация: 16.12.2012
Сообщений: 141
21.04.2013, 02:23  [ТС] #11
Это я наверное уже чуть измененный мною код кинул, но у меня не работает. Ошибка в том, что создаем переменную и нигде ее больше не используем. Только добавил cin эта ошибка улетучилась и все заработало. То есть переменная начала использоваться. Может от компилятора зависит?
0
UnsKneD
алкокодер
154 / 150 / 11
Регистрация: 27.12.2012
Сообщений: 548
21.04.2013, 02:45 #12
art3330, может быть, попробуй её вообще убери, раз не используется.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2013, 02:45
Привет! Вот еще темы с ответами:

Размер окна - C++
Знающие люди, подскажите пожалуйста,как задать размер консольного окошка??..т.е. он стандартно вроде 80х25,а мне например нужно,чтобы был...

Размер окна - C++
Подскажите, пожалуйста, что дописать в код, чтобы размер консоли соответствовал заданным значениям.

Размер DOS-окна - C++
Всем привет. Можно ли как-то изменить размер DOS-окна? Программы, создаваемые в таких компиляторах как Borland C++, при запуске выводят...

Получить размер консольного окна - C++
Есть код:#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;Lib.h&quot; #include &lt;conio.h&gt; #include &lt;cstdlib&gt; #include &lt;Windows.h&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.04.2013, 02:45
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru