MaterStudiorum.ru - домашняя страничка студента.
Минимум рекламы - максимум информации.


Авиация и космонавтика
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Банковское дело
Безопасность жизнедеятельности
Биографии
Биология
Биология и химия
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Издательское дело и полиграфия
Инвестиции
Иностранный язык
Информатика
Информатика, программирование
Исторические личности
История
История техники
Кибернетика
Коммуникации и связь
Компьютерные науки
Косметология
Краткое содержание произведений
Криминалистика
Криминология
Криптология
Кулинария
Культура и искусство
Культурология
Литература и русский язык
Литература(зарубежная)
Логика
Логистика
Маркетинг
Математика
Медицина, здоровье
Медицинские науки
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Москвоведение
Музыка
Муниципальное право
Налоги, налогообложение
Наука и техника
Начертательная геометрия
Новейшая история, политология
Оккультизм и уфология
Остальные рефераты
Педагогика
Полиграфия
Политология
Право
Право, юриспруденция
Предпринимательство
Промышленность, производство
Психология
Психология, педагогика
Радиоэлектроника
Разное
Реклама
Религия и мифология
Риторика
Сексология
Социология
Статистика
Страхование
Строительные науки
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Управленческие науки
Физика
Физкультура и спорт
Философия
Финансовые науки
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
Экология
Экономика
Экономико-математическое моделирование
Экономическая география
Экономическая теория
Эргономика
Этика
Юриспруденция
Языковедение
Языкознание, филология
    Начало -> Информатика, программирование -> Розроблення програми на мові С для OS Windows

Название:Розроблення програми на мові С для OS Windows
Просмотров:116
Раздел:Информатика, программирование
Ссылка:none(0 KB)
Описание: Міністерство освіти і науки України Житомирський державний технологічний університет ФІКТ Кафедра ПЗОТ Група ПІ-39 Лабораторна робота №5 з курсу «Системне програмування» на тему: «KeyL

Часть полного текста документа:

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

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

ФІКТ

Кафедра ПЗОТ

Група ПІ-39

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

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

на тему: «KeyLock»

 

м. Житомир

2011 р.


ЗАГОЛОВОК

 

Завдання. 3

Код програми. 4

Висновок. 8


Завдання

1. Вивчити матеріал викладений у файлі допомоги

2. Створити програму, яка друкує в вікно інформацію про натискання клавіш на клавіатурі в подібну таблицю:

Massege Key Char Repeat Scan Ext Alt Prev Tran

Код програми

KEYLOOK.C

#include <windows.h>

#include <stdio.h>

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

RECT rect ;  //структура, яка буде мiстити розмiри вiкна

int cxChar;  //ширина символа

int cyChar;  //висота символа

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)

{

static char szAppName[] = "KeyLook" ;

HWND        hwnd;                //дескриптор вiкна

MSG         msg;                                     //структура повiдомлення

WNDCLASSEX  wndclass;  //структура класу вiкна

wndclass.cbSize                     = sizeof (wndclass);                               //розмiр структури класу вiкна

wndclass.style                        = CS_HREDRAW | CS_VREDRAW;  //стиль  класу вiкна

wndclass.lpfnWndProc          = WndProc;            // вiконна процедура

wndclass.cbClsExtra              = 0;                         //резервування додатков. пам’ятi в структурi класу вiкна

wndclass.cbWndExtra            = 0;                         //резервування додатков. пам’ятi в структурi  вiкна

wndclass.hInstance                = hInstance;            //дескриптор екземпляра програми

wndclass.hIcon                      = LoadIcon (NULL, IDI_APPLICATION);        //задання iконки

wndclass.hCursor                  = LoadCursor (NULL, IDC_ARROW);                     //задання курсораwndclass.hbrBackground   = (HBRUSH) GetStockObject (WHITE_BRUSH); //задання кольору фону робоч. областi вiкна

wndclass.lpszMenuName  = NULL;                     //меню класу

wndclass.lpszClassName = szAppName;             // iм’я класу

wndclass.hIconSm       = LoadIcon (NULL, IDI_APPLICATION);   //задання iконки для вiкон данного класу

RegisterClassEx (&wndclass) ;

hwnd = CreateWindow          (szAppName,                          //iм’я классу вiкна

" Keyboard Message Looker ",     // заголовок вiкна

WS_OVERLAPPEDWINDOW,     // стиль вiкна

CW_USEDEFAULT,           // початкове положення по х

CW_USEDEFAULT,           // початкове положення по у

CW_USEDEFAULT,           // початковий розмiр по х

CW_USEDEFAULT,           // початковий розмiр по у

NULL,                    // дескриптор батькiвського вiкна

NULL,                    // дескриптор меню вiкна

hInstance,               // дескриптор екземпляра програми

NULL) ;                 // параметри створення

ShowWindow (hwnd, iCmdShow) ;

UpdateWindow (hwnd) ;       //перемалювання робоч. областi вiкна

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

{

TranslateMessage (&msg);    //передача структури в Windows

DispatchMessage (&msg);                    //вiдправка повiдомлень вiконiй процедурi

}

return msg.wParam ;

}

void ShowKey (HWND hwnd, int iType, char *szMessage, WPARAM wParam, LPARAM lParam)

{

static char *szFormat[2] = { "%-14s %3d    %c %6u %4d %3s %3s %4s %4s",

"%-14s    %3d %c %6u %4d %3s %3s %4s %4s" } ;

char        szBuffer[80] ;

HDC         hdc ;      //дескриптор контексту пристрою

ScrollWindow (hwnd, 0, -cyChar, &rect, &rect) ;

hdc = GetDC (hwnd) ;           //отримання дексриптора контексту пристрою

SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT)) ;    //вибiр шрифту

TextOut (hdc, cxChar, rect.bottom - cyChar, szBuffer,

wsprintf (szBuffer, szFormat [iType],

szMessage, wParam,

(BYTE) (iType ? wParam : ' '),

LOWORD (lParam), //повторення натиснення клавiш

HIWORD (lParam) & 0xFF, //скан код

(PSTR) (0x01000000 & lParam ? "Yes"  : "No"),               //розширен. клавiатури

(PSTR) (0x20000000 & lParam ? "Yes"  : "No"),               //чи натиснена клавіша Alt

(PSTR) (0x40000000 & lParam ? "Down" : "Up"),             //попереднiй стан клавiши

(PSTR) (0x80000000 & lParam ? "Up"   : "Down")));        //теперешнiй стан клавiши

ReleaseDC (hwnd, hdc) ;           //звiльнення дескриптора

ValidateRect (hwnd, NULL) ; //вiкно не потребує перемальовування

}

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

{

static char szTop[] =  "Message        Key Char Repeat Scan Ext ALT Prev Tran";

static char szUnd[] =  "_______        ___ ____ ______ ____ ___ ___ ____ ____";

HDC         hdc ;

PAINTSTRUCT ps ;

TEXTMETRIC  tm ;

switch (iMsg)

{

case WM_CREATE : //створення вiкна

hdc = GetDC (hwnd);

SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT)) ;

GetTextMetrics (hdc, &tm) ;

cxChar = tm.tmAveCharWidth ;

cyChar = tm.tmHeight ;

ReleaseDC (hwnd, hdc) ;

rect.top = 3 * cyChar / 2 ;

return 0 ;

case WM_SIZE : //змiна розмiрiв вiкна

rect.right  = LOWORD (lParam) ;

rect.bottom = HIWORD (lParam) ;

UpdateWindow (hwnd) ;

return 0 ;

case WM_PAINT : //перемалювання вікна

InvalidateRect (hwnd, NULL, TRUE) ;

hdc = BeginPaint (hwnd, &ps) ;

SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT)) ;

SetBkMode (hdc, TRANSPARENT) ;

TextOut (hdc, cxChar, cyChar / 2, szTop, (sizeof szTop) - 1) ;

TextOut (hdc, cxChar, cyChar / 2, szUnd, (sizeof szUnd) - 1) ;

EndPaint (hwnd, &ps) ;

return 0 ;

case WM_KEYDOWN : //при натисненні клавiші, яка не вiдобраається на екранi

ShowKey (hwnd, 0, "WM_KEYDOWN", wParam, lParam) ;

return 0 ;

case WM_KEYUP : //при відпусканні клавiші, яка не вiдобраається на екранi

ShowKey (hwnd, 0, "WM_KEYUP", wParam, lParam) ;

return 0 ;

case WM_CHAR : //при натисненнi на клавiшу яка вiдобраається на екранi

ShowKey (hwnd, 1, "WM_CHAR", wParam, lParam) ;

return 0 ;

case WM_DEADCHAR : // при натисненнi  на "нiму" клавiшу

ShowKey (hwnd, 1, "WM_DEADCHAR", wParam, lParam) ;

return 0 ;

case WM_SYSKEYDOWN ://при натисненнi на клавiшу <ALT>

ShowKey (hwnd, 0, "WM_SYSKEYDOWN", wParam, lParam) ;

break ;

case WM_SYSKEYUP : //при відпусканні клавіші

ShowKey (hwnd, 0, "WM_SYSKEYUP", wParam, lParam) ;

break ;

case WM_SYSCHAR : //при натисненнi на <ALT> + <символьна клавiша>

ShowKey (hwnd, 1, "WM_SYSCHAR", wParam, lParam) ;

break ;

case WM_SYSDEADCHAR :  // при натисненнi на нiму клавiшу та <Alt>

ShowKey (hwnd, 1, "WM_SYSDEADCHAR", wParam, lParam) ;

break ;

case WM_DESTROY : //при закритi вiкна користувачем

PostQuitMessage (0) ;

return 0 ;

}

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

}


Висновок

Отже, на даній лабораторній роботі було розроблено програму на мові С для OS Windows, яка виводить у вікно інформацію про натиснення клавіш клавіатури. ............




 
     

Вечно с вами © MaterStudiorum.ru