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


 

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

44347. Изучение теоретических основ компенсационного менеджмента и разработка практических рекомендаций по его совершенствованию в АНО «Цент Развития Современного Дизайна» 853 KB
  Теория краткосрочных и долгосрочных стимулов Анализ компенсационной политики в АНО Центр Развития Современного Дизайна Краткая характеристика АНО Центр Развития Современного Дизайна Анализ организации и регулирования оплаты труда в АНО Центр Развития Современного Дизайна Анализ формирования поощрительного фонда в АНО Центр Развития Современного Дизайна Совершенствование организации компенсационной системы в АНО Центр Развития Современного Дизайна Рекомендации по формированию компенсационного пакета АНО Центр...
44348. Разработка мер по совершенствованию системы обязательного социального страхования в Российской Федерации 1.36 MB
  Обязательное социальное страхование появилось в Росси несколько позже, чем в западных странах. В 1889 году в Государственный совет был предложении проект закона, в котором предлагалось нести ответственность владельцам промышленных предприятий за причиненное увечье вплоть до случаев со смертельным исходом
44350. УПРАВЛЕНИЕ КОНКУРЕНТОСПОСОБНОСТЬЮ ПРЕДПРИЯТИЯ 671 KB
  Конкуренция является неотъемлемой компонентой рыночной экономики. Она побуждает предпринимателей и коммерсантов в наиболее сжатые сроки внедрять всё то новое, что является в результате научных исследований и достижений научно-технического прогресса
44351. Правовое регулирование материального обеспечения военнослужащих 405.5 KB
  Правовые основы материального обеспечения военнослужащих.1 Исторический аспект формирования нормативноправовой базы регулирующей материальное обеспечение военнослужащих.2 Понятие и виды материального обеспечения военнослужащих. Особенности медицинского и санаторнокурортного обеспечения военнослужащих.
44352. Оценка экономической эффективности инвестиций в систему защиты персональных данных в информационной системе персональных данных ООО «Информбюро» 1.46 MB
  Система должна обеспечивать безопасность всей информации подлежащей защите. Выявлены возможные угрозы безопасности информации и разработаны требования к системе защиты. ОБОЗНАЧЕНИЯ И СОКРАЩЕНИЯ ПДн − персональные данные ИСПДн информационная система персональных данных АС автоматизированная система АРМ автоматизированное рабочее место ЛВС локально-вычислительная сеть НСД − несанкционированный доступ СЗИ − средство защиты информации МЭ межсетевой экран ПО программное обеспечение ООО общество с ограниченной ответственностью КоАП ...
44354. ИСПОЛЬЗОВАНИЕ ФАСИЛИТАЦИИ В УПРАВЛЕНИИ ОРГАНИЗАЦИЕЙ И РАЗВИТИИ ПЕРСОНАЛА (НА МАТЕРИАЛЕ ТУРИСТИЧЕСКОГО КОМПЛЕКСА «ТАНАЙ») 601.5 KB
  Новые методы работы с персоналом как условие эффективного управления организацией Система управления организацией: структура содержания Управление персоналом как один из важнейших элементов системы управления Методы управления персоналом в системе менеджмента организаций Фасилитация как метод управления персоналом. Использование...