69998

СРЕДСТВА ВВОДА ИНФОРМАЦИИ

Лабораторная работа

Информатика, кибернетика и программирование

Цель: Ознакомление с устройствами, осуществляющими ввод информации в компьютер (мышь, клавиатура), их программным представлением в операционной системе, а также с программными элементами взаимодействия пользователя и ЭВМ (диалоговые окна), получение практических навыков по составлению...

Русский

2014-10-13

57 KB

5 чел.

Министерство образования и науки Украины

Харьковский Национальный Университет Радиоэлектроники

Кафедра ЭВМ

Лабораторная работа №3

Тема: «СРЕДСТВА ВВОДА ИНФОРМАЦИИ»

Выполнил:                                                                      Проверил:

ст. гр. КИ-08-4                                                                Бугрий А. Н.

Кравец Артём Валерьевич

2009

Лабораторная работа №3

Тема: «СРЕДСТВА ВВОДА ИНФОРМАЦИИ»

Цель: Ознакомление с устройствами, осуществляющими ввод информации в компьютер (мышь, клавиатура), их программным представлением в операционной системе, а также  с программными элементами взаимодействия пользователя и ЭВМ (диалоговые окна), получение практических навыков по составлению, написанию и отладке программ, осуществляющих взаимодействие ЭВМ-пользователь.

Задание:

Вариант 6

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

Листинг:

#include <windows.h>         // подключение библиотеки с функциями API

#include <time.h>

HINSTANCE hInst;  // Указатель приложения

LPCTSTR szWindowClass = "Students";

LPCTSTR szTitle = "Лабораторная работа №3";

// Предварительное описание функций

ATOM MyRegisterClass(HINSTANCE hInstance);

BOOL InitInstance(HINSTANCE, int);

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

// Основная программа

int APIENTRY WinMain(HINSTANCE hInstance,

                    HINSTANCE hPrevInstance,

                    LPSTR     lpCmdLine,

                    int       nCmdShow)

{

MSG msg;

// Регистрация класса окна

MyRegisterClass(hInstance);

// Создание окна приложения

if (!InitInstance (hInstance, nCmdShow))

{

 return FALSE;

}

// Цикл обработки сообщений

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

{

  TranslateMessage(&msg);

  DispatchMessage(&msg);

}

return msg.wParam;

}

ATOM MyRegisterClass(HINSTANCE hInstance)

{

WNDCLASSEX wcex;

wcex.cbSize         = sizeof(WNDCLASSEX);

wcex.style   = CS_HREDRAW | CS_VREDRAW ; // стиль окна

wcex.lpfnWndProc = (WNDPROC)WndProc; // оконная процедура

wcex.cbClsExtra  = 0;      

wcex.cbWndExtra  = 0;

wcex.hInstance  = hInstance;  // указатель приложения

wcex.hIcon   = LoadIcon(NULL, IDI_APPLICATION);  // опре-деление иконки

wcex.hCursor  = LoadCursor(NULL, IDC_ARROW);    // опреде-ление курсора

wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);   // ус-тановка фона

wcex.lpszMenuName = NULL;  // определение меню

wcex.lpszClassName = szWindowClass; // имя класса

wcex.hIconSm  = NULL;

return RegisterClassEx(&wcex); // регистрация класса окна

}

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

{

  HWND hWnd;

  hInst = hInstance; // сохраняет указатель приложения в переменной hInst

  hWnd=CreateWindow(szWindowClass, // имя класса окна

szTitle,   // имя приложения

WS_OVERLAPPEDWINDOW, // стиль окна

CW_USEDEFAULT, // положение по Х

CW_USEDEFAULT,  // положение по Y

CW_USEDEFAULT,    // размер по Х

CW_USEDEFAULT,    // размер по Y

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

NULL,       // описатель меню окна

hInstance,  // указатель приложения

NULL);     // параметры создания.

  if (!hWnd) // Если окно не создалось, функция возвращает FALSE

  {

     return FALSE;

  }

  ShowWindow(hWnd, nCmdShow);  // Показать окно

  UpdateWindow(hWnd);   // Обновить окно

  return TRUE;    //Успешное завершение функции

}

 

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

{

 srand((unsigned)time(NULL));

 static HPEN hPen,hOldPen;

    static POINT pt, mas[10000];

    static HDC hdc;

    static int x, y, i=0;

 static bool temp = false, box = false;

 static COLORREF crLine;

    switch (message)

    {

    case WM_LBUTTONDOWN:

   hdc = GetDC(hwnd);

        

         x = LOWORD(lParam);

   y = HIWORD(lParam);

   MoveToEx(hdc,x,y,NULL);

 

   temp=true;

         InvalidateRect (hwnd, NULL, TRUE);

         return 0;

    case WM_MOUSEMOVE:

         if (temp)

         {

     crLine = RGB(rand()%255,rand()%255,rand()%255);

     hPen = (HPEN)CreatePen(PS_SOLID,1,crLine);

     hOldPen = (HPEN)SelectObject(hdc,hPen);

              pt.x = LOWORD (lParam);

              pt.y = HIWORD (lParam);

              LineTo   (hdc, pt.x, pt.y);

      mas[i].x = pt.x;

      mas[i].y = pt.y;

     SelectObject(hdc,hOldPen);

     DeleteObject(hPen);

        i++;

     if(i>10)

      MessageBox(NULL, "Ошибка в системе!:)", "Ошибка", MB_OK);

     

         }

         return 0;

         

    case WM_LBUTTONUP:

         temp = false;

   box = true;

ReleaseDC (hwnd, hdc) ;

         return 0;

         

    case WM_PAINT:

  if(box)

  {

    hdc = GetDC(hwnd);

          MoveToEx(hdc,x,y,NULL);

          for (int j=0; j < i; ++j)

            LineTo(hdc, mas[j].x, mas[j].y) ;

  

       

         ReleaseDC (hwnd, hdc) ;

  }

         return 0;

              

    case WM_DESTROY:

         PostQuitMessage (0) ;

         return 0;

    }

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

}

Результат:

Выводы: В этой лабораторной работе я ознакомился со структурой Windows-приложений, организацией взаимодействия программ с ОС, получил практические навыки по составлению, написанию и отладке простых программ. Ознакомился с ресурсами как средством создания визуального интерфейса и задания параметров и характеристик программного приложения.


 

А также другие работы, которые могут Вас заинтересовать

85467. Только тот, кто помнит о прошлом, достоин будущего. Сценарий внеклассного мероприятия, посвященного 70-й годовщине начала Великой Отечественной войны 90.5 KB
  Цель мероприятия: - создавать у учащихся целостное представление о Великой Отечественной войне, повышать мотивацию учащихся для получения новых знаний; воспитывать общечеловеческие ценности, чувство патриотизма, уважительное отношение к историческому наследию Украины, родного края, к старшему поколению...
85468. Гурток цікавої української мови. «У світі чарівних звуків та слів» 163 KB
  Звуки утворені із них слова та речення сприймаються нами як щось звичайне буденне пересічне. У світі чарівних звуків і слів гурток цікавої української мови Мета курсу: розширити і поглибити знання учнів з української мови; показати багатство і образність слова повести до скарбниці лексичних перлин що мають тільки їм властиву і неповторну будову та значення і разом з тим тісно повязаних між собою нитками походження звучання граматичних особливостей; переконати учнів що світ звуків і слів не менш цікавий ніж світ тварин і рослин...
85469. Щоб збулося все нівроку — з новим щастям, з Новим роком! 57 KB
  Мета: поповнити, систематизувати знання дітей про народні свята зимового циклу (Святвечір, Різдво, Святого Василя); ознайомити зі звичаями і обрядами, пов’язаними з цими святами; розвивати акторські здібності учнів, формувати естетичний смак; виховувати любов і пошану до традицій українського народу.
85470. Вправи на закріплення таблиці множення числа 5. Розв’язування задач на збільшення та зменшення числа в кілька разів 79.5 KB
  Розвязування задач на збільшення та зменшення числа в кілька разів. Закріплювати знання табличного множення числа 5; удосконалювати обчислювальні навички вміння розвязувати задачі на збільшення та зменшення числа в кілька разів; розвивати логічне мислення; формувати вміння давати оцінку своїм знанням...
85472. Характери та емоції 71 KB
  Вислови про добро дружбу працелюбність; штучні дерева; ялинка прикрашена надписами Ставлення до людей Ставлення до справи Ставлення до себе Ставлення до власності; новорічні іграшки кольоровий картон; паперові сніжинки словник про риси характеру; аркуш на якому написані людські емоції...
85473. Организация проектной деятельности в начальной школе 202 KB
  Проектная деятельность способствует формированию ключевых компетентностей учащихся подготовки их к реальным условиям жизнедеятельности. Девизом этой деятельности могут служить слова выдающегося немецкого драматурга и философа Г. Слайд 7 Метод проектов это один из методов интегрированного обучения учащихся который базируется на их самостоятельной мотивированной целенаправленной познавательной творческой деятельности.
85474. РОЛЬ РУССКИХ ПРАЗДНИКОВ В ФОРМИРОВАНИИ ЛИНГВОКУЛЬТУРОЛОГИЧЕСКОЙ КОМПЕТЕНЦИИ 74.5 KB
  На сегодняшнем уроке мы будем говорить об одном из самых ярких праздников русского народа - о Масленице Что вы знаете об этом празднике Ответы детей МОТИВАЦИЯ Просмотр мультфильма Ишь ты масленица Беседа Как вы думаете знала ли сторож что такое Масленица В какой конфуз она попала...
85475. «Ми творці життя – батьки і діти, невмирущий, мужній родовід» – до дня української родини 61.5 KB
  Мета: Формувати у студентів родинні почуття, прищепити відчуття приналежності до народу з міцним родовим корінням, багатими традиціями, звичаями; прослухати поезії та пісні про сенс людського життя, навчити студентів розуміти і збагачувати рідну мову; розвивати творчі здібності, активність, мислення...