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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
arking
0 / 0 / 0
Регистрация: 25.01.2014
Сообщений: 17
#1

Убегающая от курсора кнопка - C++

12.03.2014, 14:46. Просмотров 2103. Ответов 12
Метки нет (Все метки)

Помогите реализовать программу типа "Вам нравиться ваша зарплата?" нужно сделать чтобы при наведении на кнопку она убегала от курсора

NickoTin: Перенесено из C++ и WinAPI
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2014, 14:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Убегающая от курсора кнопка (C++):

mfc убегающая кнопка - Visual C++
помогите пожалуйста! с c++ еще не особо дружу, ну не успел еще,(( а нужно сделать чтоб при наведении курсором на кнопку она убегала! открыл...

Убегающая кнопка - C++ WinAPI
Добрый день, помогите решить проблему. Я написал вот такой код. #include <windows.h> #include "resource.h" #include <tchar.h> ...

Кнопка BS_OWNERDRAW или кнопка со своей картинкой - C++ WinAPI
Есть код, с помощью которого можно менять картинку при нажатии, при фокусе { // ownerdraw button static HBITMAP no_active; ...

Кнопка, убегающая от курсора - Delphi
привет . делаю первые шаги в программировании. поздновато начал ,но... никогда не поздно. столкнулся с такой проблемой ,убегающая кнопка...

Убегающая кнопка от курсора - нужен пример - C#
Всем привет...помогите пожалуйста... вот пытаюсь сделать так чтобы при наведении курсора кнопка убегала,но ни как не получается...сам...

Фигура, убегающая от курсора - C++/CLI WinForms
можете подсказать программу, что бы любая фигура убегала от курсора в оконном приложении.

12
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,552
12.03.2014, 15:34 #2
Ловите MOUSEMOVE, если разница координат например <10, то двигайте контрол с помощью функции MoveWindow..
Я у себя делал такправда тут не по WM_MOUSEMOVE, ну это и так ясно)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
case WM_SIZE:
            LVx = (DWORD)LOWORD(lParam);
            LVy = (DWORD)HIWORD(lParam);
            if(wZif == TRUE)
            {
                LVx = LVx-200;
                LVy = LVy-30;
                ax = LVx+10;
                ay = 30;
                bx = 183;
                by = LVy-30;
            }
            else
            {
                LVx = LVx-50;
                LVy = LVy-30;
            }
            MoveWindow(hKindLV, LVx+10, 5, 19, 19, true);
0
InTar
11 / 11 / 2
Регистрация: 24.02.2014
Сообщений: 31
12.03.2014, 16:08 #3
Есть готовый проект на Delphi. могу поделиться. Или С++ - это принципиально?
0
arking
0 / 0 / 0
Регистрация: 25.01.2014
Сообщений: 17
13.03.2014, 09:57  [ТС] #4
нет, с++ принципиально
0
ValeryS
Модератор
6679 / 5088 / 475
Регистрация: 14.02.2011
Сообщений: 17,076
13.03.2014, 10:07 #5
Цитата Сообщение от arking Посмотреть сообщение
Помогите реализовать программу типа "Вам нравиться ваша зарплата?"
а подпрыгивающую кнопку "Пуск" не надо?
0
arking
0 / 0 / 0
Регистрация: 25.01.2014
Сообщений: 17
13.03.2014, 10:38  [ТС] #6
нет, спасибо Пуск не надо. нужно элементарную программу с двумя кнопками, и чтобы одна убегала от курсора мыши
0
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,552
13.03.2014, 10:42 #7
arking, вам походу в раздел фриланса. На сколько вижу делать вы даже формы не сделали, то что я вам написал - вам к чертям не нужно.
0
arking
0 / 0 / 0
Регистрация: 25.01.2014
Сообщений: 17
13.03.2014, 11:02  [ТС] #8
форма у меня есть
вот WndProc
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
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch(msg)
    {
    case WM_CREATE:
        DefWindowProc(hWnd, msg, wParam, lParam);
 
        CreateWindow(L"static", L"Вам нравиться ваша зарплата", WS_CHILD | WS_VISIBLE, 50, 20, 150, 15, hWnd, (HMENU)1001, GetModuleHandle(NULL), NULL);
        CreateWindow(L"button", L"Да", WS_CHILD | WS_VISIBLE, 30, 50, 100, 30, hWnd, (HMENU)1003, GetModuleHandle(NULL), NULL);
        CreateWindow(L"button", L"Нет", WS_CHILD | WS_VISIBLE, 140, 50, 100, 30, hWnd, (HMENU)1002, GetModuleHandle(NULL), NULL);
 
        break;
    case WM_CLOSE:
        if (MessageBox(hWnd, L"Вы действительно хотите закрыть окно", L"Вопрос", MB_YESNO) == IDYES)
        {
 
            DestroyWindow(hWnd);
        }
        break;
 
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, msg, wParam, lParam);
    }
 
    return 0;
}
Добавлено через 31 секунду
Izual, А можете объяснить что за переменные у вас в примере типа LVx, ax, bx, wZif?
0
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,552
13.03.2014, 11:25 #9
Цитата Сообщение от arking Посмотреть сообщение
что за переменные у вас в примере
Это не то что вам нужно. Это просто копипаста того как я двигаю окно функцией.
Вам нужно событие case WM_MOUSEMOVE, там брать GetCursorPos(&point) , далее писать алгоритм когда там окно должно двигаться, т.е. брать координаты кнопки и курсора... ну и далее MoveWindow()
0
arking
0 / 0 / 0
Регистрация: 25.01.2014
Сообщений: 17
13.03.2014, 11:40  [ТС] #10
я надеюсь последний вопрос. А как получить координаты кнопки в данный момент?
0
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,552
13.03.2014, 12:12 #11
arking, а для чего это вы думаете?
Цитата Сообщение от Izual Посмотреть сообщение
Вам нужно событие case WM_MOUSEMOVE, там брать GetCursorPos(&point)
В глобальных написать:
C++
1
POINT point;
0
arking
0 / 0 / 0
Регистрация: 25.01.2014
Сообщений: 17
13.03.2014, 12:20  [ТС] #12
я думал это координаты мыши
0
Александрик
4 / 4 / 1
Регистрация: 15.03.2012
Сообщений: 77
13.03.2014, 14:48 #13
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
определяем положение кнопки - основа (пища для размышлений)

C++
1
2
3
4
CButton but;
CRect rect;
but.GetWindowRect(&rect);
//rect будет содержать положение кнопки в окне
Вот набросал когдато.Пригодится ,создаешь пустой проект С++ и используешь.Тебе просто останется вставить функцию "Убегания от мыши"

А так кнопка хаотический движется по форме и ты должен нажать на нее, при нажиманий выйдет сообщение "Vseravno Zarpala 0" Думаю помог тебе.

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
#include <windows.h>
 
HWND hButton;
float mX, mY;
float bX, bY;
 
LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam,  LPARAM lParam) 
{ 
    switch (uMsg) 
    { 
        case WM_DESTROY: 
            PostQuitMessage(0);
            return 0; 
 
        case WM_COMMAND:
            MessageBox(0, L"Vseravno Zarpala 0", L"POIMAL", MB_OK);
            break;
        
        case WM_TIMER:
            bX += (mX - bX) / 100; // скоростя твоей кнопки  т.е скорость ее перемещения
            bY += (mY - bY) / 100;
 
            if ((mX - 15 <= bX) && (mX + 15 >= bX) && (mY - 15 <= bY) && (mY + 15 >= bY))
            {
                mX = (float)rand() / RAND_MAX * 520; // Размер "уСЛОВНОГО" окна по которому кнопка будет бегать  при 52 на 46 значениях кнопка будет в левом верхнем углу.
                mY = (float)rand() / RAND_MAX * 460;
            }
            MoveWindow(hButton, (int)bX, (int)bY, 150, 40, true); // Размер кнопки
            break;
 
        default: 
            return DefWindowProc(hwnd, uMsg, wParam, lParam); 
    } 
    return 0; 
} 
 
 
BOOL InitApplication(HINSTANCE hInstance) 
{ 
    WNDCLASSEX wcx; ZeroMemory(&wcx, sizeof(wcx));
 
    wcx.cbSize = sizeof(wcx);         
    wcx.style = CS_HREDRAW | CS_VREDRAW;                   
    wcx.lpfnWndProc = MainWndProc;              
    wcx.hInstance = hInstance;        
    wcx.hIcon = LoadIcon(NULL, IDI_APPLICATION);             
    wcx.hCursor = LoadCursor(NULL, IDC_ARROW);                   
    wcx.hbrBackground = (HBRUSH)COLOR_BACKGROUND;           
    wcx.lpszClassName = L"MainWClass"; 
    wcx.hIconSm = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(5), IMAGE_ICON,
        GetSystemMetrics(SM_CXSMICON),  GetSystemMetrics(SM_CYSMICON), (UINT)LR_DEFAULTCOLOR); 
 
    return RegisterClassEx(&wcx); 
} 
 
int  WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 
{ 
    MSG msg; 
    HWND hWnd; 
 
    if (!InitApplication(hInstance)) 
        return 0; 
 
    hWnd = CreateWindow(L"MainWClass", L"Catch it!", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,       
        CW_USEDEFAULT, 640, 480, (HWND) NULL, (HMENU) NULL, hInstance, NULL);      
 
    if (!hWnd) return 0; 
  
    hButton = CreateWindow(L"BUTTON", L"Click me!", WS_CHILD | WS_VISIBLE, 100, 100, 100, 40, hWnd, 0, hInstance, 0);
    mX = mY = bX = bY = 100;
 
    ShowWindow(hWnd, nCmdShow); 
    UpdateWindow(hWnd);
 
    SetFocus(hWnd);
 
    UINT_PTR uiTimer = SetTimer(hWnd, 1, 10, NULL);
 
    BOOL fGotMessage;
    while (((fGotMessage = GetMessage(&msg, (HWND) NULL, 0, 0)) != 0) && (fGotMessage != -1)) 
    { 
 
        TranslateMessage(&msg); 
        DispatchMessage(&msg); 
    } 
 
    KillTimer(hWnd, uiTimer);
    return 0; 
}
1
13.03.2014, 14:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2014, 14:48
Привет! Вот еще темы с ответами:

Убегающая кнопка - JAVA IDE
Доброго дня суток, форумчане! у меня такой вопрос, недавно начал работать с android eclipse, заинтересовал такой вопрос, как реализовать...

Убегающая кнопка - Delphi
Суть задачи при наведении курсора на кнопку она должна убегать. Нужно сделать чтобы кнопка не выходила за границы формы, влево и вверх...

Убегающая кнопка - C++ Qt
Здравствуйте. Нужно сделать программу типа &quot;убегающая кнопка&quot;, Т.Е. при наводе на кнопку мыши, кнопка меняет своё положение. Как на...

Убегающая кнопка - C#
Добрый вечер. Нужна ваша помощь нужно сделать кнопку которая убегала б от курсора. В интернете есть куча инфы как сделать чтоб она рандомно...


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

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

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