Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
 Аватар для krigan
1 / 1 / 3
Регистрация: 31.10.2012
Сообщений: 93

Вывод сгенерированого числа в окне сообщений

23.02.2015, 18:17. Показов 4231. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание:

Написать приложение, которое «угадывает» задуманное пользователем число от 1 до 100.
Для запроса к пользователю использовать окна сообщений. После того, как число отгадано,
необходимо вывести количество попыток, потребовавшихся для этого,
и предоставить пользователю возможность сыграть еще раз, не завершая программу.
Окна сообщений следует оформить кнопками и иконками в соответствии с конкретной ситуацией.

Всё шло гладко пока не добрался до вывода сгенерированого числа и счётчика попыток в окне сообщений. Не разобрался как подключать переменные к окну сообщения для вывода на экран. Покажите пожалуйста.

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
#include<iostream>
#include <windows.h> //Эта директива подключает к программе главный заголовочный файл Windows приложений
#include <tchar.h>
#include <stdlib.h>
#include<time.h>
using namespace std;
 
LRESULT CALLBACK WindowProc(HWND, UINT, WPARAM, LPARAM); // прототип оконной функуции CALLBACK
TCHAR szClassWindow[] = TEXT("WIN API ахаха что ты делаешь, перестань"); // текст отображается в утилите Spy++
 
INT WINAPI _tWinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPTSTR lpszCmdLine, int nCmdShow) // Эта функция эквивалентна функции main 
    //для DOS или UNIX, то есть с нее всегда начинается выполнение программы. 
{
    HWND hWnd; //hWnd — дескриптор родительского окна. Он принимает значение NULL, если родительского окна нет.
    MSG Msg; //msg — это структура типа MSG, которая определена в заголовочных файлах Windows
    WNDCLASSEX wcl; // имя класса
 
    // ЗАПОЛНЯЕМ СТРУКТУРУ КЛАССА ОКНА
    wcl.cbSize = sizeof(wcl); //размер структуры в байтах
    wcl.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; //стиль класса окна
    wcl.lpfnWndProc = WindowProc; //указатель на функцию окна (оконную процедуру)
    wcl.cbClsExtra = 0;
    wcl.cbWndExtra = 0;
    wcl.hInstance = hInst; // дискриптор экземпляра приложения в которм находится оконное приложение
    wcl.hIcon = LoadIcon(NULL, IDI_QUESTION); //дискриптор пиктограммы
    wcl.hCursor = LoadCursor(NULL, IDC_HELP); //дискриптор курсора
    wcl.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //дискриптор кисти для закраски фона окна 
    wcl.lpszClassName = szClassWindow; //указатель на имя класса
    wcl.lpszMenuName = NULL; //указатель на меню
    wcl.hIconSm = LoadIcon(NULL, IDI_QUESTION); //дискриптор малой пиктограмма «?»
 
    // РЕГИСТРИРУЕМ КЛАСС ОКНА
    if (!RegisterClassEx(&wcl))
    {
        return 0;
    }
 
    // СОЗДАЁМ ОСНОВНОЕ ОКНО ПРИЛОЖЕНИЯ
    hWnd = CreateWindowEx(
        0,
        szClassWindow,
        TEXT("DZ_C++_22022015 - Угадай число"),
        WS_OVERLAPPEDWINDOW, //Сочетание стилей WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX и WS_MAXIMIZEBOX
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        NULL,
        NULL,
        hInst, //дескриптор экземпляря приложения
        NULL);
 
    // ПОКАЗЫВАЕМ НАШЕ ОКНО
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);
 
    // ВЫПОЛНЯЕМ ЦИКЛ ОБРАБОТКИ СООБЩЕНИЙ ДО ЗАКРЫТИЯ ПРИЛОЖЕНИЯ
    while (GetMessage(&Msg,NULL,0,0))
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
 
    return Msg.wParam;
 
}
 
 
LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam) //это оконная процедура для главного окна
{
    UINT item = 0;
    HDC hDC;
    PAINTSTRUCT ps;
    RECT rect;  
    srand(time_t(NULL));
    int ch, count = 0;
 
    switch (uMessage)
    {
 
    case WM_PAINT:
         hDC = BeginPaint(hWnd, &ps);
         GetClientRect(hWnd, &rect);
         DrawText(hDC, TEXT("Добро пожаловать в игру 'Угадай число!'. Чтобы начать игру нажмите левую клавишу мыши."), -1, &rect,
         DT_SINGLELINE | DT_CENTER | DT_VCENTER );
         EndPaint(hWnd, &ps);
         break;
    
    case WM_LBUTTONDOWN:
        
        while (item!=IDYES)
        {
            ch=rand()%100;
            count++;
            item = MessageBox(hWnd,TEXT("Это число"),TEXT("ЭТО ЧИСЛО?"),MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2);
            
        }
        
        {
        MessageBox(hWnd,TEXT("ПОБЕДА!"),TEXT("УРА!"),MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2);
        }
 
    case WM_CLOSE:
         item = MessageBox(hWnd, TEXT ("Вы уверены что хотите выйти?"),TEXT(""), MB_YESNO | MB_ICONQUESTION);
         if (IDYES == item)
         DestroyWindow(hWnd);
         break;
 
    case WM_DESTROY:
         PostQuitMessage(0);
         break;
 
    default:
        return DefWindowProc(hWnd, uMessage, wParam, lParam);   
        
    }
 
    return 0;
    
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.02.2015, 18:17
Ответы с готовыми решениями:

Система личных сообщений. Вывод списка сообщений.
Доброе время суток! Возникла проблема с почтой, а конкретно не могу вывести всю переписку сообщений и входящих и исходящих с...

Все четные числа вывести в одном окне, в строчку; все нечетные числа - во втором окне
Ввести массив из 10 чисел. Все четные числа вывести в одном окне, в строчку; все нечетные числа - во втором окне, в столбик. Второе окно...

Не читаемый шрифт в окне сообщений
Здравствуйте. win7 64 С некоторых пор при установке или удалении программ помимо окон с читаемыми шрифтами, появляется окно с не...

11
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
24.02.2015, 08:16
так можно -
C++
1
2
3
itoa(Number,Show,10);
                
                MessageBoxA(hwnd,Show,"",MB_OK);
1
 Аватар для krigan
1 / 1 / 3
Регистрация: 31.10.2012
Сообщений: 93
24.02.2015, 10:04  [ТС]
Show - это функция? Покажи, плыз, как компануется. Я впервые имею дело с Api, по книге не всё понял.
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
24.02.2015, 12:34
Цитата Сообщение от krigan Посмотреть сообщение
Show - это функция?
нет Show -
C++
1
char Show[5];
Добавлено через 1 минуту
Цитата Сообщение от krigan Посмотреть сообщение
Я впервые имею дело с Api, по книге не всё понял.
При чём тут WinAPI ? Вот из этого -
Цитата Сообщение от Игорь с++ Посмотреть сообщение
itoa(Number,Show,10);
можно было понять , что Show это переменная типа char

Добавлено через 47 секунд
http://www.cplusplus.com/reference/cstdlib/itoa/
1
 Аватар для krigan
1 / 1 / 3
Регистрация: 31.10.2012
Сообщений: 93
24.02.2015, 13:06  [ТС]
Классно когда всё понимаешь, а я не понял. Но компилятору всё равно твой вариант не понравился:

error C4996: 'itoa': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _itoa. See online help for details
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
24.02.2015, 14:03
ну и ? В чём же дело ? Сделай как он тебе говорит ( учит ) .
1
 Аватар для krigan
1 / 1 / 3
Регистрация: 31.10.2012
Сообщений: 93
24.02.2015, 14:05  [ТС]
Ну и?
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
24.02.2015, 14:08
Цитата Сообщение от krigan Посмотреть сообщение
Ну и?
что ?

Добавлено через 20 секунд
студия какая ?
0
 Аватар для krigan
1 / 1 / 3
Регистрация: 31.10.2012
Сообщений: 93
24.02.2015, 14:09  [ТС]
Visual Studio 2012
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
24.02.2015, 14:22
Лучший ответ Сообщение было отмечено krigan как решение

Решение

так ?
Вложения
Тип файла: zip Win32Project1.zip (9.65 Мб, 62 просмотров)
2
 Аватар для krigan
1 / 1 / 3
Регистрация: 31.10.2012
Сообщений: 93
24.02.2015, 14:47  [ТС]
Это ты по профессорски сделал. Молодец. Я начинающий и мне многое только предстоит понять.
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
24.02.2015, 15:11
Цитата Сообщение от krigan Посмотреть сообщение
Это ты по профессорски сделал. Молодец. Я начинающий и мне многое только предстоит понять.
Ты просто пойми там дело не в WinAPI , а в самом языке , тебе всего лишь надо было из int перевести в char и всё.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.02.2015, 15:11
Помогаю со студенческими работами здесь

[Решено] Иероглифы в окне сообщений компилятора
Здравствуйте, начал осваивать qt, открыл руководство для новичков, повторил пункт 2.2, добавив две кнопки и два поля, при компиляции выдало...

Покажите элементы массива в окне сообщений в следующем порядке
Здравствуйте, прошу помощи у вас, умников! Опишите в программе одномерный массив из 7 элементов. Присвойте значения элементам- целые...

Как запретить вывод системных сообщений и вместо системных сообщений открыть Form1?
как запретить ВЫВОД СИСТЕМНЫХ СООБЩЕНИЙ И ВМЕСТО СИСТЕМНЫХ СООБЩЕНИЙ ОТКРЫТЬ ФОРМУ &quot;FORM1&quot;

Строка: Показать в окне сообщений символы с кодами от 128 до 148.
Здравствуйте! Необходимо выполнить следующее задание: Показать в окне сообщений символы с кодами от 128 до 148.

Чем отличается цикл сообщений в скрытом окне от бесконечного цикла?
Написал прогу под WinAPI, которая перебирает все окна в бесконечном цикле #include &lt;windows.h&gt; BOOL CALLBACK EnumProc(HWND...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru