Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 12.12.2018
Сообщений: 5

Подскажите как реализовать оконное приложение

24.12.2018, 21:23. Показов 2193. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите как реализовать, пожалуйста. Или какие-то специальные функции для таких программ?
1. Программа, которая создает на экране окно со следующими параметрами:
окно имеет белый цвет. Класс окна имеет свойства ускореной прорисовки, при
перемещении окна позиция левого верхнего угла окна выравнивается на границу
байта.
2. Программа, которая создает на экране два окна. Первое является главным окном
приложении, второе окно является дочерним. Цвет фона главного окна приложения - зеленый,
дочернего окна по умолчанию. Функция дочернего окна обрабатывает
сообщение WM_LBUTTONUP
Очень рассчитываю на Вашу помощь. Заранее благодарен!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.12.2018, 21:23
Ответы с готовыми решениями:

Подскажите, как установить подробно программу которая будет на языке c++ создавать оконное приложение
Мне бы хотелось узнать, где скачать программу которая будет создавать формы (кнопки, где вводить текст и т.д.). И подробно как писать код...

Реализовать оконное приложение из консольного
Здравствуйте, у меня проблема с программой. Сделать в командной строке получилось, а вот такое же в объектно-ориентированной среде (чтобы...

Как создать оконное приложение
Добрый вечер! Хочу понять, как создать оконное приложение для windows. Читал про qt, про vs, где всё делается за пару кликов, но меня...

5
0 / 0 / 0
Регистрация: 12.12.2018
Сообщений: 5
25.12.2018, 12:03  [ТС]
мне много такого типа программ надо сделать до завтра, они с билетов на езамен. Покажите, пожалуйста, на примере этих как оно должно выглядеть.
Код будем писать на листочке)
0
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
25.12.2018, 12:14
Судя по WM_LBUTTONUP, это WinAPI. Можете почитать здесь в разделе Окна. Или поищите аналогичные материалы, ключевые слова: WinAPI, создание окон. Но боюсь, за день освоить всё будет трудно.
1
0 / 0 / 0
Регистрация: 12.12.2018
Сообщений: 5
25.12.2018, 12:42  [ТС]
valen10, то, что будет сложно я не сомневался так как с WinAPI никогда не работал, поэтому и попросил помощи)
Вы очень бы упростили мне задачу, если бы показали как должен выглядеть код хотя бы к одной из этих программ, желательно второй
0
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
25.12.2018, 17:21
Лучший ответ Сообщение было отмечено Vova021 как решение

Решение

Как-то так. Вы бы с этим вопросом лучше в раздел C++: WinAPI обратились, а то за такой код наверное ругать будут.

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
#include <cstring>
#include <windows.h>
#include <iostream>
using namespace std;
 
void RegisterWindowClass(const char[], WNDPROC, HBRUSH);
HWND InitInstance(const char[], const char[], int, int, HWND);
LRESULT CALLBACK MainWindowProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK ChildWindowProc(HWND, UINT, WPARAM, LPARAM);
 
int main(int argc, char** argv) {
    const char MAIN_WINDOW_CLASS[] = "__MAIN_WINDOW__";
    const char CHILD_WINDOW_CLASS[] = "__CHILD_WINDOW__";
 
    RegisterWindowClass(MAIN_WINDOW_CLASS, &MainWindowProc, CreateSolidBrush(RGB(0, 255, 0)));
    RegisterWindowClass(CHILD_WINDOW_CLASS, &ChildWindowProc, GetSysColorBrush(COLOR_WINDOW));
    
    HWND hMainWindow;
    HWND hChildWindow;
 
    if (!(hMainWindow = InitInstance(MAIN_WINDOW_CLASS, "Main Wondow", 640, 480, NULL))) {
        cerr << "Error create main window." << endl;
        return 1;
    }
 
    if (!(hChildWindow = InitInstance(CHILD_WINDOW_CLASS, "Child Wondow", 320, 240, hMainWindow))) {
        cerr << "Error create main window." << endl;
        return 1;
    }
        
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return (int)msg.wParam;
}
 
void RegisterWindowClass(const char lpClassName[], WNDPROC lpfnWndProc, HBRUSH hbrBackground) {
    WNDCLASSEX wcex;
    memset(&wcex, 0, sizeof(wcex));
 
    wcex.cbSize = sizeof(WNDCLASSEX);
    wcex.style = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc = lpfnWndProc;
    wcex.cbClsExtra = 0;
    wcex.cbWndExtra = 0;
    wcex.hIcon = NULL;
    wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground = hbrBackground;
    wcex.lpszMenuName = NULL;
    wcex.lpszClassName = lpClassName;
    wcex.hIconSm = NULL;
 
    RegisterClassEx(&wcex);
}
 
HWND InitInstance(const char lpClassName[], const char lpWindowName[], int nWidth, int nHeight, HWND hWndParent) {
    DWORD custom = ((hWndParent == NULL) ? WS_MINIMIZEBOX : 0L);
 
    HWND hWnd = CreateWindow(
        lpClassName,                            // lpClassName,
        lpWindowName,                           // lpWindowName
        WS_OVERLAPPED | WS_SYSMENU | custom,    // dwStyle
        CW_USEDEFAULT, CW_USEDEFAULT,           // x,y
        nWidth, nHeight,                        // w,h
        hWndParent,                             // hWndParent
        NULL,                                   // hMenu
        NULL,                                   // hInstance
        NULL                                    // lpParam
    );
 
    if (!hWnd) {
        return NULL;
    }
 
    ShowWindow(hWnd, SW_SHOW);
    UpdateWindow(hWnd);
 
    return hWnd;
}
 
LRESULT CALLBACK MainWindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
    switch (message) {
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
 
    return 0;
}
 
LRESULT CALLBACK ChildWindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
    switch (message) {
    case WM_LBUTTONUP:
        MessageBox(hWnd, "Вы нажали левую кнопку мыши!", "Information", MB_ICONINFORMATION | MB_OK);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
 
    return 0;
}
1
0 / 0 / 0
Регистрация: 12.12.2018
Сообщений: 5
25.12.2018, 22:09  [ТС]
valen10, спасибо большое!

Добавлено через 4 часа 2 минуты
valen10, не совсем разобрался в коде, можете прокомментировать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.12.2018, 22:09
Помогаю со студенческими работами здесь

Как создать оконное приложение
В Visual Studio если выбрать проект win32/64 - там будет cpp файл c бесконечным циклом получения очереди сообщений. Создавать так оконное...

Как создать оконное приложение?
товарищи! изучал c++ с помощью консольных приложений,программировал в codeblocks. теперь хотелось бы делать проги с норм интерфейсом. ...

Как запустить оконное приложение?
Как запустить оконное приложение, автономно? Т.е. без загрузки его в качестве апплета из HTML-страницы?

Как закрыть оконное приложение?
Ребят, как закрыть оконное приложение?

Как написать оконное приложение на С++?
Здравствуйте, возможно уже было но все же... Хочу написать оконное приложение,используя C++, знаю,что для этого надо знать WinAPI, но мне...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru