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

Очистка окна и сохранение bmp

26.05.2019, 13:51. Показов 1234. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу курсовую по системному программированию.
Задача следующая: нарисовать параболу по 3 точкам, сделать рабочие кнопки "новое задание" и "сохранить". Сохранение в bmp.
Парабола с горем пополам получилась, а как сделать остальное?

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
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
// Kurshach.cpp : Определяет точку входа для приложения.
//
 
#include "stdafx.h"
#include "Kursach.h"
 
#define MAX_LOADSTRING 100
 
// Глобальные переменные:
HINSTANCE hInst;                                // текущий экземпляр
WCHAR szTitle[MAX_LOADSTRING];                  // Текст строки заголовка
WCHAR szWindowClass[MAX_LOADSTRING];            // имя класса главного окна
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
BOOL Line(HDC hdc, int x1, int y1, int x2, int y2);
double getA(int x1, int y1, int x2, int y2, int x3, int y3);
double getB(int x1, int y1, int x2, int y2, double a);
double getC(int x1, int y1, int x2, int y2, double a);
char szProgName[] = "Имя программы";
int points[3][2] = {};
int check = 0;
int xView, yView, max, min, length;
double y, a, b, c;
 
// Отправить объявления функций, включенных в этот модуль кода:
ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);
 
 
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
    _In_opt_ HINSTANCE hPrevInstance,
    _In_ LPWSTR    lpCmdLine,
    _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);
 
    // TODO: Разместите код здесь.
 
    // Инициализация глобальных строк
    LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadStringW(hInstance, IDC_KURSACH, szWindowClass, MAX_LOADSTRING);
    MyRegisterClass(hInstance);
 
    // Выполнить инициализацию приложения:
    if (!InitInstance(hInstance, nCmdShow))
    {
        return FALSE;
    }
 
    HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_KURSACH));
 
    MSG msg;
 
    // Цикл основного сообщения:
    while (GetMessage(&msg, nullptr, 0, 0))
    {
        if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
 
    return (int)msg.wParam;
}
 
 
 
//
//  ФУНКЦИЯ: MyRegisterClass()
//
//  ЦЕЛЬ: Регистрирует класс окна.
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
    WNDCLASSEXW wcex;
 
    wcex.cbSize = sizeof(WNDCLASSEX);
 
    wcex.style = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc = WndProc;
    wcex.cbClsExtra = 0;
    wcex.cbWndExtra = 0;
    wcex.hInstance = hInstance;
    wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_KURSACH));
    wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
    wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_KURSACH);
    wcex.lpszClassName = szWindowClass;
    wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
 
    return RegisterClassExW(&wcex);
}
 
//
//   ФУНКЦИЯ: InitInstance(HINSTANCE, int)
//
//   ЦЕЛЬ: Сохраняет маркер экземпляра и создает главное окно
//
//   КОММЕНТАРИИ:
//
//        В этой функции маркер экземпляра сохраняется в глобальной переменной, а также
//        создается и выводится главное окно программы.
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
    hInst = hInstance; // Сохранить маркер экземпляра в глобальной переменной
 
    HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);
 
    if (!hWnd)
    {
        return FALSE;
    }
 
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);
 
    return TRUE;
}
 
//
//  ФУНКЦИЯ: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  ЦЕЛЬ: Обрабатывает сообщения в главном окне.
//
//  WM_COMMAND  - обработать меню приложения
//  WM_PAINT    - Отрисовка главного окна
//  WM_DESTROY  - отправить сообщение о выходе и вернуться
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC hdc; //создаём контекст устройства
    PAINTSTRUCT ps; //создаём экземпляр структуры графического вывода
    HPEN hPenRed; //Объявляется кисть
    HPEN hPenWhite; //Объявляется кисть
    hPenRed = CreatePen(PS_SOLID, 1, RGB(255, 0, 0)); //Создаётся объект
    hPenWhite = CreatePen(PS_SOLID, 1, RGB(0, 0, 0)); //Создаётся объект
 
 
 
    int x, y;
    int lineSize = 4;
    switch (message)
    {
    case WM_COMMAND:
    {
        int wmId = LOWORD(wParam);
        // Разобрать выбор в меню:
        switch (wmId)
        {
        case IDM_ABOUT:
            DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
            break;
        case IDM_EXIT:
            DestroyWindow(hWnd);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
    }
    break;
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
            //сообщение рисования
    case WM_SIZE:
        xView = LOWORD(lParam);
        yView = HIWORD(lParam);
 
        break;
 
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
 
        for (int i(0); i < 3; i++)
        {
            if (points[i][0] != NULL)
            {
                if (i == 1)
                    SelectObject(hdc, hPenRed); //Объект делается текущим
                else
                    SelectObject(hdc, hPenWhite); //Объект делается текущим
                Line(hdc, points[i][0] - lineSize + 1, points[i][1] - lineSize + 1, points[i][0] + lineSize, points[i][1] + lineSize);
                Line(hdc, points[i][0] + lineSize - 1, points[i][1] - lineSize + 1, points[i][0] - lineSize, points[i][1] + lineSize);
            }
        }
 
        //Отрисовка линий при изменении размеров окна
        for (int i(1); i < 3; i++)
        {
            if (points[i][0] != NULL)
            {
                Line(hdc, points[i - 1][0], points[i - 1][1], points[i][0], points[i][1]);
            }
        }
 
        EndPaint(hWnd, &ps);
        break;
    case WM_LBUTTONDOWN:
 
        hdc = GetDC(hWnd);
 
        //узнаём координаты
        x = LOWORD(lParam);
        y = HIWORD(lParam);
 
        // Записываем координаты в массив
        if (check < 3)
        {
            points[check][0] = x;
            points[check][1] = y;
        }
 
        //Рисуем крестик при клике мыши
        if (check < 3)
        {
            if (check == 1)
                SelectObject(hdc, hPenRed); //Объект делается текущим
            else
                SelectObject(hdc, hPenWhite); //Объект делается текущим
            Line(hdc, x - lineSize + 1, y - lineSize + 1, x + lineSize, y + lineSize);
            Line(hdc, x + lineSize - 1, y - lineSize + 1, x - lineSize, y + lineSize);
            check++;
 
        }
 
        //соединяем линиями кресты (потом изменить на параболу)
        if (check == 3)
        {
            a = getA(points[0][0], points[0][1], points[1][0], points[1][1], points[2][0], points[2][1]);
            b = getB(points[0][0], points[0][1], points[1][0], points[1][1], a);
            c = getC(points[0][0], points[0][1], points[1][0], points[1][1], a);
            for (int i(0); i < 3; i++)
            {
                if (i == 0)
                {
                    min = points[i][0];
                    max = points[i][0];
                }
                else
                {
                    if (points[i][0] < points[i - 1][0])
                        min = points[i][0];
                    if (points[i][0] > points[i - 1][0])
                        max = points[i][0];
                }
 
            }
 
            length = max - min;
            MoveToEx(hdc, points[0][0], points[0][1], NULL);
            int check;
            for (int i(0); i < length; i++)
            {
                check = min + i;
                y = (a * (check*check)) + (b * check) + c;
 
                LineTo(hdc, check, y);
            }
 
        }
 
        //обновляем окно
        ValidateRect(hWnd, NULL);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
 
// Обработчик сообщений для окна "О программе".
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;
 
    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}
//-------------------------------
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{
    HWND hWnd;
    MSG lpMsg;
    WNDCLASS w; //создаём экземпляр структуры WNDCLASS
 
                //И начинаем её заполнять
    w.lpszClassName = szProgName; //имя программы - объявлено выше
    w.hInstance = hInstance; //идентификатор текущего приложения
    w.lpfnWndProc = WndProc; //указатель на функцию окна
    w.hCursor = LoadCursor(NULL, IDC_ARROW); //загружаем курсор
    w.hIcon = 0; //иконки у нас не будет пока
    w.lpszMenuName = 0; //и меню пока не будет
    w.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //цвет фона окна
    w.style = CS_HREDRAW | CS_VREDRAW; //стиль - перерисовываемое по х и по у
    w.cbClsExtra = 0;
    w.cbWndExtra = 0;
 
    //Если не удалось зарегистрировать класс окна - выходим
    if (!RegisterClass(&w))
        return 0;
 
    HMENU main_menu = CreateMenu();
    HMENU menu_help = CreatePopupMenu();
    HMENU menu_view = CreatePopupMenu();
    HMENU menu_new = CreatePopupMenu();
    AppendMenu(main_menu, MF_STRING | MF_POPUP, (UINT)menu_view, "&Файл");
    AppendMenu(main_menu, MF_STRING, 1001, "&Новое задание");
    AppendMenu(main_menu, MF_STRING | MF_POPUP, (UINT)menu_help, "&Справка");
 
    AppendMenu(menu_help, MF_STRING, IDM_ABOUT, "О программе...");
    AppendMenu(menu_view, MF_STRING, 1002, "Сохранить");
    AppendMenu(menu_view, MF_STRING, IDM_EXIT, "Выйти");
 
 
    //Создадим окно в памяти, заполнив аргументы CreateWindow
    hWnd = CreateWindow(szProgName, //Имя программы
        "Парабола", //Заголовок окна
        WS_OVERLAPPEDWINDOW, //Стиль окна - перекрывающееся
        100, //положение окна на экране по х
        100, //положение по у
        500, //ширина
        400, //высота
        (HWND)NULL, //идентификатор родительского окна
        (HMENU)main_menu, //идентификатор меню
        (HINSTANCE)hInstance, //идентификатор экземпляра программы
        (HINSTANCE)NULL); //отсутствие дополнительных параметров
    SetMenu(hWnd, main_menu);
 
    // много кода 
 
    DestroyMenu(main_menu);
    //Выводим окно из памяти на экран
    ShowWindow(hWnd, nCmdShow);
    //Обновим содержимое окна
    UpdateWindow(hWnd);
 
    //Цикл обработки сообщений
 
    while (GetMessage(&lpMsg, hWnd, 0, 0)) { //Получаем сообщение из очереди
        TranslateMessage(&lpMsg); //Преобразует сообщения клавиш в символы
        DispatchMessage(&lpMsg); //Передаёт сообщение соответствующей функции окна
    }
    return(lpMsg.wParam);
}
BOOL Line(HDC hdc, int x1, int y1, int x2, int y2)
{
    MoveToEx(hdc, x1, y1, NULL); //сделать текущими координаты x1, y1
    return LineTo(hdc, x2, y2); //нарисовать линию
}
 
 
double getA(int x1, int y1, int x2, int y2, int x3, int y3)
{
    //double s = (y3 - ((x3 * (y2 - y1) + x2 * y1 - x1 * y2) / (x2 - x1))); // целочисленное деление
    double s = (y3 - ((x3 * (y2 - y1) + x2 * y1 - x1 * y2) / ((double)x2 - x1)));
    double d = (x3 * (x3 - x1 - x2) + x1 * x2);
    return s / d;
}
 
double getB(int x1, int y1, int x2, int y2, double a)
{
    //double s = ((y2 - y1) / (x2 - x1)); // целочисленное деление
    double s = ((y2 - y1) / ((double)x2 - x1));
    double d = (a * (x1 + x2));
    return s - d;
}
 
double getC(int x1, int y1, int x2, int y2, double a)
{
    //double s = ((x2 * y1 - x1 * y2) / (x2 - x1)); // целочисленное деление
    double s = ((x2 * y1 - x1 * y2) / ((double)x2 - x1));
    double d = (a * x1 * x2);
    return s + d;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.05.2019, 13:51
Ответы с готовыми решениями:

Загрузка и сохранение BMP файла
Добрый день! Мне нужно загружать, а затем сохранять BMP файл, пока без обработки, просто загрузить в массив и потом из этого массива...

Очистка окна
Здравствуйте! Начал изучать Win32 API Программирую в MS Visual ST 2005 На окне рисую текст с помощью функции DrawText, простые...

Очистка окна от нарисованного
Добрый вечер. Подскажите,пожалуйста.Как очистить окно. Вывел в окно текст TextOut()и рисую кружок. Далее опять вывожу другой текст и...

1
.NET
133 / 91 / 44
Регистрация: 17.08.2015
Сообщений: 296
10.06.2019, 14:30
Возможно поздновато, но вот код с MSDN. Переделывал под себя.
Делает можно сказать "скриншот" окна с параболой и сохраняет в .bmp

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
int CaptureAnImage(HWND hWnd)
{
    HDC hdcWindow;
    HDC hdcMemDC = NULL;
    HBITMAP hbmScreen = NULL;
    BITMAP bmpScreen;
 
    // Retrieve the handle to a display device context for the client 
    // area of the window. 
    hdcWindow = GetDC(hWnd);
 
    // Create a compatible DC which is used in a BitBlt from the window DC
    hdcMemDC = CreateCompatibleDC(hdcWindow);
 
    if (!hdcMemDC)
    {
        MessageBox(hWnd, "CreateCompatibleDC has failed", "Failed", MB_OK);
        goto done;
    }
 
    // Get the client area for size calculation
    RECT rcClient;
    GetClientRect(hWnd, &rcClient);
 
    //This is the best stretch mode
    SetStretchBltMode(hdcWindow, HALFTONE);
 
 
    // Create a compatible bitmap from the Window DC
    hbmScreen = CreateCompatibleBitmap(hdcWindow, rcClient.right - rcClient.left, rcClient.bottom - rcClient.top);
 
    if (!hbmScreen)
    {
        MessageBox(hWnd, "CreateCompatibleBitmap Failed", "Failed", MB_OK);
        goto done;
    }
 
    // Select the compatible bitmap into the compatible memory DC.
    SelectObject(hdcMemDC, hbmScreen);
 
    // Bit block transfer into our compatible memory DC.
    if (!BitBlt(hdcMemDC,
        0, 0,
        rcClient.right - rcClient.left, rcClient.bottom - rcClient.top,
        hdcWindow,
        0, 0,
        SRCCOPY))
    {
        MessageBox(hWnd, "BitBlt has failed", "Failed", MB_OK);
        goto done;
    }
 
    // Get the BITMAP from the HBITMAP
    GetObject(hbmScreen, sizeof(BITMAP), &bmpScreen);
 
    BITMAPFILEHEADER   bmfHeader;
    BITMAPINFOHEADER   bi;
 
    bi.biSize = sizeof(BITMAPINFOHEADER);
    bi.biWidth = bmpScreen.bmWidth;
    bi.biHeight = bmpScreen.bmHeight;
    bi.biPlanes = 1;
    bi.biBitCount = 32;
    bi.biCompression = BI_RGB;
    bi.biSizeImage = 0;
    bi.biXPelsPerMeter = 0;
    bi.biYPelsPerMeter = 0;
    bi.biClrUsed = 0;
    bi.biClrImportant = 0;
 
    DWORD dwBmpSize = ((bmpScreen.bmWidth * bi.biBitCount + 31) / 32) * 4 * bmpScreen.bmHeight;
 
    // Starting with 32-bit Windows, GlobalAlloc and LocalAlloc are implemented as wrapper functions that 
    // call HeapAlloc using a handle to the process's default heap. Therefore, GlobalAlloc and LocalAlloc 
    // have greater overhead than HeapAlloc.
    HANDLE hDIB = GlobalAlloc(GHND, dwBmpSize);
    char *lpbitmap = (char *)GlobalLock(hDIB);
 
    // Gets the "bits" from the bitmap and copies them into a buffer 
    // which is pointed to by lpbitmap.
    GetDIBits(hdcWindow, hbmScreen, 0,
        (UINT)bmpScreen.bmHeight,
        lpbitmap,
        (BITMAPINFO *)&bi, DIB_RGB_COLORS);
 
    // A file is created, this is where we will save the screen capture.
    HANDLE hFile = CreateFile("save.bmp",
        GENERIC_WRITE,
        0,
        NULL,
        CREATE_ALWAYS,
        FILE_ATTRIBUTE_NORMAL, NULL);
 
    // Add the size of the headers to the size of the bitmap to get the total file size
    DWORD dwSizeofDIB = dwBmpSize + sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
 
    //Offset to where the actual bitmap bits start.
    bmfHeader.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) + (DWORD)sizeof(BITMAPINFOHEADER);
 
    //Size of the file
    bmfHeader.bfSize = dwSizeofDIB;
 
    //bfType must always be BM for Bitmaps
    bmfHeader.bfType = 0x4D42; //BM   
 
    DWORD dwBytesWritten = 0;
    WriteFile(hFile, (LPSTR)&bmfHeader, sizeof(BITMAPFILEHEADER), &dwBytesWritten, NULL);
    WriteFile(hFile, (LPSTR)&bi, sizeof(BITMAPINFOHEADER), &dwBytesWritten, NULL);
    WriteFile(hFile, (LPSTR)lpbitmap, dwBmpSize, &dwBytesWritten, NULL);
 
    //Unlock and Free the DIB from the heap
    GlobalUnlock(hDIB);
    GlobalFree(hDIB);
 
    //Close the handle for the file that was created
    CloseHandle(hFile);
 
    //Clean up
done:
    DeleteObject(hbmScreen);
    DeleteObject(hdcMemDC);
    ReleaseDC(hWnd, hdcWindow);
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.06.2019, 14:30
Помогаю со студенческими работами здесь

Сделать снимок окна, по имени из GetSaveFileName сохранить его в .bmp - ничего сложного
Хочу приделать возможность сохранения, взял фичечку отсюдаво https://www.cyberforum.ru/win-api/thread1012061.html прилепил - вызываю...

Сохранение bmp.
Кривые руки не дают покоя. Программа рисует галактики. Фон считывается из &quot;BlackBG2.bmp&quot; 400x400 24 битовый. Записываю в...

Сохранение BMP
Я только-только начинаю... не судите строго. код ошибки: 1&gt;ccccView.obj : error LNK2019: unresolved external symbol __imp__WriteBmp...

Сохранение в bmp
При попытке сохранения в bmp возникает ошибка &quot;В GDI+ возникла ошибка общего вида.&quot; public partial class Form1 : Form ...

Сохранение двух bmp
n = Convert.ToInt32(textBox1.Text); m = Convert.ToInt32(textBox2.Text); SaveFileDialog s =...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru