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

Зажатие левой кнопки мыши консоль

16.05.2016, 21:25. Показов 2142. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как узнать, что кнопка мыши отпущена? Но мне нужно по нажатию начать что-то делать и по отпусканию завершить. Я понимаю, что на отпускании .Event.MouseEvent.dwEventFlags становиться равным нулю. Но мне это не помогло...
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.05.2016, 21:25
Ответы с готовыми решениями:

Нажатие левой кнопки мыши
господа создаю основное окно , а затем с этим же классом создаю дочернее окно вот так #include <windows.h> #define BTN 0x0000012 ...

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

Отловить нажатие левой кнопки мыши
Всем привет, я совсем новичок, пытаюсь отловить событие - нажатие кнопок мыши, но к сожалению не получается. Нашёл кучу косвенных...

2
1 / 1 / 0
Регистрация: 23.10.2015
Сообщений: 19
29.05.2016, 18:44
WM_LBUTTONDOWN
WM_LBUTTONUP
или
WM_RBUTTONDOWN
WM_LBUTTONUP

отслеживай нажатие и отпускание кнопки мыши
лучше всего создай переменную BOOL и ей контролируй нажатие
1
Заблокирован
29.05.2016, 19:33
Лучший ответ Сообщение было отмечено belka32 как решение

Решение

Не по теме:

HeAgEkBaT, сам то в консоли сможешь подменить WindowProc чтобы начать фильтровать эти события?



Добавлено через 1 минуту
belka32, погляди в букваре этот пример
https://msdn.microsoft.com/ru-... s.85).aspx
Кликните здесь для просмотра всего текста
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
#include <windows.h>
#include <stdio.h>
 
HANDLE hStdin; 
DWORD fdwSaveOldMode;
 
VOID ErrorExit(LPSTR);
VOID KeyEventProc(KEY_EVENT_RECORD); 
VOID MouseEventProc(MOUSE_EVENT_RECORD); 
VOID ResizeEventProc(WINDOW_BUFFER_SIZE_RECORD); 
 
int main(VOID) 
{ 
    DWORD cNumRead, fdwMode, i; 
    INPUT_RECORD irInBuf[128]; 
    int counter=0;
 
    // Get the standard input handle. 
 
    hStdin = GetStdHandle(STD_INPUT_HANDLE); 
    if (hStdin == INVALID_HANDLE_VALUE) 
        ErrorExit("GetStdHandle"); 
 
    // Save the current input mode, to be restored on exit. 
 
    if (! GetConsoleMode(hStdin, &fdwSaveOldMode) ) 
        ErrorExit("GetConsoleMode"); 
 
    // Enable the window and mouse input events. 
 
    fdwMode = ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT; 
    if (! SetConsoleMode(hStdin, fdwMode) ) 
        ErrorExit("SetConsoleMode"); 
 
    // Loop to read and handle the next 100 input events. 
 
    while (counter++ <= 100) 
    { 
        // Wait for the events. 
 
        if (! ReadConsoleInput( 
                hStdin,      // input buffer handle 
                irInBuf,     // buffer to read into 
                128,         // size of read buffer 
                &cNumRead) ) // number of records read 
            ErrorExit("ReadConsoleInput"); 
 
        // Dispatch the events to the appropriate handler. 
 
        for (i = 0; i < cNumRead; i++) 
        {
            switch(irInBuf[i].EventType) 
            { 
                case KEY_EVENT: // keyboard input 
                    KeyEventProc(irInBuf[i].Event.KeyEvent); 
                    break; 
 
                case MOUSE_EVENT: // mouse input 
                    MouseEventProc(irInBuf[i].Event.MouseEvent); 
                    break; 
 
                case WINDOW_BUFFER_SIZE_EVENT: // scrn buf. resizing 
                    ResizeEventProc( irInBuf[i].Event.WindowBufferSizeEvent ); 
                    break; 
 
                case FOCUS_EVENT:  // disregard focus events 
 
                case MENU_EVENT:   // disregard menu events 
                    break; 
 
                default: 
                    ErrorExit("Unknown event type"); 
                    break; 
            } 
        }
    } 
 
    // Restore input mode on exit.
 
    SetConsoleMode(hStdin, fdwSaveOldMode);
 
    return 0; 
}
 
VOID ErrorExit (LPSTR lpszMessage) 
{ 
    fprintf(stderr, "%s\n", lpszMessage); 
 
    // Restore input mode on exit.
 
    SetConsoleMode(hStdin, fdwSaveOldMode);
 
    ExitProcess(0); 
}
 
VOID KeyEventProc(KEY_EVENT_RECORD ker)
{
    printf("Key event: ");
 
    if(ker.bKeyDown)
        printf("key pressed\n");
    else printf("key released\n");
}
 
VOID MouseEventProc(MOUSE_EVENT_RECORD mer)
{
#ifndef MOUSE_HWHEELED
#define MOUSE_HWHEELED 0x0008
#endif
    printf("Mouse event: ");
    
    switch(mer.dwEventFlags)
    {
        case 0:
 
            if(mer.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED)
            {
                printf("left button press \n");
            }
            else if(mer.dwButtonState == RIGHTMOST_BUTTON_PRESSED)
            {
                printf("right button press \n");
            }
            else
            {
                printf("button press\n");
            }
            break;
        case DOUBLE_CLICK:
            printf("double click\n");
            break;
        case MOUSE_HWHEELED:
            printf("horizontal mouse wheel\n");
            break;
        case MOUSE_MOVED:
            printf("mouse moved\n");
            break;
        case MOUSE_WHEELED:
            printf("vertical mouse wheel\n");
            break;
        default:
            printf("unknown\n");
            break;
    }
}
 
VOID ResizeEventProc(WINDOW_BUFFER_SIZE_RECORD wbsr)
{
    printf("Resize event\n");
    printf("Console screen buffer is %d columns by %d rows.\n", wbsr.dwSize.X, wbsr.dwSize.Y);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.05.2016, 19:33
Помогаю со студенческими работами здесь

Симуляция нажатия левой кнопки мыши в другом окне
Есть программа (написана на C# - Windows form app) мне нужно послать нажатие лкм по координатам чтобы нажать, допустим, кнопку ...

Открытие/закрытие окна по нажатию/отжатию левой кнопки мыши
Нужно чтобы программа выполняла открытие дочернего окна при нажатии левой кнопки мыши, а при отжатии закрывала дочернее окно. У меня...

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru