Реферат по предмету "Информатика, программирование"


Розроблення програми на мові С для OS Windows

Міністерствоосвіти і науки України
Житомирськийдержавний технологічний університет
ФІКТ
Кафедра ПЗОТ
ГрупаПІ-39
Лабораторнаробота №5
з курсу«Системне програмування»
на тему:«KeyLock»
 
м. Житомир
2011р.

ЗАГОЛОВОК
 
Завдання. 3
Код програми. 4
Висновок. 8

Завдання
1. Вивчити матеріал викладений уфайлі допомоги
2.Створити програму, яка друкує в вікно інформацію про натискання клавіш наклавіатурі в подібну таблицю:Massege Key Char Repeat Scan Ext Alt Prev Tran

Код програми
KEYLOOK.C
#include
#include
LRESULTCALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
RECTrect; //структура,яка буде мiстити розмiри вiкна
intcxChar;  //ширинасимвола
intcyChar;  //висотасимвола
intWINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, intiCmdShow)
{
staticchar 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
}
returnmsg.wParam ;
}
voidShowKey (HWND hwnd, int iType, char *szMessage, WPARAM wParam, LPARAM lParam)
{
staticchar *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кнонепотребуєперемальовування
}
LRESULTCALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
staticchar szTop[] =  «Message        Key Char Repeat Scan Ext ALT PrevTran»;
staticchar szUnd[] =  "_______        ___ ____ ______ ____ ___ ___ ________";
HDC        hdc ;
PAINTSTRUCTps ;
TEXTMETRIC tm ;
switch(iMsg)
{
caseWM_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 ;
return0 ;
caseWM_SIZE: //змiнарозмiрiввiкна
rect.right = LOWORD (lParam) ;
rect.bottom= HIWORD (lParam) ;
UpdateWindow(hwnd) ;
return0 ;
caseWM_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) ;
return0 ;
caseWM_KEYDOWN: //при натисненніклавiші,яканевiдобрааєтьсянаекранi
ShowKey(hwnd, 0, «WM_KEYDOWN», wParam, lParam) ;
return0 ;
caseWM_KEYUP: //при відпусканніклавiші,яканевiдобрааєтьсянаекранi
ShowKey(hwnd, 0, «WM_KEYUP», wParam, lParam) ;
return0 ;
caseWM_CHAR: //при натисненнiнаклавiшу яка вiдобрааєтьсяна екранi
ShowKey(hwnd, 1, «WM_CHAR», wParam, lParam) ;
return0 ;
caseWM_DEADCHAR: // при натисненнi на«нiму»клавiшу
ShowKey(hwnd, 1, «WM_DEADCHAR», wParam, lParam) ;
return0 ;
caseWM_SYSKEYDOWN ://при натисненнiнаклавiшу
ShowKey(hwnd, 0, «WM_SYSKEYDOWN», wParam, lParam) ;
break;
caseWM_SYSKEYUP: //при відпусканні клавіші
ShowKey(hwnd, 0, «WM_SYSKEYUP», wParam, lParam) ;
break;
caseWM_SYSCHAR: //при натисненнiна +
ShowKey(hwnd, 1, «WM_SYSCHAR», wParam, lParam) ;
break;
caseWM_SYSDEADCHAR :  // при натисненнiнанiмуклавiшута
ShowKey(hwnd, 1, «WM_SYSDEADCHAR», wParam, lParam) ;
break;
caseWM_DESTROY: //при закритiвiкнакористувачем
PostQuitMessage(0) ;
return0 ;
}
returnDefWindowProc (hwnd, iMsg, wParam, lParam) ;
}
Висновок
Отже,на даній лабораторній роботі було розроблено програму на мові С для OSWindows, яка виводить у вікно інформацію пронатиснення клавіш клавіатури. програмуванняклавіатура windows


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.