Форум: Форум C++Разное
Новые темы: 00
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Слушатель правой кнопки мыши
 
 автор: Alexandor1984   (20.02.2007 в 15:52)   письмо автору
 
 

Народ, подскажите, как написать функцию, которая выполняется при нажатии на правую кнопку мышки?

  Ответить  
 
 автор: cheops   (20.02.2007 в 16:31)   письмо автору
 
   для: Alexandor1984   (20.02.2007 в 15:52)
 

Следует обработать событие нажатия правой кнопки мыши? Вы в какой среде работаете: C++ Builder, VC++ .NET, чистый Windows API?

  Ответить  
 
 автор: Alexandor1984   (20.02.2007 в 16:54)   письмо автору
 
   для: cheops   (20.02.2007 в 16:31)
 

Ой, сорри.
VC++ .NET

  Ответить  
 
 автор: cheops   (20.02.2007 в 17:19)   письмо автору
 
   для: Alexandor1984   (20.02.2007 в 16:54)
 

А на что нажимаем? На кнопку, другой элемент управления или просто на область формы (окна)?

  Ответить  
 
 автор: Alexandor1984   (20.02.2007 в 17:26)   письмо автору
 
   для: cheops   (20.02.2007 в 17:19)
 

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

  Ответить  
 
 автор: cheops   (20.02.2007 в 18:13)   письмо автору
 
   для: Alexandor1984   (20.02.2007 в 17:26)
 

Каждое событие привязано к окну Windows, т.е. чтобы обработать нажатие левой кнопки мыши, вам необходимо обработать событие WM_RBUTTONUP, выбрав в окне Properties класс диалогового окна и выбрав окно Messages в этом случае вы сможете добавить обработчик нажатия правой кнопки мыши в автоматическом режиме, среда разработки сама пропишет обработчик в карте сообщений BEGIN_MESSAGE_MAP. Если вы хотите вообще перехватить системное событие нажатие правой кноки мыши, т.е. например, чтобы не было возможности открыть контекстное меню и выполнялся заданный вами код - нужно вешать резидента, который будет перехватывать хуки (тут я вряд ли помогу, с перехватом API-вызовов не работал).

  Ответить  
 
 автор: Alexandor1984   (20.02.2007 в 18:26)   письмо автору
 
   для: cheops   (20.02.2007 в 18:13)
 

Спасибо огромное, это мне сильно сберегло время. Надеюсь в API документации быстро найдутся нужные доки, похоже мне только туда дорога...

  Ответить  
 
 автор: Alexandor1984   (20.02.2007 в 18:30)   письмо автору
 
   для: cheops   (20.02.2007 в 18:13)
 

Мне просто нужно подсчитать количество правых кликов в винде, а уж есть котекстные меню или их нет, мне без разницы.

  Ответить  
 
 автор: Alexandor1984   (21.02.2007 в 19:32)   письмо автору
 
   для: Alexandor1984   (20.02.2007 в 18:30)
 

Все решилось банально. Достачно было подключить "Windows.h" и использовать GetKeyState.

Вот он, слушатель мыши в одну строку:

********************************
rightmousebtn.h
********************************

#pragma once

#ifndef __AFXWIN_H__
#error "include 'stdafx.h' before including this file for PCH"
#endif

#include "resource.h"
#include "Winuser.h"
__declspec(dllexport) int AddValues();





********************************
rightmousebtn.cpp
********************************

#include "stdafx.h"
#include "rightmousebtn.h"
#include "Windows.h"

int AddValues()
{
int right_mouse_btn_flag = GetKeyState(MK_RBUTTON);
return right_mouse_btn_flag;
}

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования