Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.70/140: Рейтинг темы: голосов - 140, средняя оценка - 4.70
0 / 0 / 0
Регистрация: 08.09.2015
Сообщений: 18

Как в Code::Blocks сделать визуальное приложение?

08.09.2015, 18:25. Показов 27277. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
кто-нибудь пользовался code::block? подскажите, как сделать визуальное приложение, чтобы там и окошки были и кнопочки. и я смог бы выбрать что будет при нажатии на ту или иную кнопку. и можно ли такое там забабахать вообще то?? или нужно другую прогу??
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.09.2015, 18:25
Ответы с готовыми решениями:

Как сделать Code Blocks на русском языке
на убунту поставил ее, она русская, поставил на винде и она вся на английском, где тут в настройках поставить русский

C++ (ооп) как из трех файлов (2 cpp и h) сделать одну программу? code blocks
C++ (ооп) как из трех файлов (2 cpp и h) сделать одну программу? code blocks

Как сделать, чтобы можно было писать нормально (на русском) в Code::Blocks?
как сделать так чтоб можно было писать нормально(на русском) в code block

31
0 / 0 / 0
Регистрация: 08.09.2015
Сообщений: 18
08.09.2015, 23:03  [ТС]
Студворк — интернет-сервис помощи студентам
с winAPI я не знаком. сегодня столкнулся впервые в таком виде. первый код - это в кодеблок такой код появляется при создании нового проекта. я там ничего не писал, только поэксперементировал - как текст поменять, размер окошка, его положение и прочие не нужные мне сейчас мелочи. а вот как сделать обработку кнопки (так вроде это называется) я не знаю. но могу стишок написать
ну и вот к спецам вопрос - до чего же я дорос?
подучил малясь массивы, знаю функции и директивы
rand, srand, else, if, switch. знаю где лежит мой speech.
указатели и ссылки, вижу ясно как картинки,
пробираясь в тёмный лес, классом ведаю как бес.
setlocale, time.аш, инт, unsignet, jvh,
и с рекурсией дружу, только вам не покажу!
знаю while и знаю for, другим циклам не в укор,
continue, void и float, сам весьма не обормот,
еще из терминов могу, описать бабу-ягу.
только вот на перепутье сам,
братец switch меня сковал.
в case 1 лежит API, с головой меня топи
в кейсе 2 биг брат фреймворк, одинокий гордый волк
в кейсе 3 лежит qt-ы, куда ж мне деться от беды?
вот и думаю куда, шаг мне сделать goto на...?
куда продолжить долгий путь, где интересно, и где суть?
по делу:
есть кнопка которая выдаёт мессадж. действие кнопки я так понимаю описано тут:
C++
1
2
3
case IDC_BTN_TEST:
                    MessageBox(hwndDlg, "ЭТО ТА САМАЯ КНОПКА?", "Information", MB_ICONINFORMATION);
                    return TRUE;
и если вот здесь:
C++
1
CONTROL "&ИГРА", IDC_BTN_TEST, "Button", 0x10010000, 8,  5, 46, 15
указаны атрибуты нужной мне кнопки
то судя по всему тут
C++
1
#define IDC_BTN_TEST 1001
должен содержаться поведенческий код обработки событий этой кнопки. но это общие рассуждения, а если поконкретней, то наверное стоит начать с вопроса - нужно ли мне скомпилировать код игры и положить в отдельный экзешник и потом думать как дать на него ссылку? или же пусть он будет в виде кода, который нужно куда-то вставить (о плохом не думать)? и если второе, то сразу возникает вопрос - а может ли быть в программе 2 майна?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
08.09.2015, 23:08
Цитата Сообщение от goto_ Посмотреть сообщение
нужно ли мне скомпилировать код игры и положить в отдельный экзешник и потом думать как дать на него ссылку?
Не нужно.

Цитата Сообщение от goto_ Посмотреть сообщение
а может ли быть в программе 2 майна?
Нет.

Цитата Сообщение от goto_ Посмотреть сообщение
то судя по всему тут ... должен содержаться поведенческий код обработки событий этой кнопки
Это всего лишь идентификатор кнопки.

Цитата Сообщение от goto_ Посмотреть сообщение
действие кнопки я так понимаю описано тут
Да.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
08.09.2015, 23:09
Для ввода числа добавляешь поле ввода, для вывода сообщений пользователю - обычный текст, и кнопку внизу, типа "далее" или "готово".
0
0 / 0 / 0
Регистрация: 08.09.2015
Сообщений: 18
08.09.2015, 23:20  [ТС]
castaway, что значит это
C++
1
hwndDlg
и
C++
1
MB_ICONINFORMATION
?
и это что в уме не приложу
C++
1
2
3
4
5
6
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    hInst = hInstance;
 
    // The user interface is a modal dialog box
    return DialogBox(hInstance, MAKEINTRESOURCE(DLG_MAIN), NULL, (DLGPROC)DialogProc);
может то, что происходит при нажатии на кнопку "игра"?

Добавлено через 1 минуту
а ну да! получается это функция. а это значение, которое она возвращает
return DialogBox(hInstance, MAKEINTRESOURCE(DLG_MAIN), NULL, (DLGPROC)DialogProc);
в виде диалогового окна. я прав?

Добавлено через 1 минуту
nmcf, да я уж не замахиваюсь так круто. мне бы для начала просто чтобы хоть в консоли приложение запускалось без окошек. но с нажатия кнопки
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
08.09.2015, 23:23
Какой смысл запускать твоё древнее приложение по нажатию кнопки? Это CreateProcess() вызывать, только в сторону уйдёшь от своей задачи.
Да тебе не надо этот шаблон трогать, весь твой код должен быть в case IDC_BTN_TEST, ну или в функцию вынеси его и вызывай. И какую-то переменную, состояние хранить. Начало игры, конец и прочее.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
08.09.2015, 23:26
hwndDlg - HANDLE окна.
MB_ICONINFORMATION - параметр функции. Описание на MSDN.

Я тебя не понимаю.. Мне кажется что ты либо не не можешь думать/искать, либо просто не хочешь.
Плюс ко всему задаёшь такие вопросы, ответ на которые знает любой новичёк.
Подучи сначала хотя бы язык Си.
0
0 / 0 / 0
Регистрация: 08.09.2015
Сообщений: 18
08.09.2015, 23:40  [ТС]
вот тут надо было стишок писать
nmcf, просто мне так хочется. я очень себя люблю, и хочу исполнять свои желания. смысл как раз в этом - в исполнении своих желаний. иначе стал бы я писать аналог игры 27 летней давности?
castaway, неужели нельзя изучить с++ не уча Си? и видимо не каждый новичок знает ответы на эти вопросы. я же уже писал, что это мой первый проект за пределами консольных приложений. если уж быть до конца честным, то я даже не знаю что такое HANDLE

Добавлено через 3 минуты
nmcf,
Это CreateProcess() вызывать, только в сторону уйдёшь от своей задачи.
у меня нет никакой задачи. вернее есть, но поставил её я сам для себя. итак, CreateProcess() пишется тут:
C++
1
2
3
case IDC_BTN_TEST:
                    CreateProcess(.....................);
                    return TRUE;
да? что указывается в скобках?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
08.09.2015, 23:43
Цитата Сообщение от goto_ Посмотреть сообщение
castaway, неужели нельзя изучить с++ не уча Си?
Можно. Я не согласен с теми кто говорят обратное. Просто WinAPI на ~80% состоит из Си.
Я крайне советую почитать тебе какую-нибудь хорошую книгу по С++ (в этом разделе они часто упоминаются).

Цитата Сообщение от goto_ Посмотреть сообщение
то я даже не знаю что такое HANDLE
Это просто указатель, который указывает на какой-то объект внутри WinAPI.
0
0 / 0 / 0
Регистрация: 08.09.2015
Сообщений: 18
08.09.2015, 23:57  [ТС]
castaway, я читаю. но это не мешает мне время от времени забегать вперёд и ухватывать кусочки
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
09.09.2015, 03:51
Цитата Сообщение от goto_ Посмотреть сообщение
вспомнить как раньше в неё играли и дивились до чего техника дошла.
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
/*
 * main.cpp
 *
 *  Created on: 09.09.2015
 *      Author: sasha
 */
 
 
#include <gtkmm.h>
#include <random>
#include <chrono>
#include <sstream>
#include <string>
 
 
 
class MainWindow : public Gtk::Window
{
public:
    MainWindow ()
    {
        add( _mainVBox ) ;
        _mainVBox.pack_start( _mainMessage , Gtk::PACK_SHRINK ) ;
        _mainVBox.pack_start( _replyHBox , Gtk::PACK_SHRINK ) ;
        _replyHBox.pack_start( _replyLabel , Gtk::PACK_SHRINK ) ;
        _replyHBox.pack_start( _replyText , Gtk::PACK_SHRINK ) ;
        _mainVBox.pack_start( _sendReply , Gtk::PACK_SHRINK ) ;
        _mainVBox.pack_start( _resultMessage , Gtk::PACK_SHRINK ) ;
 
        _replyText.set_max_length (10) ;
        show_all_children() ;
    }
 
    void set_main_label_text ( const Glib::ustring & newText )
    {
        _mainMessage.set_text( newText ) ;
    }
 
 
    void set_result_message ( const Glib::ustring & newText )
    {
        _resultMessage.set_text( newText ) ;
    }
 
 
    void set_reply_text ( const Glib::ustring & newText )
    {
        _replyText.set_text( newText ) ;
    }
 
 
 
    Glib::ustring get_reply_text ( )
    {
        return _replyText.get_text() ;
    }
 
 
    void set_button_text ( const Glib::ustring & newText )
    {
        _sendReply.set_label( newText ) ;
    }
 
 
    void set_reply_label_text ( const Glib::ustring & newText )
    {
        _replyLabel.set_label( newText ) ;
    }
 
 
    void set_reply_editable ( bool value )
    {
        _replyText.set_editable( value ) ;
    }
 
    template < typename Func >
    void button_clicked_new_handler ( Func fn  )
    {
        static sigc::connection lastConnection ;
        if ( !lastConnection.empty() )
            lastConnection.disconnect() ;
        lastConnection = _sendReply.signal_clicked().connect( fn ) ;
    }
private:
    Gtk::VBox _mainVBox ;
    Gtk::HBox _replyHBox ;
    Gtk::Button _sendReply ;
    Gtk::Label _mainMessage ;
    Gtk::Entry _replyText ;
    Gtk::Label _replyLabel ;
    Gtk::Label _resultMessage ;
} ;
 
 
 
 
 
class GameCtrl
{
public:
    GameCtrl ( )
        : generator ( std::chrono::system_clock::now().time_since_epoch().count() )
    {
        game_wait_start() ;
    }
 
    Gtk::Window & get_window ()
    {
        return _mainWindow ;
    }
 
private:
 
    void start_new_game ()
    {
        std::uniform_int_distribution<int> distribution(0 , 1000) ;
        _answer = distribution ( generator ) ;
        _mainWindow.set_main_label_text( Glib::ustring::compose( "Я загадал число от %1 до %2. Угадаете его?" , distribution.min() , distribution.max() ) ) ;
        _mainWindow.set_result_message( "" ) ;
        _mainWindow.set_reply_text ( "" ) ;
        _mainWindow.set_button_text ( "Ответить" ) ;
        _mainWindow.button_clicked_new_handler( sigc::mem_fun ( *this , &GameCtrl::send_reply ) ) ;
        _mainWindow.set_reply_editable ( true ) ;
    }
 
 
    void send_reply ()
    {
        static std::stringstream ss ;
        static std::string ec ;
 
        ss.clear() ;
        ss.str ( _mainWindow.get_reply_text().c_str() ) ;
        uint32_t userAnswer ;
 
        if ( ss >> userAnswer )
        {
            if ( ss >> ec )
            {
                set_invalid_message() ;
                return ;
            }
            if ( userAnswer == _answer )
            {
                _mainWindow.set_result_message( "Молодец, угадал. Держи в щи!" ) ;
                game_wait_start() ;
            }
            else
            {
                Glib::ustring str = Glib::ustring::compose ( "Твоё число (%1) %2 моего" , userAnswer , (userAnswer<_answer?"Меньше":"Больше") ) ;
 
                _mainWindow.set_result_message( str ) ;
            }
        }
        else
        {
            set_invalid_message() ;
        }
 
    }
 
    void game_wait_start ()
    {
        _mainWindow.button_clicked_new_handler( sigc::mem_fun ( *this , &GameCtrl::start_new_game ) ) ;
        _mainWindow.set_main_label_text( Glib::ustring::compose( "Начните новую игру" , 0 , _answer ) ) ;
        _mainWindow.set_button_text( "Начать игру" ) ;
        _mainWindow.set_reply_label_text( "Ваш ответ: " ) ;
        _mainWindow.set_reply_text( "" ) ;
        _mainWindow.set_reply_editable ( false ) ;
    }
 
    void set_invalid_message ()
    {
        _mainWindow.set_result_message( "Invalid value" ) ;
        _mainWindow.set_reply_text ( "" ) ;
    }
 
    std::mt19937 generator ;
    uint32_t _answer ;
    MainWindow _mainWindow ;
} ;
 
 
 
 
int main ( int argc , char ** args )
{
    Glib::RefPtr < Gtk::Application > app = Gtk::Application::create( argc , args , "" ) ;
    GameCtrl game ;
    return app->run( game.get_window() ) ;
}
Кликните здесь для просмотра всего текста
1
0 / 0 / 0
Регистрация: 08.09.2015
Сообщений: 18
09.09.2015, 07:30  [ТС]
Croessmah, спасибо чувак! но от моего кода ничегошеньки не осталось! и игра в 89 была в дос окошке, а не в виндоус модэрн))

пс: в чем видео записываете уважаемый??
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
09.09.2015, 07:56
goto_, Simple Screen Recorder
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.09.2015, 07:56

X-Code: как сделать первое приложение для iOS?
Добрый день! Изучаю обьектив-с. Базовые понятия имею. Конечно очень многого не понимаю и не знаю. Ищу заинтересованных в коллетивном...

Как настроить Code::Blocks
Всем доброго времени суток. Опишу суть проблемы. Пишу под AVR микроконтроллеры фирмы Atmel. Скачал и установил среду разработки...

Как скомпилировать в Code::Blocks?
Здравствуйте, не компилируется программа. нажимаю на build and run и ничего не происходит. #include &lt;iostream&gt; #include...

Как компилировать в Code::Blocks?
На самом деле ерунда, просто для меня( как для новичка трудно). Я прохожу обучение по книжке &quot;С++ за 21 день&quot;( уже понял, что за...

Как настроить Code::Blocks?
Ну я подключаю open gl в Code Blocks в include скинул headers файлы lib в lib кинул подключил все в настройках, а куда собственно dll...


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru