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

Как начать работать новичку?

08.10.2021, 22:57. Показов 8646. Ответов 95
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть желание как-то переквалифицироваться в свои 43 года в программиста С++.

Уже примерно год изучаю CPP. С переменным успехом. Примерно год назад прошел онлайн обучение в академии Яндекс и на Степике. Купил и читаю Страуструпа "Язык программирования С++. Специальное издание". Хотел постажироваться, найти работу начинающего программиста. Попытки такого трудоустройста были безуспешны. Потом чуть остыл. Изучение ЯП забросил. Вот недавно продолжил. Все таки, считаю, что нужна реальная практика и какая-то подработка, потому что "учебное" программирование мне кажется не имеет смысла.

Может быть посоветуете, что можно сделать и как найти работу новичку?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.10.2021, 22:57
Ответы с готовыми решениями:

Как начать работать программируя на С/С++?
Вот заметил, что джуниоры в С/С++ никому не нужны, в отличие от джавы, например. У меня появилась пара вопросов: 1) Что делать, после...

Как начать работать в Visual C++ 2010
Здравствуйте. Никак не могу понять как нужно работать в Visual C++ 2010. Я только начинающий. Делаю следующее. Создаю проект: «Файл»...

с чего начать новичку С++ без опыта работы?
Такая проблема. Есть человек, прочитал 2 книжки по языку С++. Программистом конечно не назовёшь, но так, кодер нормальный. Как развиваться...

95
0 / 0 / 0
Регистрация: 05.10.2017
Сообщений: 15
09.10.2021, 13:46  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от hoggy Посмотреть сообщение
нужно понять одну вещь: на джуна тебя скорее всего не возьмут.
Почему? Джун -- это только возраст?
Я думал, что грейды джун, мидл, сеньор -- это про опыт в предмете, которым занимаешься.
0
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 3
09.10.2021, 13:56
Цитата Сообщение от alexu_007 Посмотреть сообщение
Пойдёт?
поправил свой(шоп радиус был 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
///----------------------------------------------------------------------------|
/// ...
///----------------------------------------------------------------------------:
#include <string>
#include <windows.h>
#include <gdiplus.h>
using namespace Gdiplus;
 
float a = 0.f;
 
void Ellips(Graphics* G)
{   HatchBrush* brush = new HatchBrush(
        HatchStyleDiagonalCross,
        Color(255,  0, 0, 255),
        Color(255,  0, 0, 255)
    );
    Pen* pen = new Pen(Color(255, 0, 0, 0), 3);
    pen->SetDashStyle(DashStyleDash);
 
    a += float(1.f);
 
    G->TranslateTransform(150.f, 150.f, Gdiplus::MatrixOrderAppend);
    G->FillEllipse (brush, 0, 0, 200, 200);
}
 
void draw()
{   HWND hWnd = GetConsoleWindow();
    HDC  hdc  = GetDC(hWnd);
 
    Graphics g(hdc);
 
    Rect paintRect(0,0,500,500);
    Bitmap   backBuffer   ( paintRect.Width, paintRect.Height, &g);
    Graphics* G = new Graphics(&backBuffer);
    G->SetSmoothingMode   ( SmoothingModeAntiAlias);
 
    ///-----------------------------|
    /// ГЛАВНЫЙ ЦИКЛ.               |
    ///-----------------------------:
    while(true)
    {   G->ResetTransform();
        G->Clear(Color(255, 255, 255, 255));
 
        Ellips(G);
 
        g.DrawImage(&backBuffer, 0, 0, 0, 0,
                                 paintRect.Width,
                                 paintRect.Height, UnitPixel);
        Sleep(50);
    }
    delete G;
}
 
///----------------------------------------------------------------------------|
/// Тест.
///----------------------------------------------------------------------------:
int main()
{   GdiplusStartupInput gdiplusStartupInput;
    ULONG_PTR           gdiplusToken;
    GdiplusStartup    (&gdiplusToken, &gdiplusStartupInput, NULL);
    setlocale(0, "");
    SetConsoleTitleW(L"Двойная буферизация.");
    system("mode 70,40");
 
    draw();
 
    GdiplusShutdown(gdiplusToken);
    return 0;
}
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6319 / 3044 / 1054
Регистрация: 01.06.2021
Сообщений: 11,624
09.10.2021, 14:18
XLAT, вы были правы, добавил -lgdiplus к опциям линкера, сработало
1
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6319 / 3044 / 1054
Регистрация: 01.06.2021
Сообщений: 11,624
09.10.2021, 14:22
Но не размер окна 500х500, а размер фона
Миниатюры
Как начать работать новичку?  
0
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 3
09.10.2021, 16:17
Цитата Сообщение от Royal_X Посмотреть сообщение
Но не размер окна
ну, я понимаю, что вы графику не программировали, но окно то создавали же нужного вам размера?

Royal_X, сделайте скидку на то, что тут консольное окно,

как-то вот так:

C++
1
2
3
4
HWND hwnd = GetConsoleWindow();
RECT r;
GetWindowRect(console, &r); //stores the console's current dimensions
MoveWindow(hwnd, r.left, r.top, 400, 200, TRUE);
возможно консольное окно не лучший выбор, но смотря для чего ...

Кликните здесь для просмотра всего текста
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
///----------------------------------------------------------------------------|
/// ...
///----------------------------------------------------------------------------:
#include <string>
#include <windows.h>
#include <gdiplus.h>
using namespace Gdiplus;
 
float a = 0.f;
 
void Ellips(Graphics* G)
{   HatchBrush* brush = new HatchBrush(
        HatchStyleDiagonalCross,
        Color(255,  0, 0, 255),
        Color(255,  0, 0, 255)
    );
    Pen* pen = new Pen(Color(255, 0, 0, 0), 3);
    pen->SetDashStyle(DashStyleDash);
 
    a += float(1.f);
 
    G->TranslateTransform(150.f, 150.f, Gdiplus::MatrixOrderAppend);
    G->FillEllipse (brush, 0, 0, 200, 200);
}
 
void draw()
{   HWND hWnd = GetConsoleWindow();
    HDC  hdc  = GetDC(hWnd);
 
    Graphics g(hdc);
 
    Rect paintRect(0,0,500,500);
    Bitmap   backBuffer   ( paintRect.Width, paintRect.Height, &g);
    Graphics* G = new Graphics(&backBuffer);
    G->SetSmoothingMode   ( SmoothingModeAntiAlias);
 
    ///-----------------------------|
    /// ГЛАВНЫЙ ЦИКЛ.               |
    ///-----------------------------:
    while(true)
    {   G->ResetTransform();
        G->Clear(Color(255, 255, 255, 255));
 
        Ellips(G);
 
        g.DrawImage(&backBuffer, 0, 0, 0, 0,
                                 paintRect.Width,
                                 paintRect.Height, UnitPixel);
        Sleep(50);
    }
    delete G;
}
 
///----------------------------------------------------------------------------|
/// Тест.
///----------------------------------------------------------------------------:
int main()
{   HWND hwnd = GetConsoleWindow();
    RECT r;
    GetWindowRect(hwnd, &r);
 
    GdiplusStartupInput gdiplusStartupInput;
    ULONG_PTR           gdiplusToken;
    GdiplusStartup    (&gdiplusToken, &gdiplusStartupInput, NULL);
    setlocale(0, "");
    SetConsoleTitleW(L"Двойная буферизация.");
 
    MoveWindow(hwnd, r.left, r.top, 516, 500, TRUE);
    CONSOLE_SCREEN_BUFFER_INFO screenBufferInfo;
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    GetConsoleScreenBufferInfo(hConsole, &screenBufferInfo);
 
    COORD new_screen_buffer_size;
 
    new_screen_buffer_size.X = screenBufferInfo.srWindow.Right -
    screenBufferInfo.srWindow.Left + 1; // Columns
    new_screen_buffer_size.Y = screenBufferInfo.srWindow.Bottom -
    screenBufferInfo.srWindow.Top + 1; // Rows
 
    SetConsoleScreenBufferSize(hConsole, new_screen_buffer_size);
 
    draw();
 
    GdiplusShutdown(gdiplusToken);
    return 0;
}
1
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6319 / 3044 / 1054
Регистрация: 01.06.2021
Сообщений: 11,624
09.10.2021, 16:31
Цитата Сообщение от XLAT Посмотреть сообщение
MoveWindow(hwnd, r.left, r.top, 516, 500, TRUE);
если вместо 516 написать 500, то тогда норм
0
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 3
09.10.2021, 16:40
Цитата Сообщение от Royal_X Посмотреть сообщение
если вместо 516 написать 500, то тогда норм
тогда слева будет белого больше, чем справа.
это ширина скролла, который хоть и отключенный, но который надо учитывать.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6319 / 3044 / 1054
Регистрация: 01.06.2021
Сообщений: 11,624
09.10.2021, 17:22
Цитата Сообщение от XLAT Посмотреть сообщение
тогда слева будет белого больше, чем справа.
а с 516 у меня справа черная полоса

Добавлено через 3 минуты
XLAT, еще в верхнем левом углу иногда мигает маленький черный прямоугольник. При выделении появляются какие-то артефакты. Столько кода для простого синего круга на белом фоне, да еще столько артефактов... Вот поэтому я не люблю Win API
0
5 / 4 / 1
Регистрация: 08.10.2021
Сообщений: 10
09.10.2021, 17:31
Я тоже прошёл курсы, где обещали, что трудоустройство прям точно-то чно будет. В итоге рассылаю резюме, но никто не горит желанием брать на работу
1
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 3
09.10.2021, 17:45
Цитата Сообщение от Royal_X Посмотреть сообщение
еще в верхнем левом углу иногда мигает
Кликните здесь для просмотра всего текста
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 <string>
#include <windows.h>
#include <gdiplus.h>
using namespace Gdiplus;
 
float a = 0.f;
 
void Ellips(Graphics* G)
{   HatchBrush* brush = new HatchBrush(
        HatchStyleDiagonalCross,
        Color(255,  0, 0, 255),
        Color(255,  0, 0, 255)
    );
    Pen* pen = new Pen(Color(255, 0, 0, 0), 3);
    pen->SetDashStyle(DashStyleDash);
 
    a += float(1.f);
 
    //G->TranslateTransform(150.f, 150.f, Gdiplus::MatrixOrderAppend);
    G->FillEllipse (brush, 0, 0, 10, 10);
}
 
void draw()
{   HWND hWnd = GetConsoleWindow();
    HDC  hdc  = GetDC(hWnd);
 
    Graphics g(hdc);
 
    Rect paintRect(0,0,500,500);
    Bitmap   backBuffer   ( paintRect.Width, paintRect.Height, &g);
    Graphics* G = new Graphics(&backBuffer);
    G->SetSmoothingMode   ( SmoothingModeAntiAlias);
 
    ///-----------------------------|
    /// ГЛАВНЫЙ ЦИКЛ.               |
    ///-----------------------------:
    while(true)
    {   G->ResetTransform();
        G->Clear(Color(255, 255, 255, 255));
 
        Ellips(G);
 
        g.DrawImage(&backBuffer, 0, 0, 0, 0,
                                 paintRect.Width,
                                 paintRect.Height, UnitPixel);
        Sleep(50);
    }
    delete G;
}
 
    void Blinking(int off=99)// МЕРЦАНИЕ УБРАТЬ
    {   CONSOLE_CURSOR_INFO cci;
        cci.dwSize=off;
        cci.bVisible=false;
        HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
        SetConsoleCursorInfo(hCon,  &cci);
    }
 
///----------------------------------------------------------------------------|
/// Тест.
///----------------------------------------------------------------------------:
int main()
{   HWND hwnd = GetConsoleWindow();
    RECT r;
    GetWindowRect(hwnd, &r);
 
    GdiplusStartupInput gdiplusStartupInput;
    ULONG_PTR           gdiplusToken;
    GdiplusStartup    (&gdiplusToken, &gdiplusStartupInput, NULL);
    setlocale(0, "");
    SetConsoleTitleW(L"Двойная буферизация.");
 
 
    MoveWindow(hwnd, r.left, r.top, 516, 500, TRUE);
    CONSOLE_SCREEN_BUFFER_INFO screenBufferInfo;
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    GetConsoleScreenBufferInfo(hConsole, &screenBufferInfo);
 
    COORD new_screen_buffer_size;
 
    new_screen_buffer_size.X = screenBufferInfo.srWindow.Right -
    screenBufferInfo.srWindow.Left + 1; // Columns
    new_screen_buffer_size.Y = screenBufferInfo.srWindow.Bottom -
    screenBufferInfo.srWindow.Top + 1; // Rows
 
    SetConsoleScreenBufferSize(hConsole, new_screen_buffer_size);
 
    Blinking();
    draw();
 
    GdiplusShutdown(gdiplusToken);
    return 0;
}
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6319 / 3044 / 1054
Регистрация: 01.06.2021
Сообщений: 11,624
09.10.2021, 17:57
XLAT, все равно мигает, а круг стал мельче
Миниатюры
Как начать работать новичку?  
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6319 / 3044 / 1054
Регистрация: 01.06.2021
Сообщений: 11,624
09.10.2021, 18:00
XLAT, уже четыре часа не получается отобразить синий круг с радиусом 100 на белом фоне и в окне 500х500 пикселей. А ведь если не выходит за 4 часа, а как тогда таким как я выполнять такие задания?
0
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 3
09.10.2021, 18:00
Цитата Сообщение от Royal_X Посмотреть сообщение
все равно мигает, а круг стал мельче
круг я сделал мельче специально,
у мя не мигает.

Royal_X, я вам советую перейти на
C++
1
2
3
4
5
6
7
8
9
10
11
int WINAPI WinMain(HINSTANCE hInst,
                   HINSTANCE hPreviousInst,
                   LPSTR lpCommandLine,
                   int nCommandShow
                   )
{
    // создаём дескриптор окна
    // описываем класс окна
    // создаём окошко, показываем его на экране
    // возвращаем значение при неудаче или при выходе
}
окно.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6319 / 3044 / 1054
Регистрация: 01.06.2021
Сообщений: 11,624
09.10.2021, 18:15
Цитата Сообщение от XLAT Посмотреть сообщение
я вам советую перейти на
а что там переходить, если C::B этот код уже создает при старте проекта. Я только поменял размер окна и поставил белый фон:

Кликните здесь для просмотра всего текста
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
#if defined(UNICODE) && !defined(_UNICODE)
    #define _UNICODE
#elif defined(_UNICODE) && !defined(UNICODE)
    #define UNICODE
#endif
 
#include <tchar.h>
#include <windows.h>
 
/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
 
/*  Make the class name into a global variable  */
TCHAR szClassName[ ] = _T("CodeBlocksWindowsApp");
 
int WINAPI WinMain (HINSTANCE hThisInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR lpszArgument,
                     int nCmdShow)
{
    HWND hwnd;               /* This is the handle for our window */
    MSG messages;            /* Here messages to the application are saved */
    WNDCLASSEX wincl;        /* Data structure for the windowclass */
 
    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);
 
    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */
    /* Use Windows's default colour as the background of the window */
    wincl.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
 
    /* Register the window class, and if it fails quit the program */
    if (!RegisterClassEx (&wincl))
        return 0;
 
    /* The class is registered, let's create the program*/
    hwnd = CreateWindowEx (
           0,                   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           _T("Code::Blocks Template Windows App"),       /* Title Text */
           WS_OVERLAPPEDWINDOW, /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           500,                 /* The programs width */
           500,                 /* and height in pixels */
           HWND_DESKTOP,        /* The window is a child-window to desktop */
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );
 
    /* Make the window visible on the screen */
    ShowWindow (hwnd, nCmdShow);
 
    /* Run the message loop. It will run until GetMessage() returns 0 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
    }
 
    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}
 
 
/*  This function is called by the Windows function DispatchMessage()  */
 
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                  /* handle the messages */
    {
        case WM_DESTROY:
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }
 
    return 0;
}


Но как отобразить синий круг радиусом 100 пикселей в центре окна?

Добавлено через 2 минуты
можно и без двойной или тройной буферизации)
0
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 3
09.10.2021, 18:24
Цитата Сообщение от Royal_X Посмотреть сообщение
можно и без двойной или тройной буферизации)
дёрнул из инета не глядя:
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
#include<windows.h>
#include<string.h>
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
char szProgName[]="Имя программы";
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{   HWND hWnd;
    MSG lpMsg;
    WNDCLASS w;
 
    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;
 
//Создадим окно в памяти, заполнив аргументы CreateWindow
    hWnd=CreateWindow(szProgName, //Имя программы
                      "Грфические возможности Win32 API", //Заголовок окна
                      WS_OVERLAPPEDWINDOW, //Стиль окна - перекрывающееся
                      100, //положение окна на экране по х
                      100, //положение по у
                      500, //ширина
                      400, //высота
                      (HWND)NULL, //идентификатор родительского окна
                      (HMENU)NULL, //идентификатор меню
                      (HINSTANCE)hInstance, //идентификатор экземпляра программы
                      (HINSTANCE)NULL); //отсутствие дополнительных параметров
 
//Выводим окно из памяти на экран
    ShowWindow(hWnd, nCmdShow);
//Обновим содержимое окна
    UpdateWindow(hWnd);
 
//Цикл обработки сообщений
 
    while(GetMessage(&lpMsg, NULL, 0, 0))
    {   TranslateMessage(&lpMsg);
        DispatchMessage(&lpMsg);
    }
    return(lpMsg.wParam);
}
 
//Функция окна
LRESULT CALLBACK WndProc(HWND hWnd, UINT messg,
                         WPARAM wParam, LPARAM lParam)
{   HDC hdc; //создаём контекст устройства
    PAINTSTRUCT ps; //создаём экземпляр структуры графического вывода
    LOGFONT lf;
    HFONT hFont;
    RECT r;
    HBRUSH hBrush;
    HPEN hPen;
 
//Цикл обработки сообщений
    switch(messg)
    {
//сообщение рисования
        case WM_PAINT :
            hdc=BeginPaint(hWnd, &ps);
 
//Создаём свой шрифт
            strcpy(lf.lfFaceName,"Times New Roman"); //копируем в строку название шрифта
            lf.lfHeight=20;
            lf.lfItalic=1;
            lf.lfStrikeOut=0;
            lf.lfUnderline=0;
            lf.lfWidth=10;
            lf.lfWeight=40;
            lf.lfCharSet=DEFAULT_CHARSET; //значение по умолчанию
            lf.lfPitchAndFamily=DEFAULT_PITCH; //значения по умолчанию
            lf.lfEscapement=0;
 
            hFont = CreateFontIndirect(&lf);
            SelectObject(hdc, hFont);
            SetTextColor(hdc, RGB(0,0,255));
            TextOut(hdc, 80,40, "Красота спасёт мир!!", 20);
 
//рисуем красный прямоугольник
            r.top=100;
            r.left=180;
            r.right=400;
            r.bottom=300;
            FillRect(hdc, &r, HBRUSH(CreateSolidBrush(RGB(255,0,55))));
 
//рисуем зелёный эллипс
            hBrush=CreateSolidBrush(RGB(10,200,100));
            SelectObject(hdc, hBrush);
            Ellipse(hdc, 20,100,200,200);
 
//рисуем закруглённый прямоугольник
            hBrush=CreateSolidBrush(RGB(250,200,100));
            SelectObject(hdc, hBrush);
            hPen=CreatePen(2,2,RGB(0,0,255));
            SelectObject(hdc, hPen);
            RoundRect(hdc, 20, 250, 250, 350, 15, 15);
 
 
            ValidateRect(hWnd, NULL);
            EndPaint(hWnd, &ps);
            break;
 
//сообщение выхода - разрушение окна
        case WM_DESTROY:
            PostQuitMessage(0); //Посылаем сообщение выхода с кодом 0 - нормальное завершение
            DeleteObject(hPen);
            DeleteObject(hBrush);
            break;
 
        default:
            return(DefWindowProc(hWnd, messg, wParam, lParam)); //освобождаем очередь приложения от нераспознаных
    }
    return 0;
}


зеленый эллипс исправьте на синий круг с нужными позициями.

зы: тут более древний gdi32
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6319 / 3044 / 1054
Регистрация: 01.06.2021
Сообщений: 11,624
09.10.2021, 18:29
Цитата Сообщение от XLAT Посмотреть сообщение
зеленый эллипс исправьте на синий круг с нужными позициями.
хорошо, попытаюсь понять как все это работает, но иероглифы вместо норм текста свидетельствует о мастерстве человека, чей код вы одолжили)

Добавлено через 2 минуты
как понимаю, в найденном вами примере GDI не нужна.
0
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 3
09.10.2021, 18:34
Цитата Сообщение от Royal_X Посмотреть сообщение
но иероглифы вместо норм текста
я могу исправить, если нужно.

Цитата Сообщение от Royal_X Посмотреть сообщение
свидетельствует о мастерстве человека
у человека так было настроено его рабочее место
и ему было до лампы на то, как оно будет настроено у других.

тема же кракозябр тут на форуме уже обсуждалась 100500 раз,
поэтому я не хочу сюда углубляться.
0
2 / 1 / 1
Регистрация: 09.10.2021
Сообщений: 9
09.10.2021, 18:34
Вы правильно думаете. И у каждого разряда есть свои критерии. Джуны - это начинающие. Хотя в вакансиях ищут Джунов, а требования на Сеньоров
0
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 3
09.10.2021, 18:36
Цитата Сообщение от Royal_X Посмотреть сообщение
как понимаю, в найденном вами примере GDI не нужна.
там gdi32 прошлого века.
а gdiplus это уже ООПнутая, чёткая и красивая 21 века ...
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
09.10.2021, 19:19
У нас на форуме есть пример успешного вкатывания в С++ в 40 лет, вот можно полистать на досуге https://www.cyberforum.ru/blog... g4049.html
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.10.2021, 19:19

Начем лучше начать новичку программировать? и на какой с++?
Какую литературу посоветуете и с++ новичку для начала?

Начать работать с SQLite
Помогите новичку! Пишу консольную программу под Win на С++ Компилирую этим (BAT-файлом): g++.exe %prj%_main_win.cpp %prj%src\*.cpp -o...

Где можно скачать программу, чтобы начать учиться работать в С++?
собственно ногами не пинать...вопрос полного нуля в этой области , но подскажите где можно скачать программу для того что бы начать учиться...

Какие темы нужно знать, чтобы начать работать с DirectX
День добрый! Прочитал уже почти 3 книги &quot;для начинающих&quot;, множество статей, немного умею работать с WinAPI, пробую сам писать простые...

Подскажите новичку как работать с БД ?
Читал книгу - нифига не понял. Чел пишет об SQL запросах и при этом НИ СЛОВА о том КАК их осуществлять на практике. Работал с MySQL на...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Программа опроса у.з. расходомера 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