69997

КОНТЕКСТЫ УСТРОЙСТВ. ВЫВОД ТЕКСТА И ГРАФИКИ

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

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

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

Русский

2014-10-13

65.5 KB

6 чел.

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

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

Кафедра ЭВМ

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

Тема: «КОНТЕКСТЫ УСТРОЙСТВ. ВЫВОД ТЕКСТА И ГРАФИКИ»

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

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

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

2009

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

Тема: «КОНТЕКСТЫ УСТРОЙСТВ. ВЫВОД ТЕКСТА И ГРАФИКИ»

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

Задание:

Вариант 1

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

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

Информация об устройстве: ширину поля вывода в миллиметрах.

Информация о шрифте: величина пространства над символом для специальный знаков.

Написать программу, рисующую четыре прямоугольника в клиентской области окна, которые делят его на четыре равные части. При изменении размеров окна, следует перерисовать прямоугольники, вычислив их новые размеры.

Листинг:

#include <windows.h>    

#include "resource.h"

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

LPCTSTR szWindowClass = "QWERTY";

LPCTSTR szTitle = "Вторая программа";

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

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;

}

//  FUNCTION: MyRegisterClass()

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

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_HAND); wcex.hCursor  = LoadCursor(NULL, IDC_ARROW; wcex.hbrBackground = GetSysColorBrush(COLOR_BTNFACE);   

wcex.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);

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 | WS_HSCROLL, // стиль окна

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

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

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

600,    // размер по 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)

{

PAINTSTRUCT ps;

HDC hdc;

RECT rt;

char text[5][50];

int mas[7];

mas[0] = GetSystemMetrics(SM_CXSCREEN);

mas[1] = GetSystemMetrics(SM_CYSCREEN);

mas[2] = GetSystemMetrics(SM_CYHSCROLL);

wsprintf(text[0], "Размер экрана : %d x %d", mas[0], mas[1]);

 wsprintf(text[1], "Ширина горизонтальной прокрутки окна: %d", mas[2]);

switch (message)

{

 case WM_CREATE: // Сообщение приходит при создании окна

  break;

 case WM_PAINT:  // Перерисовать окно

  hdc = BeginPaint(hWnd, &ps);

                                              GetClientRect(hWnd, &rt);

  TEXTMETRIC tm;

  GetTextMetrics(hdc,&tm);

  Rectangle(hdc, 0, 0, rt.right/2, rt.bottom/2);

  Rectangle(hdc, rt.right/2, 0, rt.right, rt.bottom/2);

  Rectangle(hdc, 0, rt.bottom/2, rt.right/2, rt.bottom);

  Rectangle(hdc, rt.right/2, rt.bottom/2, rt.right, rt.bottom);

  mas[3] = tm.tmInternalLeading;

  wsprintf(text[2], "Информация про шрифт: %d", mas[3]);

  mas[4] = rt.bottom;

  mas[5] = rt.right;

  wsprintf(text[3], "Размер окна : %d x %d", mas[4], mas[5]);

  mas[6] = GetDeviceCaps(hdc, HORZSIZE);

  wsprintf(text[4], "Размер окна : %d мм", mas[6]);

  TextOut(hdc, rt.right/20, rt.bottom/20, (LPCTSTR) text[0], strlen(text[0]));

  TextOut(hdc, rt.right/20, rt.bottom/10, (LPCTSTR) text[3], strlen(text[3]));

  TextOut(hdc, rt.right/20, rt.bottom/6.5, (LPCTSTR) text[1], strlen(text[1]));

  TextOut(hdc, rt.right/20, rt.bottom/5, (LPCTSTR) text[2], strlen(text[2]));

  TextOut(hdc, rt.right/20, rt.bottom/4, (LPCTSTR) text[4], strlen(text[4]));

  

  EndPaint(hWnd, &ps); // Закончить графический вывод

  break;

 case WM_COMMAND:

  if(LOWORD(wParam) == IDR_MENU1)

              MessageBox(NULL, "Эту программу написали два реальных мужика!:)", "Информация о создателях программы", MB_OK);

  break;

 case WM_DESTROY: // Завершение работы

   PostQuitMessage(0);

  break;

 default:

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

  }

return 0;

}

Результат:

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


 

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

83575. Поняття окупації та її дія в часі. Режим військової окупації 40.73 KB
  Стосовно населення окупованої території повинні виконуватися основні права людини а також права зафіксовані в нормах права збройних конфліктів. Забороняються з будьяких мотивів викрадення а також депортування населення окупованої території на територію держави що окупує або третьої держави. Проте для забезпечення безпеки населення або з особливо вагомих військових міркувань можлива повна або часткова евакуація певного окупованого району. Окупаційна влада не може примушувати населення окупованих територій служити у своїх збройних силах...
83576. Військовополонені. Найманці 37.85 KB
  Полонені мають свого представника що спостерігає за умовами їх життя і підтримує звязок із адміністрацією табору. Полонені забезпечуються необхідним одягом харчуванням медичним обслуговуванням. Рядові полонені можуть притягуватися до роботи з урахуванням їх фізичного стану.
83577. Правове положення учасників збройних конфліктів 37.61 KB
  Під час збройних конфліктів населення що проживає на території держави поділяється на дві групи: таке що відноситься до збройних сил і таке що не відноситься до збройних сил цивільне населення. Комбатанти це особи що входять до складу збройних сил воюючих сторін та безпосередньо ведуть бойові дії проти ворога зі зброєю в руках. Некомбатанти це особи що входять до складу збройних сил та безпосередньо не беруть участь в бойових діях Це військові кореспонденти юристи духівництво інтенданти медичний персонал.
83578. Заборонені засоби і методи ведення війни 36.97 KB
  Засоби ведення військових дій це зброя і інша військова техніка що застосовується збройними силами воюючих для знищення живої сили і матеріальних засобів противника придушення його сил і здатності до опору. Методи ведення військових дій це порядок різні способи використання засобів ведення війни у вказаних цілях. право сторін що знаходяться в конфлікті обирати методи і засоби ведення війни не є необмеженим.
83579. Особливості ведення морської війни 38.73 KB
  Театром морської війни є внутрішні морські води територіальне море і відкрите море. До морської війни застосовні загальні правила сухопутної війни зокрема правила щодо заборони на певні засоби і методи. В правилах морської війни специфічними є правила для підводних човнів морської блокади бомбардувань і ін.
83580. Правова регламентація повітряної війни 34.96 KB
  Всі правила і норми що стосуються війни в цілому відносяться і до повітряної війни. Театром повітряної війни є повітряний простір над сухопутним і морським театрами воїни тобто над сухопутною територією воюючих над територіальним і відкритим морем. Повітряний простір над нейтральними державами театром війни бути не може.
83581. Захист цивільних об’єктів та культурних цінностей в період збройного конфлікту 37.56 KB
  Згідно з Додатковим протоколом І цивільні обєкти не повинні бути обєктом нападу або репресалій. До військових об\' єктів Протокол відносить такі обєкти які через свій характер розташування призначення або використання роблять ефективний ї несок у військові дії і повне або часткове руйнування захоплення або нейтралізація яких при існуючих в даний момент обставинах надає явну військову перевагу ст. Отже обєкти що не підпадають під вищенаведене визначення повинні розглядатися як цивільні і їх знищення є забороненим методом ведення...
83582. Закінчення війни і його міжнародно-правові наслідки 36.35 KB
  Розрізняють припинення стану війни і припинення військових дій. Припинення військових дій не завжди автоматично супроводжується припиненням стану війни. Перемиря тимчасове припинення військових дій на умовах узгоджених воюючими сторонами. Подруге загальне перемиря при певних обставинах наприклад якщо сторони в конфлікті формально не заявили про наявність стану війни між ними здатне не тільки призупинити військові дії але і привести до їх припинення.
83583. Поняття та принципи міжнародного повітряного права 32.8 KB
  Міжнародне повітряне право - це система міжнародно-правових норм, які регулюють відносини між суб\'єктами міжнародного права у зв\'язку з використанням повітряного простору та визначають його правовий режим.