Форум программистов, компьютерный форум CyberForum.ru

Изобразить этот эллипс, чтобы он мигал — желтый/черный - C++

Восстановить пароль Регистрация
 
Liquil
 Аватар для Liquil
213 / 198 / 31
Регистрация: 04.12.2013
Сообщений: 883
16.05.2014, 01:18     Изобразить этот эллипс, чтобы он мигал — желтый/черный #1
Здравствуйте, вот есть код, задача: изобразить этот эллипс, чтобы он мигал - желтый/черный, в общем такая мигающая "растровая" лампочка. Фрагмент кода предоставлен ниже, попробовал сделать этот через цикл - если счетчик четный - 1 цвет, если нечетный - другой, но к сожалению это не помогло. Хотелось бы сделать, чтобы цвет менялся при нажатии какой-либо клавиши, но что-то не особо выходит, помогите пожалуйста.

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
#include <windows.h>
#include <iostream>
#include <cstring>
#include <ctype.h>
#include <cstdlib>
#include <conio.h>
 
HDC hdc;
PAINTSTRUCT ps;
POINT point;
COLORREF rgb;
HPEN pen;
HBRUSH hbr;
int N=5;
int i;
 
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
    
    switch(Message) {
        
        case WM_DESTROY: {
            PostQuitMessage(0);
            break;
        }
        case WM_PAINT: { //рисуем окно
        
            hdc = BeginPaint(hwnd, &ps);
            //рисуем 
            
        //вот тут начинаются неудачи
 
            for (i=0; i<N; i++)
             if (i%2<1) 
              {
              rgb = RGB(255,255,0); 
              pen = CreatePen(PS_SOLID,1,rgb);
              hbr = CreateSolidBrush(rgb);
              SelectObject(hdc, pen); // выбор пера
              SelectObject(hdc, hbr); // выбор кисти
              Ellipse(hdc, 150, 5, 350, 140); 
              DeleteObject(hbr);
              DeleteObject(pen);
              getch();
              }
               else {rgb = RGB(0,0,0); 
                     pen = CreatePen(PS_SOLID,1,rgb);
                     hbr = CreateSolidBrush(rgb);
                     SelectObject(hdc, pen); // выбор пера
                     SelectObject(hdc, hbr); // выбор кисти
                     Ellipse(hdc, 150, 5, 350, 140); 
                     DeleteObject(hbr);
                     DeleteObject(pen);
                     getch();
                    }       
            
            
            // освобождаем дескрипторы
            EndPaint(hwnd, &ps);
            
        
            break;
        }
        
        
        default:
            return DefWindowProc(hwnd, Message, wParam, lParam);
    }
    return 0;
}
 
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    WNDCLASSEX wc; 
    HWND hwnd; 
    MSG Msg; 
 
    
    memset(&wc,0,sizeof(wc));
    wc.cbSize        = sizeof(WNDCLASSEX);
    wc.lpfnWndProc   = WndProc; 
    wc.hInstance     = hInstance;
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
    
    
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszClassName = "WindowClass";
    wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION); 
        wc.hIconSm       = LoadIcon(NULL, IDI_APPLICATION); 
 
    if(!RegisterClassEx(&wc)) {
        MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
        return 0;
    }
 
    hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass","Пример работы с канвой",WS_VISIBLE|WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, 
        CW_USEDEFAULT, 
        640, 
        480, 
        NULL,NULL,hInstance,NULL);
 
    if(hwnd == NULL) {
        MessageBox(NULL, "Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
        return 0;
    }
 
 
    while(GetMessage(&Msg, NULL, 0, 0) > 0) { 
        TranslateMessage(&Msg); 
        DispatchMessage(&Msg); 
        
    }
    return Msg.wParam;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2014, 01:18     Изобразить этот эллипс, чтобы он мигал — желтый/черный
Посмотрите здесь:

Попадание точки в эллипс (окружность) C++
C++ класс эллипс
код, который прекрасно выполняет Code::Blocks не выполняеться в Студии, как сделатьь так чтобы Студия воспринимала этот код?? C++
C++ Нарисовать эллипс
C++ Написать класс, описывающий эллипс
Дружественные классы эллипс и круг C++
C++ Определить, какими пешками можно совершить ход, чтобы черный король не был под ударом ферзей
"Красный Тигр" vs. "Желтый Заяц". А каким будет 3005 год? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
16.05.2014, 01:36     Изобразить этот эллипс, чтобы он мигал — желтый/черный #2
Liquil, идея вот такая:
C++
1
2
3
4
5
6
7
8
9
    while (!exit)
    {
        int input = get_input();
        // change elips color
        if (input == exit_token)
        {
            exit = true;
        }
    }
Liquil
 Аватар для Liquil
213 / 198 / 31
Регистрация: 04.12.2013
Сообщений: 883
16.05.2014, 01:39  [ТС]     Изобразить этот эллипс, чтобы он мигал — желтый/черный #3
outoftime, я немного не понял, куда здесь вставить часть с рисованием?
Yandex
Объявления
16.05.2014, 01:39     Изобразить этот эллипс, чтобы он мигал — желтый/черный
Ответ Создать тему
Опции темы

Текущее время: 09:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru