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 – в обмене сообщениями между окнами.

Приложение

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


 

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

67493. Урегулирование конфликтов с участием третьей стороны 396 KB
  Урегулирование конфликтов с участием третьей стороны. Рассматриваемые в лекции вопросы Третья сторона в конфликте: понятие статус предпосылки участия и виды вмешательства Формы участия и степень властных полномочий третьей стороны в урегулировании конфликта.
67494. Переговоры как способ урегулирования конфликтов 658.5 KB
  Во многих исследованиях, посвященных анализу переговорного процесса, термин «переговоры» используется для обозначения широкого круга ситуаций, в которых люди пытаются обсудить те или иные проблемы, согласовать какие-либо действия...
67495. Стили ведения переговоров 314 KB
  Стили ведения переговоров Рассматриваемые в лекции вопросы: Жесткий стиль переговоров и его характеристика. Противодействие тактике жесткого стиля Мягкий стиль ведения переговоров: сущность условия и методики применения Торговый стиль ведения переговоров: особенности и область применения.
67496. Межличностный конфликт 223.5 KB
  Типы конфликтных личностей и способы их нейтрализации Ключевые понятия лекции Деструктивные функции межличностного конфликта Ассертивность Конструктивные функции межличностного конфликта Конфликтные личности Манипуляция Межличностный конфликт Модели поведения личности в конфликте...
67497. Технология управления межгрупповыми конфликтами 580.5 KB
  Политические конфликты в посткоммунистической России: основные линии развертывания конфликтов и механизмы их урегулирования. В той мере в какой его пытаются подавить возрастает его потенциальная злокачественность и тогда взрыв предельно насильственных конфликтов является лишь вопросом времени.
67498. Нормативно-правовое регулирование организационных конфликтов 417 KB
  Специфика конфликта в организации Организационный конфликт рассматривается как специфическая форма взаимодействия между организационными единицами в основе которого лежит некое противоречие. Поскольку конфликт рассматривается как особый тип взаимодействия то мы ограничиваем сферу его возможного...
67499. Социальное партнерство как фактор регулирования социально-трудовых отношений 107 KB
  Социальное партнерство как фактор регулирования социально-трудовых отношений. Рассматриваемые в лекции вопросы Социальное партнерство как фактор регулирования социально-трудовых отношений Ключевые понятия лекции Генеральное соглашение Тарифное соглашение Специальное соглашение Двухсторонняя комиссия...
67500. Рассмотрение и разрешение индивидуальных и коллективных трудовых споров 347 KB
  Примирительные процедуры при трудовых спорах. Этапы рассмотрения коллективного трудового спора. Рассмотрение и разрешение индивидуальных трудовых споров Понятие индивидуального трудового спора Индивидуальный трудовой спор неурегулированные разногласия между работодателем...
67501. Забастовка как крайняя форма социально-трудового конфликта 332 KB
  Рассматриваемые в лекции вопросы Забастовка как крайняя форма трудового конфликта: сущность основные виды процедура организации забастовки ограничение на участие в забастовке. Гарантии и правовое положение работников в связи с проведением забастовки. На Западе понятие индустриальный конфликт...