Первая 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, иначе я получу ошибку при выполнении этой программы.
-