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

Консоль - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
10.03.2011, 21:19     Консоль #1
Написал вот такую программу
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
#include <windows.h>
#include <conio.h>
int main()
{
    HWND hWnd=FindWindow("ConsoleWindowClass",NULL);
    HDC hDC=GetDC(hWnd);
    RECT Rect;
    GetClientRect(hWnd,&Rect);
    int l=10,t=10,r=90,b=90;
    Ellipse(hDC,l,t,r,b);
    while (true)
    {
        switch (getch())
        {
            case 'd':
                l+=10;
                r+=10;
                InvalidateRect(hWnd, NULL, TRUE);
                Ellipse(hDC,l,t,r,b);
                break;
            case 'a':
                l-=10;
                r-=10;
                InvalidateRect(hWnd, NULL, TRUE);
                Ellipse(hDC,l,t,r,b);
                break;
            case 'w':
                t-=10;
                b-=10;
                InvalidateRect(hWnd, NULL, TRUE);
                Ellipse(hDC,l,t,r,b);
                break;
            case 's':
                t+=10;
                b+=10;
                InvalidateRect(hWnd, NULL, TRUE);
                Ellipse(hDC,l,t,r,b);
                break;
        }
    }
    return 0;
}
Все нормально работает но когда жму Alt+Enter чтобы перейти в полноекранный режым то круг пропадает как сделать чтобы не проподал?

Добавлено через 2 часа 20 минут
Что никто незнает?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2011, 21:19     Консоль
Посмотрите здесь:

Консоль C++
Консоль C++
Массивы(консоль) С++ C++
Консоль C++
консоль C++
Консоль C++
C++ консоль
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IrineK
Заблокирован
11.03.2011, 00:23     Консоль #2
У меня ваша прога как-то криво пошла: вообще ничего не бегает.

А вот такой шарик бегает по консоли:
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
53
#if       _WIN32_WINNT < 0x0500
  #undef  _WIN32_WINNT
  #define _WIN32_WINNT   0x0502
#endif
 
#include <windows.h>
#include <conio.h>
int main()
{
        HWND hWnd=GetConsoleWindow();
        HDC hDC=GetDC(hWnd);
         int l=10,t=10,r=90,b=90;
        Ellipse(hDC,l,t,r,b);
    while (true)
        {
                switch (getch())
                {
                        case 'd':
                SelectObject(hDC, GetStockObject(BLACK_BRUSH));    
                Ellipse(hDC,l,t,r,b);
                l+=10;
                                r+=10;
                SelectObject(hDC, GetStockObject(WHITE_BRUSH));    
                                Ellipse(hDC,l,t,r,b);
                                break;
                        case 'a':
                                SelectObject(hDC, GetStockObject(BLACK_BRUSH));    
                Ellipse(hDC,l,t,r,b);
                l-=10;
                                r-=10;
                SelectObject(hDC, GetStockObject(WHITE_BRUSH));    
                                Ellipse(hDC,l,t,r,b);
                                break;
                        case 'w':
                SelectObject(hDC, GetStockObject(BLACK_BRUSH));    
                Ellipse(hDC,l,t,r,b);    
                t-=10;
                                b-=10;
                                SelectObject(hDC, GetStockObject(WHITE_BRUSH));    
                                Ellipse(hDC,l,t,r,b);
                                break;
                        case 's':
                SelectObject(hDC, GetStockObject(BLACK_BRUSH));    
                Ellipse(hDC,l,t,r,b);    
                t+=10;
                                b+=10;
                                SelectObject(hDC, GetStockObject(WHITE_BRUSH));                                  
                                Ellipse(hDC,l,t,r,b);
                                break;
                }
        }
        return 0;
}
Если развернуть экран, сначала тоже исчезает, но потом принажатии W A S D возвращается.
Прикольно.
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
13.03.2011, 20:20  [ТС]     Консоль #3
IrineK, а для чего эти строки?
C++
1
2
3
4
#if       _WIN32_WINNT < 0x0500
  #undef  _WIN32_WINNT
  #define _WIN32_WINNT   0x0502
#endif
IrineK
Заблокирован
13.03.2011, 21:00     Консоль #4
Эти строки для тех, у кого GetConsoleWindow() не узнает коммпилятор.
Попробуйте без них. Если пойдет, то вам они не нужны.
instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 341
13.03.2011, 22:29     Консоль #5
кстати граждане, а какой код добавить чтоб программа сама развернулась?

Добавлено через 1 час 10 минут
никто не подскажет?
Subgrando
40 / 40 / 3
Регистрация: 28.01.2011
Сообщений: 175
13.03.2011, 22:38     Консоль #6
Подскажет.

C++
1
ShowWindow(NULL, SW_MAXIMIZE);
instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 341
13.03.2011, 22:43     Консоль #7
Subgrando, все равно не раскрывает(.
Subgrando
40 / 40 / 3
Регистрация: 28.01.2011
Сообщений: 175
13.03.2011, 22:46     Консоль #8
C++
1
    ShowWindow(GetConsoleWindow(), SW_MAXIMIZE);
Так должно работать.
instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 341
13.03.2011, 22:49     Консоль #9
Subgrando, эм..молодая душа вы меня не поняли.. хотелось бы сделать не так как будто консоль развернутая.. а так, как она выглядит после нажатия alt+enter
Subgrando
40 / 40 / 3
Регистрация: 28.01.2011
Сообщений: 175
13.03.2011, 22:52     Консоль #10

Не по теме:


MessageBoxA(NULL, "Эта система не поддерживает работу в полноэкранном режиме.", "Командная строка", MB_OK);




А что, собственно, должно происходить после нажатия на Alt+Enter?
instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 341
13.03.2011, 22:59     Консоль #11
Subgrando, ща скрин дам

ой пи**ец.. а там в полноэкранном кнопка printscreen не пашет O_O

ну короче попробуй

WIN+R -> cmd

выйдет консоль и нажми alt+enter.. у тебя что не переходит в полноэкранный режим?

Добавлено через 3 минуты
Subgrando, if(Subgrabdo не напишет мне код)
{ оторвать ему бошку
return на место
}
Subgrando
40 / 40 / 3
Регистрация: 28.01.2011
Сообщений: 175
13.03.2011, 23:01     Консоль #12
Если я не ошибаюсь, в Windows Vista и Windows 7 нельзя использовать Alt+Enter.
Поэтому, проще сразу забыть об этом, что и советую.
instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 341
13.03.2011, 23:03     Консоль #13
Subgrando, мдэ. короче пошлю себя в гугл на ганг за ответом
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
13.03.2011, 23:46     Консоль #14
instagib, я давно уже не занимался чистым WinAPI, но попробуйте послать окну консоли сообщения о нажатии Enter при нажатой Alt - либо через WM_CHAR или WM_KEYDOWN, либо через SendInput. Но честно говорю - не знаю, получится ли.
Subgrando
40 / 40 / 3
Регистрация: 28.01.2011
Сообщений: 175
14.03.2011, 00:01     Консоль #15
Можно спросить..?

Зачем вообще всё это делать, если современные версии Windows это не понимают? Или программа для старых компов и ОСей?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2011, 16:39     Консоль
Еще ссылки по теме:

C++ Консоль и C++
winapi и консоль C++
Консоль C++
C++ Закрыть консоль

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

Или воспользуйтесь поиском по форуму:
instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 341
14.03.2011, 16:39     Консоль #16
Subgrando, затем что еще пока большинство пользователей сидят за xp, мое мнение ибо где бы я ни был везде xp-видел.
2. знание никогда не помешает.

Добавлено через 1 минуту
talis, да я в winapi вообще не шарю. открыл книгу взглянул на эти длинноименные функции и закрыл книгу освою сперва с\с++ а потом время покажет
Yandex
Объявления
14.03.2011, 16:39     Консоль
Ответ Создать тему
Опции темы

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