Міністерство
освіти і науки України
Житомирський
державний технологічний університет
Лабораторна
робота №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) ;
}
Висновок
Отже, при
виконанні даної лабораторної роботи були здобуті навики обробки миші у вікні. В
результаті, програма здатна виводити координати курсору миші при переміщенні, а
також відображати відстань та швидкість з якою проходить курсор між двома
обраними точками.
Другие работы по теме:
Макроси Запис виконання та правка
Реферат на тему: Автоматизація виконання задач за допомогою макросів Макрос — це серія команд, що згруповані разом для спрощення повсякденної роботи. Макроси часто використовуються для таких цілей:
Декартовыми прямоугольными координатами
точки P на плоскости в двухмерной системе координат называются взятые с определенным знаком расстояния (выраженные в единицах масштаба) этой точки до двух взаимно перпендикулярных прямых — осей координат или проекции радиус-вектора r точки P на две взаимно перпендикулярные координатные оси.
Потрійний інтеграл
Характеристика та поняття потрійного інтеграла, умови його існування та основні властивості. Особливості схеми побудови та обчислення потрійного інтегралу, його застосування для розв’язання рівнянь. Правило заміни змінних в потрійному інтегралі.
Паралельні проекції
Елементарний математичний апарат плоских геометричних проекцій. Ортографічне косокутне проектування на площину, застосування матриць. Розгляд проекцій картинної площини в лівосторонній системі координат спостерігача, погодження з екраном дисплея.
Прямоугольная система координат
Положение точки на плоскости определяется двумя координатами. Чтобы определить эти координаты делают следующие построения. Проводят две взаимно перпендикулярные прямые X`X, Y`Y. Они называются — оси координат.
Діапазон комірок Обчислення в комірках
Виділення діапазону комірок. Більшість команд Excel оперують з активною коміркою або діапазоном комірок. Для виділення суміжного діапазону комірок слід за допомогою вказівника миші (утримуючи ліву кнопку миші натисненою) підсвітити потрібний прямокутник комірок. Для виділення колонки або рядка слід сумістити вказівник миші із заголовком колонки або номером рядка і клацнути лівою кнопкою миші.
Проектування ітераційних алгоритмів
Використання ітерацій для обчислення приблизних значень величин. Розробка ітераційних алгоритмів з перевіркою правильності введення даних. Побудова блок-схеми і програмування мовою Turbo Pascal обчислення значення функції, розкладеної в степеневий ряд.
Створення таблиць даних в MS Excel
Методи створення книги MS Excel для розподілу заробітної плати між членами комплексної бригади та аналізу результатів розподілу згідно кваліфікації та відпрацьованого часу. Створення таблиці розподілу, нарахувань та утримань. Побудова графіків та діаграм.
Маніпулятори
Нові модифікації маніпуляторів типу "Миша". Джойстик як аналоговий координатний пристрій введення інформації. Принцип дії механічної миші. Сенсорна панель (TouchPad) - це панель, зазвичай прямокутної форми, чутлива до натискання пальців або долоні.
Введення виділення та правка
Реферат на тему: Введення Введення тексту Однією з основних особливостей будь-якого текстового процесора є автоматичне розміщення тексту у рядках та на сторінках. Це означає, що при введенні немає ніякої потреби слідкувати за досягненням кінця рядка чи сторінки (як при друку на друкарській машинці).
Однорангова операційна система Windows 95 98
ОДНОРАНГОВА ОПЕРАЦIЙНА СИСТЕМА WINDOWS 95/98. Операційні системи Windows 95 i Windows 98 включають в себе необхідне програмне забезпечення для установки невеликої комп’ютерної мережі, в якій може бути організований спільний доступ до файлів та принтерів. Вам необхідно встановити в кожний Windows-комп’ютер мережевий адаптер (мережеву карту).
Аналіз та обчислення дужкових виразів
Реферат на тему: Аналіз та обчислення дужкових виразів У розділі 9 розглядалися дужкові арифметичні вирази, мова яких породжується розширеною LA(1)-граматикою G2:
Редактор формул 3
Реферат на тему: Редактор формул Основні відомості про редактор формул Редактор формул, що використовується з застосуваннями компанії Microsoft, є спеціальною версією редактора формул
Опис графічного редактора Paint
Національний університет Острозька академія” Факультет „Політико інформаційного менеджменту” Кафедра „Документознавства та інформаційної діяльності”
Керування папками файлами та ярликами Меню Пуск
керування папками, файлами та ярликами. меню пуск Створення папок Із погляду документо-орієнтоваиості ОС Windows 98 папки є контейнерами, в яких зберігаються інші інформаційні об'єкти: документи, додатки, інші папки та ярлики.
Апаратна складова обчислювальної системи
Тема. 1. Склад обчислювальної системи. Науково-технічні досягнення ХХ століття показали можливість автоматизації робіт з даним за рахунок використання не механічних , а електронних пристроїв. Це дозволило підвищити їх надійність та продуктивність. Характерною їх відмінністю від механічних пристроїв є те, що вони реєструють не переміщення елементів конструкції, а їх стани.
Утворення та імпорт рисунків
Реферат на тему: Утворення рисунків Робота з графічними об’єктами У документ крім тексту можна добавити також графічні об’єкти. За допомогою кнопок, що розташовані на панелі графічних елементів, легко зображувати лінії, стрілки, еліпси, прямокутники, кола, дуги, сектори та різні криві. Після створення графічного об’єкту його можна залити кольором або узором, змінити колір та тип ліній, збільшити або зменшити, перемістити, повернути або дзеркально відобразити об’єкти.
Клавіатура Докладний опис клавіатури клавіші
Мета: Володіти навиками роботи на клавіатурі за допомогою клавіатурного тренажеру. Теоретичні відомості: Клавіатура призначена для введення до ПК символьної інформації (літер, цифр, розділових знаків та ін.), а також для управління роботою ПК. Для кожного символу виділяється клавіша, натискуючи на яку ми і вводимо код символу в ПК.
Позиціювання тексту та рисунків
Реферат на тему: Завдання точного положення графічних об’єктів Один із способів точного переміщення об’єктів виконується за допомогою клавіш із стрілками, при цьому об’єкт переміщається до наступної лінії сітки. Якщо необхідно переміщати об’єкт по одному пікселу за крок, переміщайте його за допомогою клавіш зі стрілками, утримуючи натиснутою клавішу CTRL.
Пристрої управління курсором
РЕФЕРАТ на тему: Пристрої управління курсором Пристрої управління курсором Світлове перо . Дозволяє здійснювати безпосередній контакт користувача з екраном УВО. Світлове перо представляє собою електронний пристрій, який при переміщенні по екрану, розпізнає світлові сигнали.
Похідна за напрямом Градієнт
1. Похідна за напрямом. Для характеристики зміни скалярного поля в заданому напрямі вводять поняття похідної за напрямом. Область простору кожній точці М якої поставлено у відповідність значення деякої скалярної величини