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

Вывод текста, при попадении в нужное место

15.12.2014, 19:41. Показов 597. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При нажатии на Ctr и если курсор находится над прямоугольником, должны выводится координаты...
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
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    PAINTSTRUCT ps;
    HDC hdc;
    static HPEN hDash, hBezier;
    static HBRUSH hRect, hSel;
    static POINT pt[30];
    static POINT point;
    RECT rt, yt;
    int i,o;
    TCHAR szBuf[80];
    static int count, index;
    static bool capture;
    std::ifstream in;
    std::ofstream out;
    switch (message)
    {
    case WM_CREATE:
        in.open("dat.txt");
        if (in.fail())
        {
            MessageBox(hWnd,_T("Фaйл dat.txt не найден"),
                _T("Открытие файла"), MB_OK | MB_ICONEXCLAMATION);
            PostQuitMessage(0);
            return 1;
        }
        
        for (count = 0; in >> pt[count].x; count++) in >> pt[count].y;
        in.close(); //В переменной count сохранится размер массива точек
        hDash = CreatePen(PS_DASH, 1, 1);
        hBezier = CreatePen(PS_SOLID, 4, RGB(255,0,0));
        hRect = CreateSolidBrush(RGB(128, 0, 128));
        hSel = CreateSolidBrush(RGB(255, 0, 0));
        break;
    case WM_SIZE:
        sx = LOWORD(lParam);
        sy = HIWORD(lParam);
        break;
    case WM_LBUTTONDOWN:
        point.x = LOWORD(lParam);
        point.y = HIWORD(lParam);
        //Преобразование экранных координат мыши в логические
        DcInLp(point);
        for (i = 0; i < count; i++)
        {
            SetRect(&rt,pt[i].x-MARK,pt[i].y-MARK,pt[i].x+MARK,pt[i].y+MARK);
            if (PtInRect(&rt, point))
            {   //Курсор мыши попал в точку
                index = i;
                capture = true;
                hdc = GetDC(hWnd);
                transform(hdc);     //Переход в логические координаты
                FillRect(hdc, &rt, hSel);//Отметим прямоугольник цветом
                ReleaseDC(hWnd, hdc);
                SetCapture(hWnd);       //Захват мыши
                return 0;
            }
        }
        break;
    case WM_LBUTTONUP:
        if (capture)
        {
            ReleaseCapture();   //Освобождение мыши
            capture = false;
        }
        break;
    case WM_MOUSEMOVE:
        if (capture)
        {   //Мышь захвачена
            point.x = LOWORD(lParam);
            point.y = HIWORD(lParam);
            DcInLp(point);//Преобразование экранных координат мыши
            pt[index] = point;  //в логические координаты
            InvalidateRect(hWnd, NULL, TRUE);
        }
        break;
    
    case WM_KEYDOWN:
        switch(wParam)
        {
        case VK_CONTROL:
            point.x = LOWORD(lParam);
            point.y = HIWORD(lParam);
            hdc = GetDC(hWnd);
            DcInLp(point);
            WORD nSize;
            for (o = 0; o < count; o++)
            {
                SetRect(&yt, pt[o].x - MARK, pt[o].y - MARK, pt[o].x + MARK, pt[o].y + MARK);
                if (PtInRect(&yt, point))
                {
                    MessageBox(hWnd, _T(" "), _T(" "), MB_OK | MB_ICONERROR);
                    nSize = wsprintf(szBuf, TEXT("(%d, %d)"), pt[o].y, pt[o].x);  //вывод какого текста
                    TextOut(hdc, pt[o].x + 20, pt[o].y + 20, szBuf, nSize);
                    ReleaseDC(hWnd, hdc);
                    InvalidateRect(hWnd, NULL, FALSE);
                    break;
                }
            }
            
        return 0;
        break;
        }
        return 0;
        break;
    case WM_RBUTTONDOWN:
        point.x = LOWORD(lParam);
        point.y = HIWORD(lParam);
        DcInLp(point);
        hdc = GetDC(hWnd);
        for (o = 0; o < count; o++)
        {
            SetRect(&yt, pt[o].x - MARK, pt[o].y - MARK, pt[o].x + MARK, pt[o].y + MARK);
            if (PtInRect(&yt, point))
            {
                count--;
                for (o; o < count; o++)
                {
                    pt[o].x = pt[o + 1].x;
                    pt[o].y = pt[o + 1].y;
                }
                InvalidateRect(hWnd, NULL, TRUE);
            }
        }
            if (PtInRect(&yt, point)==0)
            {
                o = count++;
                pt[o].x = point.x;
                pt[o].y = point.y;
                InvalidateRect(hWnd, NULL, TRUE);
            }
        
        ReleaseDC(hWnd, hdc);
        break;
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        transform(hdc); //Переход в логические координаты
 
        SelectObject(hdc, hDash);
        Polyline(hdc, pt, count);   //Строим ломаную линию
        SelectObject(hdc, hBezier);
        PolyBezier(hdc, pt, count); //Строим кривую Безье
        for (i = 0; i < count; i++)
        {   //Закрашиваем точки графика прямоугольниками
            SetRect(&rt,pt[i].x-MARK,pt[i].y-MARK,pt[i].x+MARK,pt[i].y+MARK);
            FillRect(hdc, &rt, hRect);
        }
        EndPaint(hWnd, &ps);
        break;
    case WM_DESTROY:
        DeleteObject(hDash);
        DeleteObject(hBezier);
        DeleteObject(hRect);
        DeleteObject(hSel);
        out.open("dat.txt");
        for (i = 0;i<count;i++) out << pt[i].x << '\t' << pt[i].y << '\n';
        out.close();
        PostQuitMessage(0);
        break;
    default: return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.12.2014, 19:41
Ответы с готовыми решениями:

Вывод текста в нужное место
Здравствуйте, мне нужно написать макрос который рисует дендрограмму(Word) параметры которйой беруться из формы, саму дендрограмму я...

Ссылка с одной стр на другую в нужное место текста.
Кто подскажет код, как пересылать посетителя на нужный конкретный участок текста находящийся на другой странице.

Вставка текста из textBox windows form в нужное место шаблона word
Здравствуйте уважаемые программисты, прошу у вас помощи, ибо перерыл кучу информации и в интернете и у вас, но не смог понять куда и что...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.12.2014, 19:41
Помогаю со студенческими работами здесь

В HTML при переходе на другую страницу, сразу перейти в нужное место
Всем привет!!! Подскажите как ,в HTML , :( при переходе на другую страницу сразу попасть в нужное место,например статья или картинка...

Надо чтобы при введении данных использовалось условие и строка с данными перемещалась в нужное место
Доброго дня! Как реализовать такую фишку? Надо чтобы при введении данных использовалось условие и строка с данными перемещалась в нужное...

Вывод текста в определенное место
Подскажите пожалуйста, делаю авторизацию для пользователя. Когда пользователь нажимает на кнопку button формируется пост запрос, который...

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

Вывод текста в определенное место Word документа
Как можно сделать так,что бы конкретные Мemo выводить в конкретно место Word документа ??? Memo1-&gt;Lines-&gt;Add(&quot;а1 для...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru