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-приложений, организацией взаимодействия программ с ОС, получил практические навыки по составлению, написанию и отладке простых программ. Ознакомился с ресурсами как средством создания визуального интерфейса и задания параметров и характеристик программного приложения.


 

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

49185. Расчет системы автоматического регулирования ГТД для поддержания частоты вращения ГТД 592.8 KB
  Расчет клапана для регулирования подачи топлива. Расчет расходов топлива. Расчет расхода топлива на номинальном режиме работы ГТД. Расчет расхода топлива на максимальном режиме работы ГТД.
49189. КОНСТРУИРОВАНИЕ ОДЕЖДЫ 271.29 KB
  Конструирование одежды Проектирование серии изделий на базе одной конструктивной основы Заключение Список литературы Введение История возникновения одежды уходит далеко в глубь веков к самым ранним ступеням развития человечества. Материалистическая точка зрения связывает происхождение одежды с климатическими условиями а её развитие с...
49190. Расчет прочности рабочей лопатки, диска и определение частоты и формы изгибных колебаний одиночной лопатки и пакета лопаток, связанных бандажом 433.68 KB
  Расчет прочности рабочей лопатки. Расчет прочности лопатки и выбор материала рабочей лопатки. Определение частот и форм колебаний одиночной турбинной лопатки и пакета лопаток связанных бандажом.
49192. Природа і сутність політичної влади 51.21 KB
  Все життя людей нерозривно повязана з владою, яка є найбільш потужним засобом захисту людських інтересів, втілення планів людей, врегулювання їх протиріч і конфліктів. Ключова різновид влади - влада політична - має колосальними конструюють здібностями, представляє самий потужний джерело розвитку суспільства, знаряддя соціальних перетворень і трансформацій.
49193. Направленные микрофоны 7.61 MB
  Общие понятия о направленных микрофонах. Принцип работы микрофона заключается в том что давление звуковых колебаний воздуха воды или твердого вещества действует на тонкую мембрану микрофона. В свою очередь колебания мембраны возбуждают электрические колебания; в зависимости от типа микрофона для этого используются явление электромагнитной индукции изменение ёмкости конденсаторов или пьезоэлектрический эффект. Наибольшая чувствительность при этом достигается на пути вдоль оси микрофона когда источник размещен прямо перед...