Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

Первая Windows GUI-программа

Если вы никогда раньше не создавали программы Windows GUI, то это ваш день, так как это как раз то, что вы теперь будете делать. Возьмите пример @..SAY..GET из MOUSE.PRG и создайте программу GUI вместо текстового приложения. В Xbase++ разница между текстовым и графическим режимами – это просто-напросто опция компоновщика:

[C:\XPPFIRST]alink mouse /PM:PM

Свяжите файл MOUSE.OBJ при помощи компоновщика с опцией /PM:PM и посмотрите программу. Вы можете разочароваться: она выглядит так же, как и раньше. Единственное различие в том, что программа использует новое окно вместо окна терминала.

На самом деле, это окно особенное в Xbase++, и мы уверены, что вам довольно скоро понравится концепция, лежащая в основе: в этом окне вы можете комбинировать графику с текстом так, как считаете нужным. Для того чтобы понять, что это значит, вам требуется добавить только две строчки кода в MOUSE.PRG:

#include"Gra.ch"         // <— вставьте эту строчку

PROCEDUREMain
   LOCALcVar1 := "Здравствуй"
   LOCALcVar2 := "мир"

   SETCOLORTON/W,W+/B
   SETCURSORON       
   SetMouse( .T. )

   CLS                    // Вставьте следующую строчку
   GraBox( NIL, {72,176}, {200,256}, GRA_FILL, 30, 30 )

   @ 10,10 SAY"Здравствуй " GETcVar1
   @ 12,10 SAY"Кто ? " GETcVar2
   READ

Скомпилируйте программу снова с ключом /PM:PM. Есть небольшая вероятность, что компоновщик выдаст сообщение об ошибке:

ALINK: fatal error ALK4001: cannot open file "mouse.exe"

В этом случае вы забыли стереть файл MOUSE.EXE после прошлого задания. Программа до сих пор активна, и поэтому компоновщик не смог снова создать файл EXE.

Вызов функции GraBox() рисует черный прямоугольник с закругленными углами вокруг полей Get. Функция использует графические координаты X/Y (точки) вместо координат ряд/колонка (символы), как в команде @..SAY..GET. Графические координаты определяют точку в системе координат и всегда задаются массивом из двух элементов – значений X и Y. Точка начала координат – это нижний левый угол окна, а в системе координат для текстового режима – это верхний левый угол.

Скомпонуйте программу еще раз без опции /PM:PM и снова запустите ее. Прочитайте сообщение об ошибке в окне Alert и нажмите Return. Подобные ошибки при выполнении программ появляются тогда, когда Вы пытаетесь вывести графику в текстовом режиме.

Чему я научился?

В Xbase++ есть графические функции, и я могу их использовать. Если я могу рисовать графику в текстовых окнах, то я смогу придать совершенно новый вид своей старой программе под DOS, просто добавив несколько строк кода (однако, мне придется привыкнуть к графическим координатам). Я должен скомпоновать программу, которая использует графику, с опцией линкера /PM:PM, иначе я получу ошибку при выполнении этой программы. 

-