рефераты
Главная

Рефераты по рекламе

Рефераты по физике

Рефераты по философии

Рефераты по финансам

Рефераты по химии

Рефераты по хозяйственному праву

Рефераты по цифровым устройствам

Рефераты по экологическому праву

Рефераты по экономико-математическому моделированию

Рефераты по экономической географии

Рефераты по экономической теории

Рефераты по этике

Рефераты по юриспруденции

Рефераты по языковедению

Рефераты по юридическим наукам

Рефераты по истории

Рефераты по компьютерным наукам

Рефераты по медицинским наукам

Рефераты по финансовым наукам

Рефераты по управленческим наукам

Психология и педагогика

Промышленность производство

Биология и химия

Языкознание филология

Издательское дело и полиграфия

Рефераты по краеведению и этнографии

Рефераты по религии и мифологии

Рефераты по медицине

Рефераты по сексологии

Рефераты по информатике программированию

Краткое содержание произведений

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

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

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

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

ФІКТ

Кафедра ПЗОТ

Група ПІ-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, яка виводить у вікно інформацію про натиснення клавіш клавіатури. програмування клавіатура windows


© 2012 Рефераты, курсовые и дипломные работы.