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


 

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

52102. Особливості географічного положення Африки. Елементи берегової лінії. Дослідження та освоєння 1.58 MB
  Мета: формувати загальні уявлення про зміст та структуру розділу Материки; ознайомити з планом вивчення материків; розкрити поняття географічне положення;познайомити учнів з історією відкриття Африки. Обладнання: фізична карта світу фізична карта Африки плани характеристики географічного положення материка контурні карти портрети дослідників підручники атласи. До Африки взимку відлітають птахи України: лелеки ластівки журавлі тощо.
52103. Води суходолу Африки 890.5 KB
  Мета: сформувати в учнів уявлення про особливості вод суходолу Африки; охарактеризувати головні річкові системи та басейни основні типи озер; систематизувати знання учнів про гідрологічні особливості території; продовжити формування практичних умінь характеристики водних ресурсів; сформувати поняття учнів про гідроекологічні проблеми Африки; удосконалити навички роботи з картами атласу контурною картою; виховувати бережливе ставлення до природи водних...
52104. Африка. Особливості географічного положення та історія дослідження материка 101 KB
  Мета: ознайомити учнів з історією дослідження Африки, своєрідністю природи материка, яка пов`язана з особливостями географічного положення, сформувати уявлення про періоди дослідження материка; закріпити вміння визначити координати крайніх точок материка; розвивати творчу уяву...
52105. Внутрішні води Африки 53 KB
  Кагера що впадає в озеро Вікторія. Що таке озеро Які за походженням вони бувають Виступи дітей ОЗЕРА Більшість озер Африки розташовані уздовж Східноафриканських розломів. Найбільше з них озеро Танганьїка глибиною 1470 метрів друге за глибиною після Байкалу і найдовше світі озеро 670 км. Найбільше озеро Африки і друге за площею пріноводне озеров світі після о.
52106. Agatha Christie 72 KB
  Аgatha Mary Clarissa Christie is possibly the worlds most famous detective story writer. She wrote 79 novels and several plays. Her sales outnumber those of William Shakespeare. However, behind her 4,680,000 words was a painfully shy woman whose life was often lonely and unhappy.
52107. Я і мої друзі - лідери здоровя 269.5 KB
  Так працюючи за програмою Сприяння просвітницькій роботі Рівний –Рівному серед молоді України щодо здорового способу життя я маю можливість формувати здоров’язберігаючу компетентність учнів орієнтувати дітей та молодь на здоровий спосіб життя виховувати у них відповідальне ставлення до здоров’я. Однією із дієвих форм пропаганди учасниками програми здорового способу життя серед широких учнівських мас є створення і виступи агітбригади яка є близькою і зрозумілою для всіх томущо в ній є творче вираження та активна подача великого...
52108. Was ist Deutschland für uns 38 KB
  Die Musik ist eine Kunst. Ich habe Music gern. In Deutschland können Sie Philharmonie besuchen, und schöne Music hören. Hören die Werk des bekannten Musikers. Solche wie: Iogan Bach, Ludwig van Bethoven, Brahms Johannes. Horen die Werk des Großen Musikers.
52109. Сценарий выступления агитбригады молодых творческих педагогов 88.5 KB
  Карманова Деньгиденежки затем на мотив песни группы Гринджоли Разом нас багато Разом вас багато Всіх не прогодувати Председатель ПК: ах так Ну теперь держитесь отходит в сторону зовёт членов ПК Члены Пк берут транспаранты: ПК нас защитит и ходят по сцене со словами: Разом нас багато Всіх не подолати 3 раза Министр выглядывает кусает губыприносит приказ на повышение З п председателю ПК Все радуются обнимаютсяуходят со сцены Вера Васильевна: вот это да к самому министру не побоялись поехать Ирина Владимировна:...
52110. World AIDS Day is December 1st 70.5 KB
  Ukraine has an HIV/AIDS epidemic. UNAIDS estimates the number of people infected with HIV/AIDS to be between 260 000 and 590 000. The cases of HIV have doubled every year for the past three years. Experts estimate that 1.4 percent of the adult population is HIV positive or has AIDS. This is the highest rate of infection in Eastern Europe and the CIS states. Unfortunately, it is also estimated that about 90 percent of these people don't know, and arent registered with the government thus not receiving the treatment.