Использование мыши
Обязательным требованием современного мира и проблемой для многих программистов является интеграция мыши как основного устройства ввода. Это особенно актуально для программистов 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().
-