Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Отследить перемещ. и нажатия мыши в VisualStudio2005(C++)

14K
14 апреля 2007 года
BFS
34 / / 11.04.2007
Немогу найти, как описать функцию, которая анализировала бы "Виндовские" сообщения программе, в частности WM_LBUTTONDOWN. Не совпадает с тем, как это делают в VC++ 6.
Ещё, может кто-то помнит функцию определения координат курсора мыши? Заранее Спасибо!
320
14 апреля 2007 года
m_Valery
1.0K / / 08.01.2007
1.Добавляешь в класс диалога переменную CStatusBarCtrl bar - строка состояния.Чтоб было где отображать координаты мыши.
2.В ресурсах Resource View добавляешь Add Resource -> String Table(разберешся как делать,нетрудно)
3.Для класса диалога добавляешь 2 функции OnLButtonDown(UINT nFlags, CPoint point)и OnMouseMove(UINT nFlags, CPoint point).Добавляй в Messages.Т.е Class View выбираешь класс своего диалога
и на вкладке Messages ищешь WM_LBUTTONDOWN и жмешь Add.Так же и для WM_MOUSEMOVE
4.В OnInitDialog дописываешь
Код:
...
    bar.Create(WS_VISIBLE | WS_CHILD, CRect(0, 0, 0, 0), this,IDR_SB );
    CRect clientSB;
    // Координаты клиентской области строки состояния
    bar.GetClientRect(&clientSB);
    // Ширина строки состояния
    int width = clientSB.Width();
    // Размеры секций строки состоянмя
    int parts[] = {width / 9 * 2, width / 3 * 2, -1};
    // Установка 3 секций
    bar.SetParts(2, parts);
...

5.В Ф-ии OnLButtonDown(UINT nFlags, CPoint point) допишешь
 
Код:
...
    CString s;
    s.Format("   X:  %d,   Y:  %d", point.x, point.y);
    AfxMessageBox("Вы нажали в точке\n"+s);
...

6.В Ф-ии OnMouseMove(UINT nFlags, CPoint point) допишешь
 
Код:
...
    CString s;
    s.Format("   X:  %d,   Y:  %d", point.x, point.y);
    // Запись текста в первую секцию строки состояния
    bar.SetText(s, 0, 0);
...

7.В файле Resource h допишешь допустим так
 
Код:
...
 #define IDR_SB                          111
...

Т.о. получаем строку состояния в которой при движении мыши отображаются текущие координаты,при нажатии левой кнопки мыши появляется MessageBox с указанием тех координат,где была
нажата кнопка.
14K
14 апреля 2007 года
BFS
34 / / 11.04.2007
m_Valery, огромное спасибо за ответ. Но вот в чём дело. У меня MDI-приложение(хотя может разницы то и нет), и мой "рабочий" класс(в моём случае это CGrafView) не содержит методов OnLButton*, вот что находится в мапах этого класса:

BEGIN_MESSAGE_MAP(CGrafView, CView)
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CView::OnFilePrintPreview)
END_MESSAGE_MAP()

хотя OnLButton* методы я обнаружил в классе CWnd. Сейчас попробуй что-то с ними там сделать)
14K
14 апреля 2007 года
BFS
34 / / 11.04.2007
Соре за "юмор". Уже во всём разобрался. Надо было протсо щёлкнуть на вкладке свойств View и там нажать на Messages(прям как в Билдере))
320
14 апреля 2007 года
m_Valery
1.0K / / 08.01.2007
Цитата: BFS

...
BEGIN_MESSAGE_MAP(CGrafView, CView)
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CView::OnFilePrintPreview)
END_MESSAGE_MAP()
...


Это ты не туда смотришь.:) Я тебе о другом.У тебя не содержит метода потому что ты его не добавил;)
Открывай Class View,выбирай класс CGrafView(твой класс),выбираешь его
и открывай вкладку Messages(Events,Messages и Overrides - эти вкладки
должны быть ниже)В Messages найди WM_LBUTTONDOWN,выдели и добавь
(появится <Add>OnLButtonDown - нажми,ф-ия автоматом добавится)
Но можно и руками все прописать,только дольше.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог