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

Использование мыши

Обязательным требованием современного мира и проблемой для многих программистов является интеграция мыши как основного устройства ввода. Это особенно актуально для программистов Clipper, которые еще не перенесли свои приложения под Clipper версии 5.3. Xbase++ поддерживает исходный код Clipper, начиная с версии Summer ’87 до 5.2e и интегрирует мышь посредством вызова одной функции.

Возьмите следующий код в качестве примера и напечатайте его с помощью вашего редактора.

PROCEDURE Main
   LOCAL cVar1 := "Здравствуй"
   LOCAL cVar2 := "мир"

   SET COLOR TO N/W,W+/B  // определение цвета
   SET CURSOR ON          // включение экранного курсора

   SetMouse( .T. )        // включение мыши
   CLS
   @ 10,10 SAY "Привет" GET cVar1
   @ 12,10 SAY "Кто? " GET cVar2

   READ

   ? cVar1, cVar2
RETURN

Сохраните этот текст в файле MOUSE.PRG и создайте программу MOUSE.EXE, набрав xpp и alink в сеансе DOS. Запустите программу MOUSE.EXE. Она показывает простую маску ввода Get с двумя полями ввода. Нажмите на оба поля для ввода мышью и завершите программу, нажав клавишу Esc или Return.

Закомментируйте функцию SetMouse(.T.) при помощи звездочки (*) в начале строчки и создайте MOUSE.EXE снова. Попытайтесь опять работать с полями Get. Вот что вы обнаружите: все, что нужно для того, чтобы заставить @..SAY..GET работать с мышью – это SetMouse(.T.).

Программа работает в текстовом режиме, но это реальное 32-разрядное приложение. Вы можете запустить программу в окне терминала или же в развернутом окне. Попробуйте это! Нажмите Alt+Return во время работы программы. Таким образом, вы переключаетесь между рабочими режимами Windows.

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

Вызов функции SetMouse(.T.) достаточен в Xbase++ для изменения моего процедурного ввода Get в управляемую событиями программу Windows, работающую с мышью.

Внимание программистов Clipper: SetMouse(.T.) заставляет слушаться мышь не только команды @..SAY..GET, но также и MENU TO и такие функции, как AChoice(), DbEdit() или MemoEdit(). 

 

-