Программирование >>  Программирование на языке c++ 

1 ... 117 118 119 [ 120 ] 121 122 123 ... 159


вызвана в интерфейсном объекте родителе, она вызывает соответствующие функции CanClose всех детей. После этого CanClose родителя возвращает значение FALSE, если хотя бы один ребенок вернул значение FALSE.

9.1.6. Структура файла описания .DEF

Прикладные программы, выполняемые под управлением системы WINDOWS, требуют специальный файл описания, который имеет расширение (тип) .DEF. Он определяет некоторую дополнительную информацию о прикладной программе, которая используется компоновщиком при построении выполняемого файла. Рассмотрим пример такого файла:

NAME win prog

DESCRIPTION the first WINDOWS program designed by...

EXETYPE WINDOWS

STUB WiNSTUB.EXE

CODE PRELOAD MOVEABLE DISCARDABLE

DATA PRELOAD MOVEABLE MULTIPLE

HEAPSIZE 1024

STACKSIZE 8192

NAME - имя выполняемого файла программы (.ЕХЕ);

DESCRIPTION - содержит любой текст, который будет помещен в выполняемый файл;

EXETYPE - указывает, что эта прикладная программа работает под управлением системы WINDOWS;

STUB - содержит имя программы, которая будет выполнена при попытке запуска нашей программы в среде MS-DOS. Стандартная программа WINSTUB.EXE выводит сообщение: This program requires Microsoft Windows ( Эта программа требует Microsoft Windows ) и завершает нашу программу;

CODE - эта команда задает некоторые атрибуты (опции) для кода (программы). В нашем примере бьши использованы следующие опции:

PRELOAD - означает, что WINDOWS немедленно загружает код (или другой сегмент) в память;



MOVEABLE - дает разрешение WINDOWS при необходимости перемещать код (или другой сегмент) в памяти;

DISCARDABLE - дает разрешение WINDOWS при необходимости удалить код (или другой сегмент) из памяти и позже загрузить его из выполняемого файла;

DATA - эта команда задает некоторые атрибуты (опции) для данных. Дополнительная опция MULTIPLE означает, что каждая копия программы получает свой отдельный сегмент данных;

HEAPSIZE определяет объем дополнительной локальной памяти в сегменте данных программы, которая будет использована в будущем как свободная память (в программе на языке С++ она может быть выделена с помощью оператора new и освобождена с помощью оператора delete);

STACKSIZE определяет размер стека для программы. Здесь рекомендуется задавать зна<ение, не меньше, чем 8192.

Рассмотренный выше файл описания может быть использован для большинства программ без изменений. При работе в системе Borland С++ обычно необходимо создавать файл проекта с расширением .ШЕ. Этот файл содержит ссылки на другие файлы, которыми обычно являются:

исходный код программы на языке С++ (.СРР файл);

файл описания (.DEF файл);

-♦ файл описания ресурсов (.RC файл), который будет кратко рассмотрен позже.

9.2. Генерация и обработка сообщений

При работе с библиотекой ObjectWindows можно использовать специальные таблицы. Они имеют структуру инструкции switch - case и называются таблицами отклика (response tables). Основные правила использования таблицы отклика рассмотрим на простом примере (добавим в пример из § 9.1.4 эту таблицу).

#inciude <owl\button.h>



#include <owl\applicat.h>

#include <owi\framewin.h>

#define BUTTONJD 101

class DrawButton : public TWindow

public:

DrawButton(TWindow* parent = 0);

void HandleButtonMessageO; объявление

функции отклика DECLARE RESPONSE TABLE(DrawButton); объяв-

ление таблицы отклика

DEFINE RESP0NSE TABLE1(DrawButton,TWindow) опи-

сание таблицы отклика EV COMMAND(BUTTON ID,HandleButtonMessage), END RESPONSE TABLE; DrawButton :: DrawButton{TWindow* parent) {

lnit{parent,0,0);

new TButton {this,BUTTON ID, my button , 100,50,80,30);

ниже приведено описание функции отклика void DrawButton :: HandleButtonMessageO { MessageBox( was pressed , Button ); } class my app : public TApplication

public:

my app() : TApplicationO {} virtual void InitMainWindowO;

void my app :: InitMainWindowO

{ SetMainWindow(new TFrameWindow(0, New ,new

DrawButton)); }

int OwlMain(int, char**)

{ return my app().Run(); }



1 ... 117 118 119 [ 120 ] 121 122 123 ... 159

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика