Операционный системы - Отчёт о лабораторной работе

Лабораторная работа по предмету «Информатика»
Информация о работе
  • Тема: Операционный системы - Отчёт о лабораторной работе
  • Количество скачиваний: 3
  • Тип: Лабораторная работа
  • Предмет: Информатика
  • Количество страниц: 7
  • Язык работы: Русский язык
  • Дата загрузки: 2014-06-05 00:45:22
  • Размер файла: 29.12 кб
Помогла работа? Поделись ссылкой
Информация о документе

Документ предоставляется как есть, мы не несем ответственности, за правильность представленной в нём информации. Используя информацию для подготовки своей работы необходимо помнить, что текст работы может быть устаревшим, работа может не пройти проверку на заимствования.

Если Вы являетесь автором текста представленного на данной странице и не хотите чтобы он был размешён на нашем сайте напишите об этом перейдя по ссылке: «Правообладателям»

Можно ли скачать документ с работой

Да, скачать документ можно бесплатно, без регистрации перейдя по ссылке:

Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное
учреждение высшего профессионального образования
«Ярославский Государственный Технический Университет»



Отчёт защищён
С оценкой
Преподаватель
( ) А. П. Харитонов 03.06.2014



Операционный системы

Отчёт о лабораторной работе
По курсу «Информационные системы и технологии»

ЯГТУ 080502.65 - 004 ЛР









Отчёт выполнил
студент гр. ЭИС-15
( ) М.А. Чудецкий
02.06.2014




2014


Задание:
• Продолжение работы по созданию создания прикладных программ, работающих с API операционной систем.
• Приобретение навыков работы по созданию программ средствами API OC Win 32.
• Создание работающей программы, выполняющей предъявленные критерии.
Блок-схема:
1.

















Да



Нет





Да



Нет

. . . (1)


. . . (1)
Нет

















2.





















. . . (1)

. . . (1)



Нет
Да









Нет
Да









Нет
Да









Да Нет




. . . (2)
. . . (2)



Да Нет








Да Нет










Текст программы:
#include <windows.h>

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

int WINAPI WinMain
int x=100,y=100,k=300,m=300,r=700,t=100,n=1,R=50; // Создаем переменные x,y,k,m,r,t,n,R.
(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{

HWND hMainWnd;
char szClassName[] = "MyClass";
MSG msg;
WNDCLASSEX wc;

wc.cbSize = sizeof(wc);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = HBRUSH(COLOR_WINDOW);
wc.lpszMenuName = NULL;
wc.lpszClassName = szClassName;
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

if (!RegisterClassEx(&wc)) {
MessageBox(NULL, "Cannot register class", "Error", MB_OK);
return 0;
}


hMainWnd = CreateWindow(
szClassName, "Test application", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0,
CW_USEDEFAULT, 0, (HWND)NULL, (HMENU)NULL, (HINSTANCE)hInstance, NULL);

if (!hMainWnd) {
MessageBox(NULL, "Cannot create window", "Error", MB_OK);
return 0;
}

ShowWindow(hMainWnd, nCmdShow);

while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DisplatchMessage(&msg);
}

return msg.wParam;

}
LRESULT CALLBACK WndProc(HWND hWnd, UINT umsg, WPARAM wParam, LPARAM lParam)
{
HDC hDC;
PAINTSTRUCT ps;
RECT rect;

switch(uMsg) {
case WM_PAINT:
hDC = BeginPaint(hWnd, &ps);
MoveToEx(hDC, x, y, NULL); // рисование точки в заданных координатах
LineTo(hDC, x+R, y+R); // рисование линии из начальной точки в заданную координату
LineTo(hDC, x-R, y+R); // рисование линии из предыдущей точки в заданную координату
LineTo(hDC, x ,y); // рисование линии из предыдущей точки в начальную координату

MoveToEx(hDC, k, m, NULL); // рисование точки в заданных координатах
LineTo(hDC, k+R, m+R); // рисование линии из начальной точки в заданную координату
LineTo(hDC, k+2*R, m); // рисование линии из предыдущей точки в заданную координату
LineTo(hDC, k+R, m-R); // рисование линии из предыдущей точки в заданную координату
LineTo(hDC, k, m); // рисование линии из предыдущей точки в начальную координату

MoveToEx(hDC, r, t, NULL); // рисование точки в заданных координатах
LineTo(hDC, r+R, t); // рисование линии из начальной точки в заданную координату
LineTo(hDC, r+R, t+R); // рисование линии из предыдущей точки в заданную координату
LineTo(hDC, r, t+R); // рисование линии из предыдущей точки в заданную координату
LineTo(hDC, r, t); // рисование линии из предыдущей точки в начальную координату
EndPaint(hWnd, &pc);
break;

case WM_LBUTTONDOWN:
if ( n == 1 ) {
x = LOWORD(lParam);
y = HIWORD(lParam);
GetClientRect(hWnd, &rect);
InvalidateRect(hWnd, &rect, -1);
UpdateWindow(hWnd);}

if ( n == 2) {
k = LOWORD(lParam);
m = HIWORD(lParam);
GetClientRect(hWnd, &rect);
InvalidateRect(hWnd, &rect, -1);
UpdateWindow(hWnd);}

if ( n == 3) {
r = LOWORD(lParam);
t = HIWORD(lParam);
GetClientRect(hWnd, &rect);
InvalidateRect(hWnd, &rect, -1);
UpdateWindow(hWnd);}
break;

case WM_KEYDOWN:
if (wParam == F1 ) n=1; // При нажатии кнопки F1,выбирается 1 фигура
if (wParam == F2 ) n=2; // При нажатии кнопки F2,выбирается 2 фигура
if (wParam == F3 ) n=3; // При нажатии кнопки F3,выбирается 3 фигура
GetClientRect(hWnd, &rect);
InvalidateRect(hWnd, &rect, -1);
UpdateWindow(hWnd);}
break;

case WM_CLOSE:
DestroyWindow(hWnd);
break;

case WM_DESTROY:
PostQuitMessage(0);
break;

default:
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

return 0;
}