0 / 0 / 0
Регистрация: 27.12.2022
Сообщений: 5
1

Как добавить всплывающее окно со своим калькулятором?

02.05.2024, 14:51. Показов 722. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана задача написать программу, на главной странице находится меню - 4 пункта:
1) Калькулятор - открывает системный калькулятор
2) Пэинт - открывает пэинт
3) Мой калькулятор - должен открывать новое окно с собственным калькулятором


Исходный код:
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
#include <iostream> 
#include <string> 
#include <windows.h> 
 
using namespace std; 
 
HINSTANCE hInstance;
 
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
    switch (uMsg) {
    default: {
        return DefWindowProc(hwnd, uMsg, wParam, lParam);
    }
    }
    return 0;
}
 
LRESULT CALLBACK CalculatorWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
    static std::wstring input;
    static bool calcError = false;
 
    switch (uMsg) {
    case WM_CREATE: {
        HMENU hMenu = CreateMenu();
        HMENU hSubMenu = CreatePopupMenu();
        AppendMenu(hSubMenu, MF_STRING, 101, L"Paint");
        AppendMenu(hSubMenu, MF_STRING, 102, L"Калькулятор");
        AppendMenu(hSubMenu, MF_STRING, 103, L"Paint мой");
        AppendMenu(hSubMenu, MF_STRING, 104, L"Калькулятор мой");
        AppendMenu(hMenu, MF_POPUP, (UINT_PTR)hSubMenu, L"Меню");
        SetMenu(hwnd, hMenu);
        CreateWindow(L"EDIT", L"", WS_CHILD | WS_VISIBLE | WS_BORDER | ES_RIGHT, 10, 10, 260, 30, hwnd, (HMENU)0, NULL, NULL);
        CreateWindow(L"BUTTON", L"=", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 200, 50, 70, 30, hwnd, (HMENU)1, NULL, NULL);
        CreateWindow(L"BUTTON", L"C", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 10, 50, 70, 30, hwnd, (HMENU)2, NULL, NULL);
        break;
    }
 
    case WM_COMMAND: {
        switch (LOWORD(wParam)) {
        case 101: // Paint
            ShellExecute(NULL, L"open", L"mspaint", NULL, NULL, SW_SHOWNORMAL);
            break;
        case 102: // Калькулятор
            MessageBox(hwnd, L"Открывается калькулятор", L"Калькулятор", MB_OK | MB_ICONINFORMATION);
            ShellExecute(NULL, L"open", L"calc.exe", NULL, NULL, SW_SHOWNORMAL);
            break;
        case 103: // Paint мой
            MessageBox(hwnd, L"Открывается Paint мой", L"Paint мой", MB_OK | MB_ICONINFORMATION);
            // Добавьте код для открытия вашей программы для рисования
            break;
        case 104: // Калькулятор мой
            MessageBox(hwnd, L"Открывается мой калькулятор", L"Мой калькулятор", MB_OK | MB_ICONINFORMATION);
            {
                WNDCLASS wc = {};
                wc.lpfnWndProc = CalculatorWndProc;
                wc.hInstance = GetModuleHandle(NULL);
                wc.lpszClassName = L"MyCalculatorClass";
                RegisterClass(&wc);
 
                HWND hwndCalc = CreateWindow(L"MyCalculatorClass", L"Мой калькулятор", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 300, 400, NULL, NULL, GetModuleHandle(NULL), NULL);
 
                ShowWindow(hwndCalc, SW_SHOW);
                UpdateWindow(hwndCalc);
            }
            break;
        }
        break;
    }
 
    case WM_CHAR: {
        if (calcError) {
            input.clear();
            SetDlgItemText(hwnd, 0, L"");
            calcError = false;
        }
        if ((wParam >= '0' && wParam <= '9')  wParam == '.'  wParam == '+'  wParam == '-'  wParam == '*' || wParam == '/') {
            input += static_cast<wchar_t>(wParam);
            SetDlgItemText(hwnd, 0, input.c_str());
        }
        break;
    }
 
    case WM_DESTROY: {
        PostQuitMessage(0);
        break;
    }
 
    case WM_CLOSE: {
        DestroyWindow(hwnd);
        break;
    }
 
    default: {
        return DefWindowProc(hwnd, uMsg, wParam, lParam);
    }
    }
 
    return 0;
}
0
02.05.2024, 14:51
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.05.2024, 14:51
Ответы с готовыми решениями:

Как добавить к кнопке всплывающее окно
Как к скрипту счётчика к его кнопке &quot;удалить&quot; подключить эту всплывашку? Всплывашка. &lt;button onclick=&quot;return...

Как добавить всплывающее окно к PictureBox?
как для pictureBox добавить всплывающее окно?

Как добавить в всплывающее окно любую картинку?
Здравствуйте, очень нужна помощь. Заранее спасибо

1
Чугунные скороходы
 Аватар для ARRAYBOW
15 / 14 / 3
Регистрация: 25.12.2022
Сообщений: 339
05.05.2024, 12:27 2
В оконных приложениях я не силен, но я уже вижу, что у вас отсутствует точка входа. WinMain как минимум должен быть.
Вот в начале программирования Win32 написано даже, https://learn.microsoft.com/ru... ntry-point. Может вы написали не весь код?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.05.2024, 12:27
Помогаю со студенческими работами здесь

Как загрузить картинку в новое окно СО СВОИМ ЗАГАЛОВКОМ?
Надо загрузить в новое окно картинку, но со своим заголовком окна... Вот такой код 1 function OL(urla, titla){ 2 w=open(urla); ...

Как отключить всплывающее окно?
Здравствуйте! В моей БД данные из одной таблицы изменяются двумя разными формами. В результате при изменении данных иногда всплывает окно...

Как спрятать всплывающее окно
Никак не получается спрятать всплывающее окно по движению мыши. Как это можно сделать? bool FileSelectionWidget::event(QEvent* e) { ...

Как создать всплывающее окно
Здравствуйте. Необходимо создать всплывающее окно на сайте, которое вызывается нажатием на ссылку, в котором выводится код другого html...

Как создать всплывающее окно ?
Как создать всплывающее окно ? при наведении на сслыку . что то типо того 4то на скриншоте ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Микросервис с нуля на Go с Kafka
stackoverflow 12.02.2025
Когда я впервые столкнулся с необходимостью разделить монолитное приложение на микросервисы, передо мной встал вопрос выбора правильных технологий и подходов. После долгих экспериментов с различными. . .
Микросервис с нуля на C# с RabbitMQ
stackoverflow 12.02.2025
Переход от монолитной архитектуры к микросервисной - это не просто модное веяние, а закономерный этап эволюции программных систем. В отличие от монолита, где все компоненты тесно связаны между собой. . .
Docker для начинающих
stackoverflow 12.02.2025
В современном мире разработки программного обеспечения все чаще возникает необходимость быстро и надежно разворачивать приложения в различных средах. Разработчики постоянно сталкиваются с проблемой. . .
Создание бота для Телеграм на C#
stackoverflow 12.02.2025
В современном мире корпоративных коммуникаций Telegram-боты становятся незаменимым средством автоматизации бизнес-процессов и взаимодействия с сотрудниками. Как создать такого бота, который сможет. . .
Операторы сравнения (== и ===) в JavaScript
hw_wired 12.02.2025
JavaScript предоставляет два основных оператора сравнения - оператор нестрогого равенства (==) и оператор строгого равенства (===). На первый взгляд они могут показаться очень похожими, но их. . .
Определение адреса, откуда репозиторий Git был клонирован
hw_wired 12.02.2025
Система контроля версий Git хранит всю информацию о репозитории в специальной директории . git, включая данные об удаленных источниках. Эта информация необходима для синхронизации изменений между. . .
Объединение нескольких коммитов Git в один
hw_wired 12.02.2025
Представьте, что вы работаете над новой функциональностью и создали десяток небольших коммитов: исправление опечатки, форматирование кода, добавление комментариев, реализация основной логики. Каждый. . .
Как добавить локальную ветку в удалённый репозиторий Git
hw_wired 12.02.2025
Локальная ветка в Git - это изолированная линия разработки, существующая только на вашем компьютере. Представьте себе дерево с множеством веток - каждая ветка может расти в своем направлении, не. . .
Статическое отражение в C++
stackoverflow 12.02.2025
Статическое отражение представляет собой мощный механизм, позволяющий программам анализировать и манипулировать своей собственной структурой во время компиляции. Эта возможность открывает. . .
C++ в 21 веке - Бьярне Страуструп
stackoverflow 12.02.2025
В современном мире разработки программного обеспечения C++ продолжает оставаться одним из ключевых языков программирования, несмотря на свой солидный возраст - более 45 лет с момента создания. За это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru