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

Приложение

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


 

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

1369. Информационные системы в экономике. Информационные ресурсы 127.5 KB
  Экономическая информация. Информационные ресурсы. Структура автоматизированной информационной системы. Тенденции развития рынка информационных технологий. Информационные ресурсы - это совокупность данных, организованных для получения достоверной информации в самых разных областях знаний и практической деятельности. Отдельные документы и отдельные массивы документов в информационных системах.
1370. Экономике предприятия 120 KB
  Уставной капитал акционерного общества. Длительность технологического цикла партии деталей при последовательном виде движения. Коэффициент оборачиваемости. Производственная себестоимость
1371. Перечень тестовых вопросов для подготовки к государственному экзамену по дисциплине Базы данных и распределенные базы данных 127.5 KB
  Элементарные описания предметов, событий, действий, которые сохранены, классифицированы, но не организованы для передачи какого-либо специального содержания. Согласно какому из перечисленных SQL-предписаний будет выбрана запись со значением MARINA в поле Name таблицы Personal
1372. Анализ предприятия Слуцкие электрические сети 227.5 KB
  Описание структуры энергетического предприятия.Порядок организации рабочих мест и контроль над их выполнением. Организация мероприятий по технике безопасности. Технико-экономические показатели работы энергопредприятия. Мероприятия по охране окружающей среды на энергопредприятии.
1373. Влияние типов вируса папилломы человека на течение ювенильного респираторного папилломатоза 92 KB
  Организация статистического исследования. Заболеваемость ЮРП у детей. Карта сбора материала для детей, страдающих ЮРП. Распределение детей, страдающих ЮРП, по полу и методу лечения. . Статистические методы использованные для анализа материала.
1374. Вирішення економічних задач за допомого електронних таблиць 84.5 KB
  Обчислення в електронних таблицях. Моделювання математичних процесів. Моделювання розгалужених процесів. Моделювання циклічних процесів. Моделювання обчислень в економічних задачах табличного вигляду.
1375. Вычислительная техника 111 KB
  Возвращаем массив битов в место вызова функции. Сложение в двоичном коде уже преобразованных чисел. Перевод двоичного числа в десятичное представление. Количество битов в двоичном представлении числа.
1376. Конструктивное планирование жилого здания 174 KB
  В основе будущих жилых комплексов лежит идея открытого пространства. Здесь важнейшую роль играет солнечный свет, он создает настроение. За счет трансформации размеров здания и планировки (изменено соотношение глубины и ширины квартиры) свет максимально проникает во все точки ее пространства.
1377. Проектирование общежития 126.5 KB
  Изыскания выполнены для стадии рабочий проект с целью выяснения геологического строения и гидрогеологических условий площадки. Наружные сети по водоснабжению и канализации зданий общежитий запроектированы на основании Техусловий на водоснабжение