Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Обчислення координат курсору миші при переміщенні

Тип Реферат
Предмет Информатика и программирование
Просмотров
698
Размер файла
21 б
Поделиться

Ознакомительный фрагмент работы:

Обчислення координат курсору миші при переміщенні

Міністерство освіти і науки України

Житомирський державний технологічний університет

Лабораторна робота №6

з курсу «Системне програмування»

на тему: «Миша»

м. Житомир

2011 р.

Зміст

Завдання. 3

Хід роботи. 4

1. Виведення координат миші у вікні. 4

2. Відстань між двома точками у вікні. 4

Програмний код. 5

Висновок. 10

Завдання

1.Вивести координати миші у вікні

2. Знайти відстань між двома точками у вікні

3. Знайти швидкість руху миші на проміжку

Хід роботи

Для виконання цієї лабораторної роботи, було опрацьовано теоретичний матеріал поданий в додатках до лабораторної роботи.

1. Виведення координат миші у вікні

Для того щоб визначити координати миші, необхідно обробити повідомлення WM_MOUSEMOVE, яке приходить кожний раз, коли виконується рух миші при активному вікні, в рамках вікна. Параметрами цього повідомлення є координати миші.

Обробляючи це повідомлення, ми формуємо текстовий рядок наступним чином:

X = LOWORD(lParam);

Y = HIWORD(lParam);

wsprintf(str, “ X = %d Y = %d “, x,y );

2. Відстань між двома точками у вікні

Необхідно зафіксувати дві точки. Нехай це будуть точки в яких користувач натисне ліву а потім праву кнопку миші.

Коли виконується натискання лівої або правої кнопки миші, ми отримуємо повідомлення:

WM_LBUTTONDOWN або WM_RBUTTONDOWN

Разом з цими повідомленнями передаються координати миші.

X = LOWORD(lParam);

Y = HIWORD(lParam);

Це координати в яких було виконане натискання.

Нехай ліва кнопка миші була натиснута в координатах (X1,Y1) а права в координатах (X2,Y2). Відстань між двома точками отримуємо за виразом:

S = sqrt( ( X2 - X1 ) * ( X2 - X1 ) + ( Y2 - Y1 ) * ( Y2 - Y1 ) );

Для визначення швидкості руху миші потрібно знати час руху на проміжку.

Для визначення часу, потрібно зафіксувати час при натисканні лівої кнопки миші, а потім час при натисканні правої кнопки миші.

T1 = clock(); // цей рядок пишемо в обробник повідомлення WM_LBUTTONDOWN

…

T2 = clock(); // цей рядок пишемо в обробник WM_RBUTTONDOWN

DT = T2 – T1;

Speed = S / DT

Тепер залишається тільки вивести значення в вікно.

Для виведення отриманих текстових рядків можна використати функцію TextOut(). Вона вигідна тим, що дозволяє виводити в визначені координати вікна. координата курсор миша переміщення

Виведення отриманих рядків необхідно робити тільки в обробці повідомлення WM_PAINT. Воно приходить тоді, коти операційна система вважає, що інформація в нашому вікні застаріла.

Якщо, нам потрібно згенерувати повідомлення WM_PAINT, то викликаємо функцію InvalidateRect(), яка повідомляє ОС про те що якась частина нашого вікна (або все вікно) застаріло. Виклик цієї функції ми робимо кожний раз, коли необхідно перемалювати вікно.

Програмний код

#include <windows.h>

#include <math.h>

#include <time.h>

#include <tchar.h>

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);

int cX, cY, sX,sY;

double speed;

double T1 = 0, T2 = 0;

double S = 0;

int wayOnTable;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)

{

static TCHAR szAppName[] = _T("HelloWin") ;

HWND hwnd ;

MSG msg ;

WNDCLASSEX wndclass ;

wndclass.cbSize = sizeof (wndclass) ;

wndclass.style = CS_HREDRAW | CS_VREDRAW ;

wndclass.lpfnWndProc = WndProc ;

wndclass.cbClsExtra = 0 ;

wndclass.cbWndExtra = 0 ;

wndclass.hInstance = hInstance ;

wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;

wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;

wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);

wndclass.lpszMenuName = NULL ;

wndclass.lpszClassName = szAppName ;

wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION) ;

RegisterClassEx (&wndclass) ;

hwnd = CreateWindow (szAppName, // window class name

_T("The Hello Program"), // window caption

WS_OVERLAPPEDWINDOW, // window style

CW_USEDEFAULT, // initial x position

CW_USEDEFAULT, // initial y position

CW_USEDEFAULT, // initial x size

CW_USEDEFAULT, // initial y size

NULL, // parent window handle

NULL, // window menu handle

hInstance, // program instance handle

NULL) ; // creation parameters

ShowWindow (hwnd, iCmdShow) ;

while (GetMessage (&msg, NULL, 0, 0))

{

TranslateMessage (&msg) ;

DispatchMessage (&msg) ;

}

return msg.wParam ;

}

LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)

{

HDC hdc ;

PAINTSTRUCT ps ;

RECT rect ;

RECT rectInv;

int x, y;

rectInv.top = 0;

rectInv.left = 0;

rectInv.right = 400;

rectInv.bottom = 60;

switch (iMsg)

{

case WM_CREATE :

return 0 ;

case WM_MOUSEMOVE:

cX = LOWORD(lParam);

cY = HIWORD(lParam);

InvalidateRect(hwnd, &rectInv, true);

return 0;

case WM_LBUTTONDOWN:

sX = LOWORD(lParam);

sY = HIWORD(lParam);

T1 = clock();

S = 0;

speed = 0;

wayOnTable = 0;

return 0;

case WM_RBUTTONDOWN:

x = LOWORD(lParam);

y = HIWORD(lParam);

S = sqrt((double)(( x - sX ) * ( x - sX ) + ( y - sY ) * ( y - sY)));

T2 = clock();

speed = (S / max(0.01, (T2 - T1))/ CLOCKS_PER_SEC);

wayOnTable = S / 25 ;

InvalidateRect(hwnd, &rectInv, true);

return 0;

case WM_PAINT :

TCHAR str[40];

TCHAR way[45];

TCHAR way2[45];

_stprintf(str, _T(" X = %d Y = %d "), cX, cY );

_stprintf(way, _T("Миша пройшла %d пікселів зі шв. %lf"), (int)S, speed);

_stprintf(way2, _T("Миша пройшла %d мм по столу"), wayOnTable);

hdc = BeginPaint (hwnd, &ps) ;

GetClientRect (hwnd, &rect) ;

TextOut(hdc, 5, 5, str, _tcslen(str));

TextOut(hdc, 5, 25, way, _tcslen(way));

TextOut(hdc, 5, 45, way2, _tcslen(way2));

EndPaint (hwnd, &ps) ;

return 0 ;

case WM_DESTROY :

PostQuitMessage (0) ;

return 0 ;

}

return DefWindowProc (hwnd, iMsg, wParam, lParam) ;

}

Висновок

Отже, при виконанні даної лабораторної роботи були здобуті навики обробки миші у вікні. В результаті, програма здатна виводити координати курсору миші при переміщенні, а також відображати відстань та швидкість з якою проходить курсор між двома обраними точками.


Нет нужной работы в каталоге?

Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
157252
рейтинг
icon
6081
работ сдано
icon
2741
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
67 467 оценок star star star star star
среднее 4.9 из 5
Коломенский политехнический институт (филиал Московского политехнического университета)
Спасибо большое Алексею за досрочное выполнение заказа. Просто супер. Обращайтесь к нему, ...
star star star star star
РГУТиС
Огромное спасибо. Отличная работа, без нареканий, все на высшем уровне.
star star star star star
Чувашский государственный университет им. И.Н.Ульянова
Смело обращайтесь, заказ был выполнен досрочно и без каких-либо замечаний
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

Курсовой проект с расчетами

Курсовая, Детали машин и основы конструирования

Срок сдачи к 1 дек.

только что

Платформа юмед

Другое, Фармация

Срок сдачи к 30 нояб.

1 минуту назад

Расчет пожарного риска

Курсовая, Пожарная безопасность

Срок сдачи к 17 нояб.

3 минуты назад

Сделать отрисовку объекта с изображения

Практическая работа, Фотограмметрия и дистанционное зондирование

Срок сдачи к 6 окт.

3 минуты назад

Решение задач

Решение задач, Физика

Срок сдачи к 3 окт.

3 минуты назад

Тема «понятие телосложения и его основные характеристики»

Реферат, Физическая культура

Срок сдачи к 4 окт.

4 минуты назад

Сечения помогите построить пожалуйста .p

Чертёж, Геометрия

Срок сдачи к 3 окт.

5 минут назад

Диплом

Диплом, Лишение родительских прав

Срок сдачи к 18 янв.

5 минут назад

Выбрать и проанализировать научные статьи

Доклад, Уголовное право

Срок сдачи к 4 окт.

5 минут назад

Решить три задания 41 варианта

Курсовая, Электротехника

Срок сдачи к 4 окт.

6 минут назад

Тема: Развитие иноязычных грамматических навыков на уровне основного...

Курсовая, Методика обучения иностранному языку

Срок сдачи к 9 окт.

7 минут назад

Общие требования к выполнению и оформлению лабораторных работ

Лабораторная, Информационная безопасность и защита информации

Срок сдачи к 16 окт.

7 минут назад

Репортажная, серийная и жанровая съёмка

Творческая работа, Фотография / Основы фотографии

Срок сдачи к 3 окт.

7 минут назад

Сделать Курсовую по Туризму и Гостеприимству

Курсовая, Предоставление гостиничных услуг МДК.

Срок сдачи к 14 окт.

8 минут назад

Функции производные

Решение задач, Высшая математика

Срок сдачи к 11 окт.

9 минут назад

Руссскиы язык

ВКР, Русский язык

Срок сдачи к 5 окт.

9 минут назад

Русский язык

ВКР, Русский язык

Срок сдачи к 6 окт.

10 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно