Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Viktor St.
3 / 3 / 2
Регистрация: 05.12.2009
Сообщений: 16
1

Светофор, в котором цвет "зажигается" при нажатии на лампу левой клавишей мыши

19.06.2010, 15:48. Просмотров 1773. Ответов 3
Метки нет (Все метки)

Нарисовать светофор, в котором цвет «зажигается» при нажатии на эту лампу левой
клавишей мыши. Одновременно может гореть только один цвет.



Кому не трудно, напишите код, пожалуйста в Visual C++!
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2010, 15:48
Ответы с готовыми решениями:

Изменить цвет символов на следующий в палитре цветов при нажатии левой кнопки мыши
Всем привет! Задание: Изменить цвет символов на следующий в палитре цветов при нажатии левой...

Подсчет количества "кликов" левой, правой и средней кнопки мыши
Написать приложение в котором ведется подсчет количества "кликов" левой, правой и средней кнопки...

Увеличение размера строки при нажатии левой кнопки мыши
Хочу выведенную строку увеличивать (размер шрифта) при нажатии левой кнопки мыши. Но ничего не...

Действия при нажатии левой(правой) кнопки мыши в рабочей области окна
Нужно Написать Win32API. Что бы правая и левая кнопка мыши выполняли действия написанные в...

При нажатии левой кнопки мыши в поле первого окна, открывать второе
Подскажите пожалуйста, как сделать, чтоб при нажатии левой кнопки мыши в поле первого окна,...

3
Zabiyak
КотЪ
218 / 218 / 60
Регистрация: 26.05.2009
Сообщений: 688
19.06.2010, 22:43 2
А причём тут ваш светофор к разделу WinAPI?
0
TGrey[WoLf]
41 / 41 / 4
Регистрация: 14.09.2008
Сообщений: 683
19.06.2010, 22:48 3
А ты думал ему светофор в консоле рисовать?)
2
Viktor St.
3 / 3 / 2
Регистрация: 05.12.2009
Сообщений: 16
20.06.2010, 23:02  [ТС] 4
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
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
int RegClass(void);
HINSTANCE hInstance;
HWND hwnd_main;
static HDC hdc,hdc2,hdc3,hdc4,p;
static int xPos, yPos;
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    hInstance = hInst;
    if(!RegClass()) return -1;
 
    hwnd_main = CreateWindow("MyWindowClass", "Главное окно",
                             WS_OVERLAPPED | WS_SYSMENU | WS_MAXIMIZEBOX,
                             0, 0, 250, 450, NULL, NULL, hInstance, 0);
 
    if(!hwnd_main) return 0;
    ShowWindow(hwnd_main,SW_SHOW);
    UpdateWindow(hwnd_main);
    
    MSG msg;
    while(GetMessage(&msg,0,0,0)){
      TranslateMessage(&msg);
      DispatchMessage(&msg);
    }
 
    return 0;
}
 
int RegClass(void)
{
    WNDCLASS wc;
    memset(&wc,0,sizeof(WNDCLASS));
    wc.style = CS_VREDRAW | CS_HREDRAW;
    wc.lpfnWndProc = WndProc;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL,IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszMenuName = NULL;
    wc.lpszClassName = "MyWindowClass";
 
    return RegisterClass(&wc);
}
 
void Create(HWND, LPARAM);
 
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message){
    
    case WM_MOVE:{
        RECT r;
        r.bottom=360;
        r.left=60;
        r.right=150;
        r.top=60;
         HDC p = GetDC(hwnd_main);
         HBRUSH br =   CreateSolidBrush(RGB(128,128,128));
         SelectObject(p,br);
         FrameRect(p,&r,br);
         DeleteObject(br);
         
/////////////////////////////////////////////////
        HDC hdc = GetDC(hwnd_main);
        HBRUSH brush = (HBRUSH)GetStockObject(GRAY_BRUSH);
        SetROP2 (hdc,R2_COPYPEN);
        HGDIOBJ obj = SelectObject(hdc, brush);
        SelectObject(hdc,obj);
        Ellipse(hdc,70,70,140,140);
        ReleaseDC(hwnd, hdc);
////////////////////////////////////////////////////
        HDC hdc2 = GetDC(hwnd_main);
        SetROP2 (hdc2,R2_COPYPEN);
        HGDIOBJ obj2 = SelectObject(hdc2, brush);
        SelectObject(hdc2,obj2);
        Ellipse(hdc2,70,175,140,245);
        ReleaseDC(hwnd, hdc2);
///////////////////////////////////////////////////
        HDC hdc3 = GetDC(hwnd_main);
        SetROP2 (hdc3,R2_COPYPEN);
        HGDIOBJ obj3 = SelectObject(hdc3, brush);
        SelectObject(hdc3,obj3);
        Ellipse(hdc3,70,280,140,350);
        DeleteObject(brush);
        ReleaseDC(hwnd, hdc2);
      break;
    }
      
    case WM_LBUTTONDOWN:{
      
      xPos = LOWORD(lParam); 
      yPos = HIWORD(lParam);
     if (xPos>70 && xPos<140 && yPos>280 && yPos<350){
         HDC hdc4 = GetDC(hwnd_main);
         HBRUSH brush = CreateSolidBrush(RGB(100,255,0));
         SelectObject(hdc4,brush);
         Ellipse(hdc4,70,280,140,350);
         DeleteObject(brush);
         //-------------------------
         HDC hdc = GetDC(hwnd_main);
        HBRUSH brush2 = (HBRUSH)GetStockObject(GRAY_BRUSH);
        SetROP2 (hdc,R2_COPYPEN);
        HGDIOBJ obj = SelectObject(hdc, brush2);
        SelectObject(hdc,obj);
        Ellipse(hdc,70,70,140,140);
        ReleaseDC(hwnd, hdc);
        //----------------------------
        HDC hdc2 = GetDC(hwnd_main);
        SetROP2 (hdc2,R2_COPYPEN);
        HGDIOBJ obj2 = SelectObject(hdc2, brush2);
        SelectObject(hdc2,obj2);
        Ellipse(hdc2,70,175,140,245);
        DeleteObject(brush2);
        ReleaseDC(hwnd, hdc2);
     }
     if ((yPos>70 && xPos<140 && xPos>70 && yPos<140)){
          HDC hdc4 = GetDC(hwnd_main);
         HBRUSH brush = CreateSolidBrush(RGB(255,0,0));
         SelectObject(hdc4,brush);
         Ellipse(hdc4,70,70,140,140);
         DeleteObject(brush);
         //---------------------------
         HDC hdc2 = GetDC(hwnd_main);
        HBRUSH brush3 = (HBRUSH)GetStockObject(GRAY_BRUSH);
        SetROP2 (hdc2,R2_COPYPEN);
        HGDIOBJ obj2 = SelectObject(hdc2, brush3);
        SelectObject(hdc2,obj2);
        Ellipse(hdc2,70,175,140,245);
        //DeleteObject(brush3);
        ReleaseDC(hwnd, hdc2);
        //----------------------
         HDC hdc3 = GetDC(hwnd_main);
        //HBRUSH brush3 = (HBRUSH)GetStockObject(GRAY_BRUSH);
        SetROP2 (hdc3,R2_COPYPEN);
        HGDIOBJ obj3 = SelectObject(hdc3, brush3);
        SelectObject(hdc3,obj3);
        Ellipse(hdc3,70,280,140,350);
        DeleteObject(brush3);
        ReleaseDC(hwnd, hdc2);
     }
        //-----------------------
        if ((xPos >70 && xPos<140)&&(yPos>175 && yPos<245)){
         HDC hdc4 = GetDC(hwnd_main);
         HBRUSH brush = CreateSolidBrush(RGB(255,255,190));
         SelectObject(hdc4,brush);
         Ellipse(hdc4,70,175,140,245);
         DeleteObject(brush);
         //--------------------------
         HDC hdc3 = GetDC(hwnd_main);
        HBRUSH brush3 = (HBRUSH)GetStockObject(GRAY_BRUSH);
        SetROP2 (hdc3,R2_COPYPEN);
        HGDIOBJ obj3 = SelectObject(hdc3, brush3);
        SelectObject(hdc3,obj3);
        Ellipse(hdc3,70,280,140,350);
        DeleteObject(brush3);
        ReleaseDC(hwnd, hdc2);
        //-----------------------------
        HDC hdc = GetDC(hwnd_main);
        HBRUSH brush2 = (HBRUSH)GetStockObject(GRAY_BRUSH);
        SetROP2 (hdc,R2_COPYPEN);
        HGDIOBJ obj = SelectObject(hdc, brush2);
        SelectObject(hdc,obj);
        Ellipse(hdc,70,70,140,140);
        ReleaseDC(hwnd, hdc);
        }
     break;
        }
            
    default: return DefWindowProc(hwnd,message,wParam,lParam);
            }
 
  return 0;
  }
0
20.06.2010, 23:02
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2010, 23:02

При нажатии левой клавиши "мыши" отразить курсор в левой половине экрана, а при нажатии правой - в правой
При нажатии левой клавиши &quot;мыши&quot; отразить курсор в левой половине экрана, а при нажатии правой - в...

Почему при на нажатии левой клавишей мыши на QComboBox не срабатывает mousePressEvent
Привет всем. Подскажите почему при на нажатии левой клавишей мыши на QCombobox не срабатывает...

При нажатии левой кнопкой мыши по пространству страницы в Google Chrome вылезает страница "Без имени"
Доброго Вам ДНЯ!!!:) В браузере Google Chrome при нажатии на любую точку страницы левой кнопкой...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.