Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
26 / 17 / 10
Регистрация: 02.03.2019
Сообщений: 52
1

Как не отображать окно консоли (графика, Windows API)

25.05.2020, 15:15. Показов 1254. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В CodeBlocks пытаюсь разобраться с простейшей графикой.
Собственно, нужно пока только уметь выводить прямоугольники и текст в окно.

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

Как не отображать окно консоли (графика, Windows API)


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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include<windows.h>
#include<string.h>
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
char szProgName[]="Имя программы";
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{
    HWND hWnd;
    MSG lpMsg;
    WNDCLASS w;
 
    w.lpszClassName=szProgName; //имя программы - объявлено выше
    w.hInstance=hInstance; //идентификатор текущего приложения
    w.lpfnWndProc=WndProc; //указатель на функцию окна
    w.hCursor=LoadCursor(NULL, IDC_ARROW); //загружаем курсор
    w.hIcon=0;
    w.lpszMenuName=0;
    w.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); //цвет фона окна
    w.style=CS_HREDRAW|CS_VREDRAW;
    w.cbClsExtra=0;
    w.cbWndExtra=0;
 
//Если не удалось зарегистрировать класс окна - выходим
    if(!RegisterClass(&w))
        return 0;
 
//Создадим окно в памяти, заполнив аргументы CreateWindow
    hWnd=CreateWindow(szProgName, //Имя программы
                      "Грфические возможности Win32 API", //Заголовок окна
                      WS_OVERLAPPEDWINDOW, //Стиль окна - перекрывающееся
                      100, //положение окна на экране по х
                      100, //положение по у
                      500, //ширина
                      400, //высота
                      (HWND)NULL, //идентификатор родительского окна
                      (HMENU)NULL, //идентификатор меню
                      (HINSTANCE)hInstance, //идентификатор экземпляра программы
                      (HINSTANCE)NULL); //отсутствие дополнительных параметров
 
//Выводим окно из памяти на экран
    ShowWindow(hWnd, nCmdShow);
//Обновим содержимое окна
    UpdateWindow(hWnd);
 
//Цикл обработки сообщений
 
    while(GetMessage(&lpMsg, NULL, 0, 0)) {
        TranslateMessage(&lpMsg);
        DispatchMessage(&lpMsg);
    }
    return(lpMsg.wParam);
}
 
//Функция окна
LRESULT CALLBACK WndProc(HWND hWnd, UINT messg,
                         WPARAM wParam, LPARAM lParam)
{
    HDC hdc; //создаём контекст устройства
    PAINTSTRUCT ps; //создаём экземпляр структуры графического вывода
    LOGFONT lf;
    HFONT hFont;
    RECT r;
    HBRUSH hBrush;
    HPEN hPen;
 
//Цикл обработки сообщений
    switch(messg) {
//сообщение рисования
    case WM_PAINT :
        hdc=BeginPaint(hWnd, &ps);
 
//Создаём свой шрифт
        strcpy(lf.lfFaceName,"Times New Roman"); //копируем в строку название шрифта
        lf.lfHeight=20;
        lf.lfItalic=1;
        lf.lfStrikeOut=0;
        lf.lfUnderline=0;
        lf.lfWidth=10;
        lf.lfWeight=40;
        lf.lfCharSet=DEFAULT_CHARSET; //значение по умолчанию
        lf.lfPitchAndFamily=DEFAULT_PITCH; //значения по умолчанию
        lf.lfEscapement=0;
 
        hFont = CreateFontIndirect(&lf);
        SelectObject(hdc, hFont);
        SetTextColor(hdc, RGB(0,0,255));
        TextOut(hdc, 80,40, "Красота спасёт мир!!", 20);
 
//рисуем красный прямоугольник
        r.top=100;
        r.left=180;
        r.right=400;
        r.bottom=300;
        FillRect(hdc, &r, HBRUSH(CreateSolidBrush(RGB(255,0,55))));
 
//рисуем зелёный эллипс
        hBrush=CreateSolidBrush(RGB(10,200,100));
        SelectObject(hdc, hBrush);
        Ellipse(hdc, 20,100,200,200);
 
//рисуем закруглённый прямоугольник
        hBrush=CreateSolidBrush(RGB(250,200,100));
        SelectObject(hdc, hBrush);
        hPen=CreatePen(2,2,RGB(0,0,255));
        SelectObject(hdc, hPen);
        RoundRect(hdc, 20, 250, 250, 350, 15, 15);
 
 
        ValidateRect(hWnd, NULL);
        EndPaint(hWnd, &ps);
        break;
 
//сообщение выхода - разрушение окна
    case WM_DESTROY:
        PostQuitMessage(0); //Посылаем сообщение выхода с кодом 0 - нормальное завершение
        DeleteObject(hPen);
        DeleteObject(hBrush);
        break;
 
    default:
        return(DefWindowProc(hWnd, messg, wParam, lParam)); //освобождаем очередь приложения от нераспознаных
    }
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.05.2020, 15:15
Ответы с готовыми решениями:

Помогите создать окно с кнопками, графика win32 API
Используются только функции Win32 API. Мне надо создать окно у которого background содержит...

Вывод графика в консоли через windows.h
это программа вывода массива типа double Вопрос в том, как сделать так, чтобы в MoveToEx(hdc, x,...

Как отображать часть графика в ограниченном окне просмотра?
Добрый день, уважаемые эксперты! Подскажите, пожалуйста, как можно отображать часть графика в...

Возможно ли создать вместо консоли окно под Windows
Возможно ли создать вместо консоли окно под windows? Какие библиотеки надо подключить? т е можно...

3
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
25.05.2020, 18:27 2
Лучший ответ Сообщение было отмечено alexs2007 как решение

Решение

Цитата Сообщение от alexs2007 Посмотреть сообщение
Нашел программу. Работает. Только можно ли сделать так, чтобы сзади не висело окно консоли?
В свойствах проекта - Build Targets, выстави Type в GUI application
1
413 / 148 / 48
Регистрация: 02.06.2016
Сообщений: 342
25.05.2020, 19:12 3
Цитата Сообщение от alexs2007 Посмотреть сообщение
Нашел программу. Работает.
С утечкой ресурсов.
Этот код уже встречался, смотрите второе сообщение здесь.
1
26 / 17 / 10
Регистрация: 02.03.2019
Сообщений: 52
27.05.2020, 00:53  [ТС] 4
Спасибо! Все заработало.
С кодом я еще совсем не разобрался, про освобождение "всего" понял
0
27.05.2020, 00:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.05.2020, 00:53
Помогаю со студенческими работами здесь

Как в консоли или в окне winapi отображать определенный набор букв из стандарта unicode?
Как в консоли или в окне winapi отображать определенный набор букв из стандарта unicode?

Окно Windows/Linux на с++ без всяких api
Основная суть вопроса в заголовке.теперь пояснения. Как сделать окно на чистом С++без всяких...

Inno Setup - вывод диалогов из консоли Windows в окно программы
Здравствуйте! Видел довольно много программ, в которых выполняются консольные утилиты и в...

windows - вывод графика в свернутое окно [решено, кг/ам]
возможно, кто-то уже сталкивался и победил, а у меня трехдневное гугление пока оказалось...

Как очистить окно консоли?
Здравствуйте! Есть к примеру программа - калькулятор а консоли! Она работает так, ввели число,...

Как расширить окно консоли
какой командой можно расширить окно консоли?а то у меня прога много выводит,и начало ,не с начала...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru