Забанить смену курсора

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Забанить смену курсора

Сообщение Игорь Столяров »

Привет всем ! :)

Очередной "детский" вопрос, на который нет очевидного ответа ...

Есть MDI WINDOW с аттрибутом RESIZE.
Само изменение размера окна запрещено (просто рамка окна красивей в Win10, чем в окне с аттрибутом DOUBLE).
Но при наведении курсора на рамку окна - курсор естесно изменяет внешний вид на стрелки, показывая возможность
изменения размера окна, что в данном случае неверно.

Можно как-то заблокировать изменение внешнего вида курсора при наведении на рамку окна с аттрибутом RESIZE ?
Заранее спасибо ! :) О том, что хорошо, когда в жизни нет других проблем - я знаю. ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Забанить смену курсора

Сообщение Admin »

На что люди тратят время :)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Забанить смену курсора

Сообщение Игорь Столяров »

У меня есть заказчик (ген. директор торговой фирмы) у которого есть любимая фраза:
"Могу разговарить о чём угодно и с кем угодно, если это приводит к росту продаж". :)
Он это говорит серьёзно. Но иногда ведь хочется сделать какую-нибудь глупость просто так .... ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Ал
✯ Ветеран ✯
Сообщения: 1011
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия

Забанить смену курсора

Сообщение Ал »

..., а если поставить запрет изменения, а рамки дорисовать по вкусу заказчика ручками по краям или подложить картинку?? - размер то окна не надо менять, т.е. просто "намалевать" что ему надо, а с обработкой курсоров не заморачиваться ...
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Забанить смену курсора

Сообщение kreator »

Ал писал(а): 17 Ноябрь 2017, 14:24 ..., а если поставить запрет изменения, а рамки дорисовать по вкусу заказчика ручками по краям или подложить картинку?? - размер то окна не надо менять, т.е. просто "намалевать" что ему надо, а с обработкой курсоров не заморачиваться ...
Чтобы получилось качественно, придётся свою картинку для каждого окна делать.
We are hard at work… for you. :)
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Забанить смену курсора

Сообщение kreator »

Полубредовая идея возникла в моей голове. Есть винапишные функции, связанные с курсором LoadCursor, LoadCursorFromFile, SetSystemCursor, DestroyCursor. В одном проекте я их использую, подменяя стандартные "песочные часы". Примеры:

Код: Выделить всё

   GLO:CursorFile = '..\media\j.ani'
   GLO:CursorHandle = LoadCursorFromFile(GLO:CursorFile)
   if GLO:CursorHandle
     i# = SetSystemCursor(GLO:CursorHandle, OCR_WAIT)
  else
     stop('Ошибка загрузки курсора')
  end
  GLO:CursorFile = clip(GLO:WinDir) & '\Cursors\aero_busy.ani'
  GLO:OldCursorHandle = LoadCursorFromFile(GLO:CursorFile)
  if ~GLO:OldCursorHandle
    stop('Ошибка загрузки курсора')
  end

Код: Выделить всё

  if GLO:CursorHandle and GLO:OldCursorHandle
    i# = SetSystemCursor(GLO:OldCursorHandle, OCR_WAIT)
    i# = DestroyCursor(GLO:CursorHandle)
    i# = DestroyCursor(GLO:OldCursorHandle)
  end
  SetCursor()  
Можно при открытии своего окна подменить курсоры OCR_SIZE... на OCR_NORMAL. При выходе сделать обратную подмену. Я ещё пытался сделать обратную подмену при потере фокуса моим приложением и прямую подмену при получении фокуса, но что-то не до конца разобрался, срабатывало как-то через раз.
We are hard at work… for you. :)
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Забанить смену курсора

Сообщение Admin »

Ага и при падении программы будем получать косяки с курсорами.
Примерно как перемещение окна страдает сейчас когда Clarion отключает "Отображение содержимого окна при перетаскивании"
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Забанить смену курсора

Сообщение kreator »

Admin писал(а): 18 Ноябрь 2017, 15:22 Ага и при падении программы будем получать косяки с курсорами.
Ну это форс-мажор. Чего это программа будет падать?
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Забанить смену курсора

Сообщение Игорь Столяров »

kreator писал(а): 18 Ноябрь 2017, 15:14Можно при открытии своего окна подменить курсоры
Упс ! Так ведь есть другие окна, на которые можно переключаться или открывать из окна ...
Я пытаюсь разобраться какое событие возникает при наведении курсора на область рамки окна ...
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Забанить смену курсора

Сообщение Дед Пахом »

Ещё можно попробовать перехватывать сообщение WM_SETCURSOR.
С уважением, ДП
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Забанить смену курсора

Сообщение kreator »

Игорь Столяров писал(а): 18 Ноябрь 2017, 16:14 Упс ! Так ведь есть другие окна, на которые можно переключаться или открывать из окна ...
Есть LoseFocus и GainFocus, но идея полубредовая, естественно, впрочем как и задача :mrgreen: . Неужто рамка совсем другая в режиме resize?
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Забанить смену курсора

Сообщение Игорь Столяров »

kreator писал(а): 20 Ноябрь 2017, 10:45но идея полубредовая,
Просто блажь ... :) Захотелось "такую же точно, но с перламутровыми пуговицами". Бывает. ;)
Хотя ... Если для окна включен RESIZE и введено ограничение Restrict MIN / MAX Window Size = 0,
то по хорошему смена курсора на краях рамки окна должна убираться шаблоном.
Зачем показывать действие, которое заведомо невозможно выполнить ? ;)
Если поле ENTRY неактивно (disable), то курсор же не меняет форму на ввод данных ...
За теми кто отстал - не возвращаться. (С) Кодекс
Ал
✯ Ветеран ✯
Сообщения: 1011
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия

Забанить смену курсора

Сообщение Ал »

Игорь Столяров писал(а): 18 Ноябрь 2017, 16:14
kreator писал(а): 18 Ноябрь 2017, 15:14Можно при открытии своего окна подменить курсоры
Упс ! Так ведь есть другие окна, на которые можно переключаться или открывать из окна ...
Я пытаюсь разобраться какое событие возникает при наведении курсора на область рамки окна ...
... видимо если есть родительское окно, то туда идет ... что на мышь не кнопали..., ну и вид курсора по необходимости меняется...
Ответить