Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/22: Рейтинг темы: голосов - 22, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 07.12.2009
Сообщений: 58

Нужен пример интерфейса

15.10.2010, 19:42. Показов 4257. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помагите нужен пример интерфейса на С++. В заранее благодарен.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.10.2010, 19:42
Ответы с готовыми решениями:

Нужен пример с массивами
Не могу догнать, зачем нужен массив конкретно.

Нужен пример класса
Привести пример класса для работы с комплексными числами и содержащего перегруженную операцию для вычитания комплексных чисел.

Нужен пример цикла while
Помогите решить задачку или хотябы обьясните как делать а то сижу и думаю как это так реализовать

8
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
15.10.2010, 20:36
Вообще вопрос странный, а что конкретно интересует??
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
15.10.2010, 22:26
C++
1
2
3
4
5
6
#define struct interface
 
interface IHell1{
  virtual int getA() = 0;
  virtual int getB() = 0;
}
оно?
0
0 / 0 / 0
Регистрация: 07.12.2009
Сообщений: 58
16.10.2010, 11:34  [ТС]
А рабочий вариант кода можно
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
16.10.2010, 13:01
Jasper, Вы для начала обяъсните, что подразумеваете под словом "интерфейс".
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
16.10.2010, 13:20
Jasper, имеется в виду GUI-приложение?
0
0 / 0 / 0
Регистрация: 07.12.2009
Сообщений: 58
16.10.2010, 13:39  [ТС]
Я имею ввиду что пользователь будет вводить данные не в командной строке а в не котором приложении что-то вроде этого
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
16.10.2010, 14:10
Тут в двух словах не объяснишь, смотрим сюда
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
16.10.2010, 14:22
Классная ссылка. Ну вот тебе пару примеров.
Простое GUI-приложение на Qt:
C++
1
2
3
4
5
6
7
8
9
#include <QtGui>
 
int main(int argc, char* argv[])
{
    QApplication app(argc, argv);
    QWidget wgt;
    wgt.show();
    return app.exec();
}
Приложение WinAPI с меню и вызываемым немодальным диалоговым окном:
main.cpp
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
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
/*
 * Написать программу, в которой используетс диалог для работы со структурами
 * данных, определяющими списки. Ввод элементов данных осуществляется с помощью
 * окна редактирования EDIT_BOX. Состояние списка выводится в окно списка LIST_BOX.
 * элемент списка удаляется, если по нему дважды щелкнуть курсором мыши.
 * 10. очередь, int, немодальный
 */
#include <windows.h>
#include <cstdlib>
#include <cstdio>
#include "res.h"
#include "mqueue.h"
 
my::queue mq;
 
#define SIZE 80
WCHAR szStr[SIZE + 1];
bool verbose;
 
// Оконная процедура
LRESULT CALLBACK WindowProc(
    HWND, // Дескриптор окна
    UINT, // Сообщение
    WPARAM, LPARAM); // Дополнительные данные
 
// Оконная процедура диалога
BOOL CALLBACK DialProc(HWND, UINT, WPARAM, LPARAM);
 
// Является ли строка целым числом
bool isnumber(const WCHAR* szStr, bool sign = false, bool null = true);
 
HINSTANCE hinst;
HWND hdlg = NULL;   // Дескриптор диалога
bool dlgStarted = false;
 
// Главная фукнция приложения
int WINAPI WinMain(
    HINSTANCE hthisinst,    // Текущий экземпляр приложения
    HINSTANCE hprevinst,    // Предыдущий экземпляр (всегда NULL)
    LPSTR lpszargs,         // Параметры командной строки
    int nwinmode)           // Способ показа окна
{
    hinst = hthisinst;
    verbose = true;
 
    HWND hwnd;  // Дескриптор окна
    HACCEL haccel; // Дескриптор акселераторов
    LPCWSTR szWindowClass = L"mwnd"; // Имя класса окна
    LPCWSTR szWindowTitle = L"ЧМВ лабораторная работа №3"; // Заголовок окна
    LPCWSTR szWindowMenu = L"MAINMENU"; // Имя меню
    LPCWSTR szWindowAccs = L"ACCS"; // Имя акселераторов
    LPCWSTR szWindowDial = L"DIAL"; // Имя диалога
    WNDCLASSEX wnd; // Класс (структура) окна
    MSG msg; // Структура сообщения
 
    wnd.cbSize = sizeof(WNDCLASSEX);    // Размер окна
    wnd.style = CS_HREDRAW | CS_VREDRAW;    // Стиль окна
    wnd.lpfnWndProc = WindowProc;   // Оконная процедура
    // Число зарезервированных доп. байтов после структуры окна
    wnd.cbClsExtra = 0; 
    // Число зарезервированных доп. байтов после экземпляра окна
    wnd.cbWndExtra = 0; 
    wnd.hInstance = hthisinst; // Дескриптор экземпляра окна
    wnd.hIcon = LoadIcon(hthisinst, IDI_APPLICATION); // Иконка приложения
    wnd.hCursor = LoadCursor(NULL, IDC_ARROW); // Указатель мыши
    // Дескриптор кисти фона
    wnd.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); 
    wnd.lpszMenuName = szWindowMenu; // Имя ресурса меню
    wnd.lpszClassName = szWindowClass; // Имя класса окна
    wnd.hIconSm = LoadIcon(wnd.hInstance, IDI_APPLICATION); // Маленькая иконка
    
    if(!RegisterClassEx(&wnd)) // Попытка регистрации класса окна
    {
        MessageBox( // Вывод модального сообщения
            NULL, // Дескриптор окна-владельца
            L"Не удалось зарегестрировать окно", // Текст сообщения
            L"Ошибка", // Заголовок сообщения
            MB_OK | MB_ICONERROR); // Содержимое и поведение окна сообщения
 
        return EXIT_FAILURE;
    }
 
    hwnd = CreateWindow( // Функция создания окна
        szWindowClass,
        szWindowTitle,
        WS_OVERLAPPEDWINDOW, // Стиль окна
        CW_USEDEFAULT, CW_USEDEFAULT, // Начальная позиция
        400, 300, // Начальные размеры
        // Дескриптор родительского окна
        HWND_DESKTOP, // Рабочий стол (= NULL)
        NULL, // Дескриптор меню
        hthisinst,
        NULL);
 
    if(!hwnd) // Если не удалось создать окно
    {
        MessageBox(NULL, L"Не удалось создать окно",
            L"Ошибка", MB_OK | MB_ICONERROR);
 
        return EXIT_FAILURE;
    }
 
    // Загрузка акселераторов
    haccel = LoadAccelerators(hthisinst, szWindowAccs);
    if(!haccel)
    {
        MessageBox(NULL, L"Не удалось загрузить горячие клавиши",
            L"Ошибка", MB_OK | MB_ICONERROR);
 
        return EXIT_FAILURE;
    }
 
    // Показ и обновление окна
    ShowWindow(hwnd, nwinmode);
    UpdateWindow(hwnd);
 
    // Цикл сообщений
    while(GetMessage( // Получение сообщений
        &msg, // Структура сообщения
        NULL, // Дескриптор окна, от которого получаются сообщения
        // Минимальные и максимальные значения, которые могут быть получены
        0, 0)) 
    {
        // Трансляция горячих клавиш
        if((!IsDialogMessage(hdlg, &msg)) &&
            (!TranslateAccelerator(hwnd, haccel, &msg)))
        {
            // Трансляция виртуальных клавиш в символьные сообщения
            TranslateMessage(&msg);
            // Отправка сообщений оконной процедуре
            DispatchMessage(&msg);
        }
    }
 
    return (int) msg.wParam;
}
 
// Оконная процедура
LRESULT CALLBACK WindowProc(
    HWND hwnd, UINT message,
    WPARAM wparam, LPARAM lparam)
{
    static LPCWSTR szDialogName = L"DIAL";
 
    switch(message)
    {
 
    case WM_CLOSE: // Закрытие окна
        // Запрашиваем подтверждение пользователя
        if((!verbose) || (MessageBox(hwnd, L"Вы уверены?", L"Завершение работы...",
            MB_YESNO | MB_ICONQUESTION) == IDYES)) 
            // ... и посылаем сообщение WM_DESTROY
            SendMessage(hwnd, WM_DESTROY, 0, 0);
        break;
 
    case WM_COMMAND: // Команда
        switch(LOWORD(wparam))
        {
 
        case IDM_HELP_ABOUT: // О программе
            MessageBox(hwnd, L"Человеко-машинное взаимодействие\n"
                L"Лабораторная работа №3\n"
                L"Диалоговые окна\n\nМаксимов С.Б.", 
                L"О программе",   MB_OK | MB_ICONASTERISK);
            break;
 
        case IDM_FILE_EXIT: // Выход из программы
            SendMessage(hwnd, WM_CLOSE, 0, 0);
            break;
 
        case IDM_FILE_DIALOG: // Создание диалога
            if(dlgStarted)
            {
                if(verbose)
                    MessageBox(hwnd, L"Уже запущено одно диалоговое окно!",
                        L"Ошибка", MB_OK | MB_ICONERROR);
            }
            else
            {
                hdlg = CreateDialog(hinst, szDialogName, hwnd, (DLGPROC) DialProc);
                dlgStarted = true;
            }
            break;
 
        case IDM_OPTIONS_VERBOSE:
            verbose = !verbose;
            break;
        }
        break;
 
    case WM_DESTROY: // Уничтожение окна
        // Отправка сообщения WM_QUIT с кодом выхода 0
        PostQuitMessage(EXIT_SUCCESS); 
        break;
 
    default: // Обработка в оконной процедуре по умолчанию
        return DefWindowProc(hwnd, message, wparam, lparam);
    }
 
    return 0;
}
 
// Является ли строка - числом
bool isnumber(const WCHAR* szStr, bool sign, bool null)
{
    if(*szStr == L'-')
    {
        if(sign)
            return false;
        else
            return isnumber(++szStr, true, null);
    }
    if(*szStr == L'0')
    {
        if(null)
            return false;
        else
            return isnumber(++szStr, true, false);
    }
    while(*szStr)
        if(iswdigit(*szStr++))
            return isnumber(szStr, true, false);
        else
            return false;
 
    return true;
}
 
// Оконная процедура диалога
BOOL CALLBACK DialProc(
    HWND hwnd, UINT message,
    WPARAM wparam, LPARAM lparam)
{
    switch(message)
    {
    case WM_INITDIALOG: // При загрузке диалогового окна
        // Печать всех имеющихся в очереди значений
        mq.print(szStr, SIZE, hwnd, IDD_LB1);
        return TRUE;
 
    case WM_COMMAND: // Обработка команд
        switch(LOWORD(wparam))
        {
 
        case IDD_LB1: // Сообщение от от ListBox
            if(HIWORD(wparam) == LBN_DBLCLK) // Двойной клик
            {
                // Удаление записи
                UINT i = SendDlgItemMessage(hdlg, IDD_LB1,
                    LB_GETCURSEL, 0, 0L);
                int val = mq.erase(i);
                if(verbose)
                {
                    _snwprintf(szStr, SIZE,
                        L"Удален %u-ый элемент - %d", i, val);
                    MessageBox(hdlg, szStr, L"Выбор сделан", MB_OK);
                }
                SendDlgItemMessage(hdlg, IDD_LB1,
                    LB_DELETESTRING, i, 0L);
            }
            break;
 
        case IDD_REMOVE: // Удаление элемента
            if(!mq.empty())
            {
                int val = mq.dequeue();
                if(verbose)
                {
                    _snwprintf(szStr, SIZE, 
                        L"Удален элемент из головы очереди - %d", val);
                    MessageBox(hdlg, szStr, L"Удаление", MB_OK);
                }
                SendDlgItemMessage(hdlg, IDD_LB1,
                    LB_DELETESTRING, 0, 0L);
            }
            else if(verbose)
                MessageBox(hdlg, L"Очередь пуста", L"Ошибка",
                    MB_OK | MB_ICONERROR);
            break;
 
        case IDD_CLEAR: // Очистка ListBox
            while(!mq.empty())
            {
                mq.dequeue();
                SendDlgItemMessage(hdlg, IDD_LB1,
                    LB_DELETESTRING, 0, 0L);
            }
            wcscpy(szStr, L"\0");
            SetDlgItemText(hdlg, IDD_EB1, szStr);
            break;
 
        case IDD_INPUT: // Ввод записи
            GetDlgItemText(hdlg, IDD_EB1, szStr, SIZE);
 
            if((*szStr) && (isnumber(szStr)))
            {
                int num = _wtoi(szStr);
                if(verbose)
                {
                    _snwprintf(szStr, SIZE, 
                        L"Введен новый элемент - %d", num);
                    MessageBox(hdlg, szStr, L"Ввод", MB_OK);
                }
                SendDlgItemMessage(hdlg, IDD_LB1, 
                    LB_ADDSTRING, 0, (LPARAM) szStr);
                mq.enqueue(num);
            }
            else if(verbose)
            {
                WCHAR msg[SIZE + 1];
                _snwprintf(msg, SIZE, 
                    L"\'%s\' не является целым числом", szStr);
                MessageBox(hdlg, msg, L"Ошибка", 
                    MB_OK | MB_ICONERROR);
            }
            wcscpy(szStr, L"\0");
            SetDlgItemText(hdlg, IDD_EB1, szStr);
            break;
 
        case IDD_CLOSE: // Закрытие диалогового окна
            DestroyWindow(hdlg);
            dlgStarted = false;
            hdlg = NULL;
            break;
        }
        return TRUE;
        break;
    }
    return FALSE;
}

res.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef RES_H
#define RES_H
 
#include <windows.h>
 
#define IDM_FILE_DIALOG     100
#define IDM_FILE_EXIT       101
#define IDM_OPTIONS_VERBOSE 150
#define IDM_HELP_ABOUT      200
 
#define IDD_LB1     300
#define IDD_EB1     301
#define IDD_INPUT   350
#define IDD_CLEAR   351
#define IDD_CLOSE   352
#define IDD_REMOVE  353
 
#endif // RES_H

res.rc
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
#include "res.h"
 
MAINMENU MENU
{
    POPUP "&Файл"
    {
        MENUITEM "&Диалог" IDM_FILE_DIALOG
        MENUITEM SEPARATOR
        MENUITEM "&Выход" IDM_FILE_EXIT
    }
    POPUP "&Опции"
    {
        MENUITEM "&Выводить сообщения" IDM_OPTIONS_VERBOSE
    }
    POPUP "&Помощь"
    {
        MENUITEM "&О программе" IDM_HELP_ABOUT
    }
}
 
ACCS ACCELERATORS
{
    VK_F1, IDM_HELP_ABOUT, VIRTKEY
    VK_F4, IDM_FILE_EXIT, VIRTKEY, ALT
    VK_F5, IDM_FILE_DIALOG, VIRTKEY
}
 
DIAL DIALOG 25, 25, 190, 100
CAPTION "Ввод и вывод"
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
{
    PUSHBUTTON "Завершение диалога", IDD_CLOSE, 10, 80, 80, 12,
        WS_CHILD | WS_VISIBLE | WS_TABSTOP
 
    PUSHBUTTON "Удалить", IDD_REMOVE, 10, 45, 80, 12,
        WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER
 
    PUSHBUTTON "Очистка", IDD_CLEAR, 10, 60, 80, 12,
        WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER
 
    DEFPUSHBUTTON "Ввод", IDD_INPUT, 10, 30, 80, 12,
        WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER
 
    EDITTEXT IDD_EB1, 10, 10, 80, 12,
        WS_CHILD | WS_VISIBLE | 
        WS_TABSTOP | WS_BORDER
 
    LISTBOX IDD_LB1, 100, 10, 80, 82,
        WS_CHILD | WS_VISIBLE | WS_VSCROLL |
        WS_TABSTOP | WS_BORDER | LBS_NOTIFY
}

mqueue.h
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
#ifndef LIST_H
#define LIST_H
 
#include <cstdlib>
#include <windows.h>
 
namespace my
{
    class queue
    {
 
    public:
 
        queue();
        queue(const queue& rhs);
        ~queue();
 
        void enqueue(int item);
        int dequeue();
        int erase(size_t index);
 
        void print(LPWSTR szStr, UINT size, HWND hwnd, UINT id);
        bool empty();
 
    private:
 
        struct node
        {
            int     data;
            node*   next;
            node(int item)
                : data(item), next(NULL)
            {
            }
        };
        
        node*   head;
        node*   tail;
    };
}
#endif // LIST_H

mqueue.cpp
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
#include "mqueue.h"
 
#include <cstdio>
 
namespace my
{
    queue::queue()
        : head(NULL), tail(NULL)
    {
    }
 
    queue::queue(const queue& rhs)
        : head(NULL), tail(NULL)
    {
        node* currnode = rhs.head;
        while(currnode)
        {
            enqueue(currnode->data);
            currnode = currnode->next;
        }
    }
 
    void queue::enqueue(int item)
    {
        node* newnode = new node(item);
        if(!tail)
            head = newnode;
        else
            tail->next = newnode;
        tail = newnode;
    }
 
    queue::~queue()
    {
        while(head)
        {
            node* delnode = head;
            head = head->next;
            delete delnode;
        }
        tail = NULL;
    }
 
    int queue::dequeue()
    {
        node* delnode = head;
        head = head->next;
        if(!head)
            tail = NULL;
        int retval = delnode->data;
        delete delnode;
        delnode = NULL;
        return retval;
    }
 
    int queue::erase(size_t index)
    {
        int retval;
        if(!index)
            retval = dequeue();
        else
        {
            node* delnode = head->next;
            node* prevnode = head;
            while(--index)
            {
                prevnode = delnode;
                delnode = delnode->next;
            }
            retval = delnode->data;
            prevnode->next = delnode->next;
            delete delnode;
            delnode = NULL;
 
        }
 
        return retval;
    }
 
    void queue::print(LPWSTR szStr, UINT size, HWND hwnd, UINT id)
    {
        node* currnode = head;
        while(currnode)
        {
            _snwprintf(szStr, size, L"%d", currnode->data);
            SendDlgItemMessage(hwnd, id, 
                LB_ADDSTRING, 0, (LPARAM) szStr);
            currnode = currnode->next;
        }
    }
 
    bool queue::empty()
    {
        return head == NULL;
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.10.2010, 14:22
Помогаю со студенческими работами здесь

Нужен пример классов
Привести пример классов с наследованием и доступом к компонентам их экземпляров через указатели на базовый и производный классы.

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

Для интерфейса достаточно только заголовочного файла или нужен еще файл .cpp
Собственно вопрос в теме. Например, я хочу создать интерфейс который будут другие классы реализовывать.

C++ строки нужен хотябы пример
С клавиатуры вводится текстовая строка. Написать программу которая подщитывает слова котрые имеют одинаковое количество гласных и согласных...

Нужен пример турнирной сортировки
Здравствуйте! Мне очень нужен пример турнирной сортировки , нигде не могу её найти . Читал про пирамидальную - это не турнирная случайно?...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru