Автор | Сообщение |
|
| |
Не зарегистрирован
Зарегистрирован: 24.09.13
|
|
Отправлено: 24.09.13 16:10. Заголовок: кнопки Alt Ctrl Shift
подскажите новичку. Пытаюсь перевести Clipper 5.01 на xHarbour. Нужно отслеживать при ожидании ввода, нажата ли Alt и т.п. Т.е. отдельно сами по себе, без других кнопок. В зависимости от этого на экране меняются подписи для кнопок ну и прочее. В clippere делал функцию на C, использовались bioskey() или вызовы INT16. В BCC5.5 ничего подходящего не нашел. Есть решение ?
|
|
|
Ответов - 11
[только новые]
|
|
|
| |
Пост N: 3589
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.09.13 16:38. Заголовок: как вариант посмотре..
|
|
|
|
| |
Пост N: 303
Зарегистрирован: 08.07.06
|
|
Отправлено: 24.09.13 17:44. Заголовок: Работало В Clipper, ..
Работало В Clipper, продолжает работать в Harbour (про xHarbour не в курсе): * --------------- * FUNC ShiftPressed() RETURN ISBIT(KBDSTAT(),1) .OR. ISBIT(KBDSTAT(),2) * -------------- * FUNC CtrlPressed() RETURN ISBIT(KBDSTAT(),3) * ------------- * FUNC AltPressed() RETURN ISBIT(KBDSTAT(),4) * ------------- * FUNC ScrollLock() RETURN ISBIT(KBDSTAT(),5) * ---------- * FUNC NumLock() RETURN ISBIT(KBDSTAT(),6) * ----------- * FUNC CapsLock() RETURN ISBIT(KBDSTAT(),7) * ------------ *
|
|
|
|
| |
Пост N: 1
Зарегистрирован: 24.09.13
|
|
Отправлено: 24.09.13 22:49. Заголовок: спасибо ! значит у м..
спасибо ! значит у меня guide кривой. Isbit в нем есть, а kbdstat нет.
|
|
|
|
| |
Пост N: 3
Зарегистрирован: 24.09.13
|
|
Отправлено: 25.09.13 00:36. Заголовок: странно, сделал тест..
странно, сделал тестовую prg в xHarbour 1.2.0 - в цикле индицирую состояние kbdstat(). Показывается только первоначальное значение, как было при запуске программы. А на нажатия не реагирует. Что не так ? proc qwe Do while .t. @ 1,20 say KBDSTAT() Enddo quit
|
|
|
|
| Администратор
|
Пост N: 3009
Зарегистрирован: 23.05.05
|
|
Отправлено: 25.09.13 10:26. Заголовок: Этот тест в Harbour ..
Этот тест в Harbour отрабатывает нормально. Если у вас еще нет багажа программ, написанных на xHarbour. то лучше сразу брать Harbour, а не xHarbour.
|
|
|
|
| |
Пост N: 4
Зарегистрирован: 24.09.13
|
|
Отправлено: 25.09.13 13:35. Заголовок: Ура ! На HB 3.0.0 за..
Ура ! На HB 3.0.0 заработало. Теперь бы разобраться, как установить 3.2.0
|
|
|
|
| |
Пост N: 307
Зарегистрирован: 08.07.06
|
|
Отправлено: 25.09.13 14:34. Заголовок: Отсюда: https://gith..
Отсюда: https://github.com/harbour/core цитата: | Harbour unstable binaries (updated once a day from live source repository) Windows (unified): |
| можно взять скомпилированные бинарники и просто заменить полностью ими папку с Harbour 3.0.0
|
|
|
|
| |
Пост N: 5
Зарегистрирован: 24.09.13
|
|
Отправлено: 25.09.13 16:26. Заголовок: Все поставилось. Все..
Все поставилось. Все-таки по первому впечатлению Harb дружественнее, чем xHarb. Сходу подсказал, какую lib прицепить, чтобы заработали Blinkerоские функции. Пару дней точно сэкономил, иначе по незнанке стал бы переписывать функцию вызова внешних приложений. Может на вскидку подскажет кто, фукнции в harbour (заменить старые С-шные): - ген.случ.чисел, и нужно ли его инициализировать (на С rand() и srand()) - установка и запрос текущего диска, желательно с числовым параметром (0- A: и т.д.) (на С getdisk и setdisk) - установка сист.даты (на С setdate) - установка формы курсора (на С INT 0x10) - чтение байта готовности старого LPT принтера
|
|
|
|
| |
Пост N: 309
Зарегистрирован: 08.07.06
|
|
Отправлено: 25.09.13 19:30. Заголовок: Генератор случайных ..
Генератор случайных чисел - стандартный, "клипперовский" RAND(). Форма курсора - SETCURSOR() С системной датой лучше не баловаться - в случае наличия контроллера домена фокус не пройдет. Текущий диск/каталог DISKCHANGE() / DISKNAME() / SET DEFAULT TO ... По принтеру - в среде Windows уже много лет на разных машинах/принтерах, поддерживающих дос-печать, прекрасно работает простое копирование файла на LPT/PRN, страницы разделяются символом chr(12).
|
|
|
|
| |
Пост N: 6
Зарегистрирован: 24.09.13
|
|
Отправлено: 26.09.13 12:00. Заголовок: все оказалось проще,..
все оказалось проще, все эти функции и из bcc прицепились. Т.е.С-шные функции Clipper extend после небольшого шаманства прицепились. Прикол оказался в том, что имя функции в синтаксисе HB_FUNC( ИМЯ ) обязательно должно быть БОЛЬШИМИ буквами. Иначе линковщик ругается на ненайденую ссылку. Хотя вызов в клиппере идет маленькими. Полдня на этот косяк убил. А вот SETCURSOR- это не то. Он просто переключает тип курсора. А нужна настройка самого типа курсора. Иногда после вызова внешнего приложения портится вид курсора. Например, тонкое стандартное подчеркивание становится толще. И перебороть в клиппере это получалось только повторной настройкой курсора через bios-функцию, чтобы не перезапускать прогу. Вероятно, из-за смены режимов экрана. Может теперь это и не понадобится.
|
|
|
|
| |
Пост N: 310
Зарегистрирован: 08.07.06
|
|
Отправлено: 26.09.13 15:35. Заголовок: Читайте доку по SETC..
Читайте доку по SETCURSOR: http://www.itlnet.net/programming/program/reference/c53g01c/ng9dd92.html и setcurs.ch: Syntax SETCURSOR([<nCursorShape>]) --> nCurrentSetting Arguments <nCursorShape> is a number indicating the shape of the cursor. For simpler coding, the Setcurs.ch header file provides descriptive names for the various cursor shapes as shown in the table below: Cursor Shapes ------------------------------------------------------------------------ Shape Value Setcurs.ch ------------------------------------------------------------------------ None 0 SC_NONE Underline 1 SC_NORMAL Lower half block 2 SC_INSERT Full block 3 SC_SPECIAL1 Upper half block 4 SC_SPECIAL2 ------------------------------------------------------------------------ В clipper 5.2e + CT III эта функция действительно чудила. В некоторых местах я делал что-то типа SETCURSOR(1); INKEY(.1); SETCURSOR(1) В Clipper S'87 и Harbour работает норм - все навороты убрал.
|
|
|
|