66567

Работа с графической средой ОС UNIX и Windows

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

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

Цель работы – изучить архитектуру системы X Window, базовых механизмов отображения графической информации и способов управления графическими окнами в UNIX, основные компоненты оконного интерфейса в Windows.

Русский

2014-08-22

44 KB

0 чел.

Санкт-Петербургский государственный политехнический университет

Факультет технической кибернетики

—————————

Кафедра информационной безопасности компьютерных систем

ОТЧЕТ

по лабораторной работе №7 

«Работа с графической средой ОС UNIX и Windows»

по курсу «Операционные системы»

Студент:

Никитин А. С.

гр. 2088/1

Преподаватель:

Степанова Т. В.

Санкт-Петербург — 2011

1. Формулировка задания

Цель работы – изучить архитектуру системы X Window, базовых механизмов отображения графической информации и способов управления графическими окнами в UNIX, основные компоненты оконного интерфейса в Windows.

2. Использованные теоретические сведения

3. Результаты работы

3.1. Выполнение примеров

  1.  X Window. Выполнить компиляцию и запуск программы из примера 2. Выполнить перемещение и изменение размеров окон клиента средствами оконного менеджера во время их пребывания на экране, убедиться в изменении содержания окон после таких операций.
    Компиляция программы была выполнена командой gcc -I/usr/include -L/usr/lib -lX11
    main.c. После запуска были созданы два окна, которые можно было перемещать и изменять их размер. Содержание окон после операций изменяется.

3.2. Выполнение индивидуального задания

  1.  WINAPI. Создать оконное приложение, имеющие в рабочей области главного окна два поля ввода текста (EDIT) и кнопку (BUTTON). По нажатию кнопки текст из одного окна ввода (например, правого или верхнего, в зависимости от расположения) копирует в другое (левое или нижнее соответственно). Если текст не введён, должно появляться окно сообщения с информацией о том, что текст не введён.
    #include <windows.h>
    #include <stdio.h>

    HWND window, bg, in, out, btnCopy;

    TCHAR textS[128];
    WORD textL;

    LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
       WNDCLASSEXA wndClass;
       MSG message;
       wndClass.cbSize = sizeof(WNDCLASSEXA);
       wndClass.style = 0;
       wndClass.lpfnWndProc = WindowProc;
       wndClass.cbClsExtra = 0;
       wndClass.cbWndExtra = 0;
       wndClass.hInstance = hInstance;
       wndClass.hIcon = LoadIconA(0, IDC_NO);
       wndClass.hCursor = LoadCursorA(0, IDC_ARROW);
       wndClass.hbrBackground = (HBRUSH) COLOR_BTNTEXT;
       wndClass.lpszMenuName = "";
       wndClass.lpszClassName = "window";
       wndClass.hIconSm = LoadIconA(0, IDC_NO);
       RegisterClassExA(&wndClass);
       window = CreateWindowExA(0, "window", "Sample window", WS_SYSMENU, 300, 300, 400, 95, NULL, NULL, hInstance, NULL);
       bg = CreateWindowExA(0, "STATIC", "", WS_CHILD, 0, 0, 400, 200, window, NULL, hInstance, NULL);
       in = CreateWindowExA(0, "EDIT", "", WS_CHILD, 5, 5, 380, 15, window, NULL, hInstance, NULL);
       out = CreateWindowExA(0, "EDIT", "", WS_CHILD, 5, 50, 380, 15, window, NULL, hInstance, NULL);
       btnCopy = CreateWindowExA(0, "BUTTON", "Copy", WS_CHILD, 5, 25, 60, 20, window, NULL, hInstance, NULL);
       ShowWindow(window, SW_SHOW);
       ShowWindow(bg, SW_SHOW);
       ShowWindow(in, SW_SHOW);
       ShowWindow(out, SW_SHOW);
       ShowWindow(btnCopy, SW_SHOW);
       while (GetMessageA(&message, NULL, 0, 0)) {
           TranslateMessage(&message);
           DispatchMessageA(&message);
       }
       return message.wParam;
    }

    LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
       switch (uMsg) {
           case WM_COMMAND:
               if (HIWORD(wParam) == BN_CLICKED) {
                   if (lParam == (long) btnCopy) {
                       textL = SendMessageA(in, EM_LINELENGTH, 0, 0);
                       if (textL == 0) {
                           MessageBoxA(window, "Input field is empty", "Error", MB_OK);
                       } else {
                           SendMessageA(in, WM_GETTEXT, 128, (LPARAM) textS);
                           textS[textL] = 0;
                           SendMessageA(out, WM_SETTEXT, 0, (LPARAM) textS);
                       }
                   }
               }
           break;
           case WM_DESTROY:
               PostQuitMessage(0);
           break;
           default:
               return DefWindowProc(hWnd, uMsg, wParam, lParam);
       }
       return 0;
    }

3.3. Ответы на контрольные вопросы

  1.  Предложите несколько способов загрузки цветного изображения из файла операционной системы X-клиента в окно на экране X-сервера средствами библиотеки Xlib.
    Можно отобразить цветное изображение поточечно, используя XDrawPoint, можно использовать пиксельные карты и отображать изображение с помощью XCopyArea, а ещё более удобным способом будет использование XCreateImage и XPutImage, или XReadBitmapFile.
  2.  Какие действия обычно выполняет функция WinMain?
    Функция
    WinMain реализует инициализацию программы и цикл обработки сообщений.
  3.  Для чего необходимо регистрировать класс окна?
    Регистрация класса окна позволяет создавать новые классы, определяющие требуемое поведение окна, если такой класс не существует в системе.
  4.  Какие характеристики класса окон можно задать при его регистрации? Какие поля структуры, описывающей класс окна, являются наиболее важными?
    Стиль класса, указатель на оконную процедуру, указатель на экземпляр программы, которая содержит процедуру, указатель на пиктограмму окна, указатель на курсор, указатель на фоновую кисть, строка с названием класса. Наиболее важными являются указатель на процедуру, указатель на экземпляр, содержащий процедуру и название класса.

4. Выводы

Современные системы предоставляют широкий набор возможностей для создания графического интерфейса. В UNIX работа с интерфейсом заключается в обмене информацией между сервером и клиентом, а в Windows – в обмене сообщениями между окнами.

Приложение

Исходные тексты программ


 

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

66306. Постембріональний розвиток. Життєвий цикл. Ріст і регенерація 80 KB
  Мета: сформувати поняття про різні типи постембріонального розвитку тварин; пояснити як відбувається регенерація у різних організмах. Ріст збільшення маси і розмірів тіла. Активне харчування та ріст личинка збільшує масу в десять тисяч разів.
66307. Генетика як наука. Методи генетичних досліджень 49.5 KB
  Генетика це наука про закономірності спадковості та мінливості організмів. Ген це ділянка молекули нуклеїнової кислоти яка визначає спадкові ознаки організмів. Спабковість це властивість живих організмів передавати свої ознаки й особливості...
66308. ABC-party (позакласний захід для учнів 2 класу) 49 KB
  And hold him in my hands. It is blue, and green, and red, It bounces higher, that my head, It does not want to stop at all What is it? It is my ball. I was in a bed and badly ill, My skipping-rope was so still. But now in the sunny weather, We’ll go in the street together.
66309. Adjective. Прикметник 667 KB
  Look at the clock. Час почати наш урок. Good morning, children! P: Good morning, teacher! T: Sit down, girls. Sit down, boys. T: How are you today? P: I am OK, thank you. Учні запитують один одного «How are you today?» T: It is very good, that you are all OK today.
66310. Эхо Афганских гор 32.5 KB
  Добрый день уважаемые гости и присутствующие в этом зале. Ведущий 2: Сегодня вы имеете возможность услышать рассказы непосредственно воинов афганской войны которые пришли на нашу встречу. Перечисляются фамилии гостей воинов интернационалистов...
66311. «Опаленні долею» вечір-реквієм до річниці виводу військ із Афганістану 37 KB
  Добрый день уважаемые гости Ведущий 2: Здравствуйте все кто пришел на эту встречу Ведущий 1: Мы благодарны всем кто не забыл что в сегодняшний день в далеком 1989 году Ограниченный Контингент Советских войск был выведен из Республики Афганистан где долгие 9 лет шли боевые действия.
66312. Функционально-семантический анализ частицы «как бы» в поэзии Ф.И. Тютчева 475 KB
  Поиск употреблений «как бы» в поэзии Тютчева и составление контекстного тезауруса. Выявление семантических свойств «как бы» в отдельных тютчевских текстах. Обнаружение общих закономерностей (моделей) в функционировании «как бы». Сопоставление «как бы» с синонимичными единицами с целью установления общего и различного в их функционировании...
66313. Цікаве акушерство 95 KB
  Навіть банальна застуда з її можливими ускладненнями у дівчинки може призвести до виникнення проблем під час майбутньої вагітності. Виникає так звана прееклампсія що інколи призводить до переривання вагітності Як цього уникнути Дуже просто. Особливу увагу слід звернути на запобігання небажаній вагітності.
66314. Let’s become closely acquainted with Foggy Albion 74.5 KB
  Hello everybody! Glad to see you! Ladies and gentlemen! Welcome to Albion, where according to Bernard Shaw the mist is considered to be good weather, the rain is considered to be the fog, and the shower is said to be the rain. The Sun there looks like the Moon, and the Moon looks like cheese.