МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Программирование на Borland С++

    Программирование на Borland С++

    Казанский Государственный Университет имени А.Н. Туполева

    Кафедра автоматизированных систем обработки информации и управления

    Медведев В.И.

    ПРОГРАММИРОВАНИЕ ДЛЯ WINDOWS НА BORLAND C++

    Часть 1

    СОДЕРЖАНИЕ

    1.

    Введение..................................................................

    .................................................. 3

    2. Создание простейшего

    приложения................................................................

    .......... 7

    3. Использование класса TFrameWindow для создания главного

    окна..................... 9

    4. Программирование с таблицами

    отклика.................................................................

    11

    5. Вывод графики в

    Windows...................................................................

    ...................... 14

    6. Обновление содержимого

    окна......................................................................

    ............ 16

    7. Создание

    меню......................................................................

    .................................... 18

    8. Управляющие

    компонентыWindows.........................................................

    ................. 24

    9. Ввод и редактирование

    текста....................................................................

    ............... 29

    Приложение. Классы

    OWL.......................................................................

    ..................... 32

    1. Введение

    Цель данного пособия - облегчить усвоение программирования для Windows

    на BORLAND C++ и способствовать распространению библиотеки OWL (Object

    Windows Library), которая хорошо продумана и использование которой явно

    вырисовывает достоинства объектно-ориентированного программирования -

    инкапсуляции, наследования и полиморфизма.

    Пособие привязано к лекционному курсу “Технология программирования”,

    требуя знаний изложенных на лекциях основ объектно-ориентированного

    программирования на C++ и предназначено как руководство к лабораторным

    работам по этому лекционному курсу.

    Пособие ориентировано на пошаговую разработку за компьютером несложных

    Windows-приложений, в процессе которой осуществляется их исследование путем

    сравнения различных вариантов реализации, изменения параметров членов-

    функций и значений членов-данных используемых классов.

    В создаваемых Windows-приложениях используется очень незначительная, но

    базовая часть OWL библиотеки, активное усвоение которой способствует снятию

    барьера, и, как надеются авторы, вызовет удовольствие от первого знакомства

    с завоевавшей мир Windows.

    1.1. Ввод, редактирование и запуск Windows-приложения

    [pic]

    Чтобы ввести исходный текст программы, откомпилировать и увидеть на

    экране окно Windows-приложения, необходимо выполнить следующие действия:

    1) Сделайте двойной щелчок левой клавиши мыши (или нажатие ENTER) на

    пиктограмме Borland C++. Появится окно компилятора BC4.

    2) Щелчок левой клавиши мыши на элементе меню Project (или переход в

    строку меню путем нажатия F10, поиск и высвечивание элемента Project с

    помощью клавиш ( и (. Раскрыть Project с помощью клавиши ENTER).

    3) Щелчок мышью на команде New project (или выбрать данный пункт меню с

    помощью клавиш ( и ( и нажать ENTER). В дальнейшем для краткости будем

    говорить, что нужно выполнить команду Project|New project (команду New

    project из меню Project).

    [pic]

    Таким образом, будет выполнена команда создания нового проекта и на

    экране появится следующий диалог.

    [pic]

    4) Щелчок мышью на кнопке Browse [pic] для просмотра каталога.

    5) Воспользовавшись линейкой прокрутки, найти имя требуемого каталога и

    сделать на нем двойной щелчок левой клавиши мыши.

    [pic]

    6) В поле File Name ввести имя проекта с расширением .ide, затем нажать

    ENTER.

    7) Нажмите кнопку Advanced [pic] и снимите флажки rc и def в появившемся

    диалоге Advanced Options, затем нажмите OK.

    [pic]

    8) В диалоге создания проекта нажмите кнопку OK.

    9) Сделайте двойной щелчок левой кнопкой мыши на имени файла с

    расширением cpp в окне созданного проекта, в результате чего откроется окно

    для редактирования текста программы.

    [pic]

    10) Введите исходный текст программы.

    11) Для компиляции и выполнения нажмите Ctrl-F9.

    12) Если получены сообщения об ошибках, то исправьте их и

    проведите компиляцию заново. Если ошибки отсутствуют, то на экране

    появится окно Вашего Windows-приложения. Осуществите диалог с

    приложением, используя мышь.

    1.2. Основные приемы редактирования текста в интегрированной среде

    BORLAND C++

    1.2.1. Копирование и удаление части текста в окне редактирования

    Для копирования текста из одной его части в другую выполняются следующие

    действия:

    1) Выделить копируемый текст:

    а) Подвести курсор к началу копируемого текста.

    б) Нажать и удерживать клавишу Shift.

    в) Используя клавиши управления курсором, выделить текст.

    г) Отпустить Shift.

    2) Занести выделенный текст в буфер обмена (Clipboard) путем

    одновременного нажатия Ctrl и Ins или выполнения команды Edit|Copy.

    3) Перевести курсор к месту вставки текста.

    4) Перенести текст из буфера в редактор путем одновременного нажатия

    Shift и Ins или выполнения Edit|Paste.

    1.2.2. Копирование содержимого ранее созданного cpp-файла в окно

    редактирования

    Для копирования выполните следующие действия:

    1) Выполните команду File|Open.

    2) В появившемся диалоговом окне выберите требуемый файл и нажмите OK.

    Откроется окно с содержимым указанного файла.

    3) С помощью вышеописанных действий выделите требуемый фрагмент текста

    или выполните Edit|Select All для выделения всего текста в окне

    редактирования.

    4) Выполните Edit|Copy или нажмите Ctrl-Ins для копирования выделенного

    текста в буфер обмена.

    5) Если открытый файл больше не нужен, закройте окно. Это делается

    двойным щелчком левой кнопки мыши на кнопке системного меню окна. Можно

    сделать один щелчок мыши и в появившемся меню выбрать Close.

    6) Выполните Edit|Paste или нажмите Shift-Ins для вставки текста из

    буфера в окно редактирования.

    2. Создание простейшего приложения

    Для усвоения работы с компилятором BORLAND C++ создадим несколько

    вариантов простейшего Windows-приложения, которое создает окно с

    заголовком. Заголовок окна содержит надпись “Hello, Windows !” или “Hello,

    Hello !”. Окно также содержит кнопки минимизации и максимизации, а также

    системное меню приложения.

    [pic]

    2.1. Создание объекта приложения внутри функции OwlMain

    При написании программы будем работать с классом TApplication и функцией

    OwlMain. В данном варианте программы объект класса TApplication создается

    внутри функции OwlMain.

    2.1.1. Исходный текст приложения

    #include

    int OwlMain(int, char* [])

    {

    TApplication app("Hello, Windows !");

    return app.Run();

    }

    2.1.2. Пояснения к программе

    Заголовочный файл owl\applicat.h содержит описание класса TApplication

    (см. Раздел 10.2.).

    app - объект класса TApplication. При создании этого объекта

    используется неявный вызов конструктора, устанавливающего текст заголовка

    прикладного окна “Hello, Windows !”.

    app.Run() - вызов члена-функции класса TApplication для объекта app.

    Функция TApplication::Run() запускает приложение.

    2.1.3. Задание

    1) Создать и выполнить приложение, убедившись в правильности

    функционирования кнопок максимизации и минимизации окна.

    2) Передвинуть окно в другое место экрана.

    3) Плавно изменить высоту и ширину окна с помощью мыши.

    4) Закрыть приложение.

    5) Изменить исходный текст приложения, заменив заголовок окна на “Hello,

    Hello !”. Убедиться в появлении окна с новым заголовком.

    2.1.4. Немного английского

    an application - приложение

    to run - выполняться

    a window - окно

    Windows - название системы Windows

    OWL - Object Windows Library - библиотека классов Windows

    to include - включать

    main - основной, главный

    to return - возвращать, возвращаться

    2.2. Динамическое создание объекта класса TApplication

    В этом варианте приложения объект класса TApplication динамически

    создается в свободной области памяти.

    2.2.1. Исходный текст приложения

    #include

    int OwlMain(int, char* [])

    {

    TApplication *app;

    app=new TApplication(" Hello Windows !");

    return app->Run();

    }

    2.2.2. Пояснения к программе

    app - указатель на объект типа TApplication.

    Оператор new выделяет участок в свободной области памяти под объект

    класса TApplication. При этом неявный вызов конструктора инициализирует

    объект приложения и устанавливает текст заголовка в “Hello, Windows !”.

    2.2.3. Задание

    Создать и выполнить приложение.

    2.3. Кратчайший вариант Windows-приложения

    2.3.1. Исходный текст приложения

    #include

    int OwlMain(int, char* [])

    {

    return TApplication(" Hello Windows !").Run();

    }

    2.3.2. Задание

    Создать приложение и убедиться в его работоспособности.

    3. Использование класса TFrameWindow для создания главного окна

    Класс TFrameWindow является производным от TWindow и обеспечивает

    функционирование главного окна приложения.

    3.1. Создание объекта главного окна

    В нижеследующем приложении член-функция InitMainWindow класса

    TApplication с помощью оператора new и конструктора TFrameWindow создает

    объект - главное окно приложения. Адрес объекта помещается в переменную

    MainWindow объекта приложения.

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

    #include

    #include

    class TMyApp: public TApplication

    {

    public:

    TMyApp():TApplication("Hello Windows !"){};

    void InitMainWindow()

    {

    MainWindow=new TFrameWindow(0,"Hello, hello!!");

    }

    };

    int OwlMain(int, char* [])

    {

    return TMyApp().Run();

    }

    3.1.2. Пояснения к программе

    Включаемый заголовочный файл owl\framewin.h содержит описание класса

    TFrameWindow (см. раздел 10.3.).

    Поскольку в данном варианте приложения мы хотим создать свое собственное

    главное окно в обход стандартных методов класса TApplication, мы должны

    переопределить виртуальную функцию InitMainWindow класса TApplication. Для

    этого мы выводим новый, уже наш, класс TMyApp, как производный от класса

    TApplication и описываем в нем виртуальную функцию InitMainWindow.

    Тело конструктора TMyApp пустое, т.е. {}. Работа этого конструктора

    сводится только к вызову конструктора базового класса TApplication,

    содержащего единственный параметр - текст заголовка главного окна

    приложения (см. раздел 10.2.2).

    Тело функции InitMainWindow класса TMyApp содержит оператор new, который

    совместно с конструктором TFrameWindow создает экземпляр объекта-окна с

    новым заголовком “Hello, Hello !”. Адрес объекта присваивается переменной

    MainWindow (см. раздел 10.2.1.), унаследованной от TApplication.

    3.1.3. Задание

    1) Создать и выполнить приложение. Обратите внимание! Вместо заголовка

    “Hello, Windows !”, заданного конструктором TMyApp, окно имеет заголовок

    “Hello, Hello !”. Это результат работы переопределенной виртуальной функции

    TMyApp::InitMainWindow, которая была вызвана после конструктора и изменила

    текст заголовка на “Hello, Hello !”.

    2) Измените тексты заголовков, используемые конструкторами TMyApp и

    TFrameWindow.

    3) Измените статус доступа к членам класса TMyApp на protected или

    private. Убедитесь, что появятся сообщения об ошибках компиляции, так как в

    функции OwlMain производится обращение к теперь уже недоступному

    конструктору TMyApp.

    4) Опишите конструктор TMyApp вне класса, не забыв добавить при его

    описании оператор привязки к классу TMyApp. Убедитесь в работоспособности

    приложения.

    5) Опишите член-функцию InitMainWindow вне класса. Проверьте

    работоспособность приложения.

    3.2. Изменение положения главного окна на экране

    Класс TFrameWindow наследует из класса TWindow (см. раздел 10.4.) член-

    данное Attr( см. раздел 10.4.1.). Attr - это структура, содержащая

    различные атрибуты окна, такие как стиль окна, позиция на экране, размер и

    т.д.

    3.2.1. Варианты функции InitMainWindow, использующие Attr

    Вариант A:

    void InitMainWindow()

    {

    MainWindow=new TFrameWindow(0," Hello, hello!!");

    MainWindow->Attr.X=5;

    MainWindow->Attr.Y=15;

    MainWindow->Attr.W=200;

    MainWindow->Attr.H=100;

    }

    Вариант B:

    void InitMainWindow()

    {

    MainWindow=new TFrameWindow(0," Hello, hello!!");

    MainWindow->Attr.X=GetSystemMetrics(SM_CXSCREEN)/8;

    MainWindow->Attr.Y=GetSystemMetrics(SM_CYSCREEN)/8;

    MainWindow->Attr.W=MainWindow->Attr.X*6;

    MainWindow->Attr.H=MainWindow->Attr.Y*6;

    }

    3.2.2. Пояснение к вариантам использования функции InitMainWindow

    Указатель MainWindow указывает на главное окно приложения, созданное

    оператором new и конструктором TFrameWindow. Указатель используется для

    ссылки на элементы структуры Attr главного окна приложения.

    X,Y задают положение левого верхнего угла окна на экране.

    W и H задают ширину и высоту окна в пикселах.

    Функция GetSystemMetrics возвращает значения различных характеристик

    системы, таких как высота (SM_CYSCREEN) и ширина (SM_CXSCREEN) экрана.

    3.2.3. Задание

    1) Создать приложение с вариантом A функции InitMainWindow. Проверьте

    работоспособность приложения.

    2) Создать приложение с вариантом A написания функции инициализации, но

    с другими значениями элементов X,Y,W,H структуры Attr.

    3) Создать приложение с вариантом B написания функции InitMainWindow.

    Убедиться, что окно размещается в центре экрана.

    3.3. Немного английского

    Attr - Attribute - атрибут, свойство признак.

    GetSystemMetrics - to Get System Metrics - получить системные

    характеристики.

    a screen - экран

    a frame - рамка

    a frame window - обрамляющее окно

    InitMainWindow - Initialization of Main Window - инициализация главного

    окна.

    to create - создавать

    to show - показать

    4. Программирование с таблицами отклика

    Одним из ключевых моментов работы Windows-приложения является тот факт,

    что работа программы управляется событиями. Примером событий в Windows

    является выбор пункта меню или нажатие на кнопку в окне программы.

    Система сохраняет информацию о произошедшем событии в системной очереди

    сообщений, а затем передает сообщение о нем работающей программе. При

    написании Windows-приложения необходимо обеспечить обработку сообщений,

    поступающих в программу. Если же этого не сделать, то любые действия

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

    работать с меню и т.д. Пусть, например, в окне программы была нажата левая

    кнопка мыши. В этом случае программа получит сообщение WM_LBUTTONDOWN. Все

    сообщения Windows, передаваемые программе, представляют собой целочисленные

    константы с именами, начинающимися с WM_ (Windows Message, т.е. сообщение

    Windows).

    В программах, написанных с применением OWL, механизм получения

    информации о произошедших в системе событиях скрыт от программиста и

    обеспечивается функциями класса TApplication. Программисту требуется только

    описать свои функции, которые будут автоматически вызываться в ответ на

    пришедшее в программу сообщение.

    Для того, чтобы создать класс, функции которого будут откликаться на

    пришедшие из системы сообщения, необходимо:

    1) Определить таблицу отклика для класса. Для этого в определение класса

    вставляется строка

    DECLARE_RESPONSE_TABLE();

    заменяется на имя того класса, для которого определяется

    таблица отклика. DECLARE_RESPONSE_TABLE - это макрос OWL, который вводит в

    Ваш класс некоторые дополнительные элементы, позволяющие системе

    автоматически вызывать функции-члены класса в ответ на пришедшее сообщение.

    Таблица отклика содержит имена сообщений Windows и адреса функций,

    вызываемых при получении соответствующих сообщений.

    2) После объявления класса в текст программы вставляется другой макрос

    DEFINE_RESPONSE_TABLEn([,класс][,класс]...);

    - все то же имя класса, для которого Вы строите таблицу

    отклика. Через запятую Вы должны перечислить имена базовых классов, от

    которых производится наследование. Число n следует заменить на число

    базовых классов, которые тоже содержат таблицы отклика.

    Сразу же за текстом макроса необходимо поместить элементы таблицы

    реакции, разделенные запятыми. Так, если Вы хотите обрабатывать сообщения о

    нажатиях правой и левой клавиш мыши в окне Вашего приложения, то в таблицу

    помещаются следующие элементы:

    EV_WM_LBUTTONDOWN,

    EV_WM_RBUTTONDOWN,

    которые говорят OWL о том, что Вы хотите обрабатывать сообщения о

    нажатиях левой и правой клавиш соответственно. Скажем EV_WM_LBUTTONDOWN

    расшифровывается, как Event (событие), Windows Message: Left Button Down.

    Страницы: 1, 2, 3


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.