Страница 1 из 1
Забанить смену курсора
Добавлено: 16 Ноябрь 2017, 10:40
Игорь Столяров
Привет всем !
Очередной "детский" вопрос, на который нет очевидного ответа ...
Есть MDI WINDOW с аттрибутом RESIZE.
Само изменение размера окна запрещено (просто рамка окна красивей в Win10, чем в окне с аттрибутом DOUBLE).
Но при наведении курсора на рамку окна - курсор естесно изменяет внешний вид на стрелки, показывая возможность
изменения размера окна, что в данном случае неверно.
Можно как-то заблокировать изменение внешнего вида курсора при наведении на рамку окна с аттрибутом RESIZE ?
Заранее спасибо !

О том, что хорошо, когда в жизни нет других проблем - я знаю.

Забанить смену курсора
Добавлено: 16 Ноябрь 2017, 17:57
Admin
На что люди тратят время

Забанить смену курсора
Добавлено: 16 Ноябрь 2017, 18:13
Игорь Столяров
У меня есть заказчик (ген. директор торговой фирмы) у которого есть любимая фраза:
"Могу разговарить о чём угодно и с кем угодно, если это приводит к росту продаж".

Он это говорит серьёзно. Но иногда ведь хочется сделать какую-нибудь глупость просто так ....

Забанить смену курсора
Добавлено: 17 Ноябрь 2017, 14:24
Ал
..., а если поставить запрет изменения, а рамки дорисовать по вкусу заказчика ручками по краям или подложить картинку?? - размер то окна не надо менять, т.е. просто "намалевать" что ему надо, а с обработкой курсоров не заморачиваться ...
Забанить смену курсора
Добавлено: 17 Ноябрь 2017, 14:35
kreator
Ал писал(а): 17 Ноябрь 2017, 14:24
..., а если поставить запрет изменения, а рамки дорисовать по вкусу заказчика ручками по краям или подложить картинку?? - размер то окна не надо менять, т.е. просто "намалевать" что ему надо, а с обработкой курсоров не заморачиваться ...
Чтобы получилось качественно, придётся свою картинку для каждого окна делать.
Забанить смену курсора
Добавлено: 18 Ноябрь 2017, 15:14
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. При выходе сделать обратную подмену. Я ещё пытался сделать обратную подмену при потере фокуса моим приложением и прямую подмену при получении фокуса, но что-то не до конца разобрался, срабатывало как-то через раз.
Забанить смену курсора
Добавлено: 18 Ноябрь 2017, 15:22
Admin
Ага и при падении программы будем получать косяки с курсорами.
Примерно как перемещение окна страдает сейчас когда Clarion отключает "Отображение содержимого окна при перетаскивании"
Забанить смену курсора
Добавлено: 18 Ноябрь 2017, 15:42
kreator
Admin писал(а): 18 Ноябрь 2017, 15:22
Ага и при падении программы будем получать косяки с курсорами.
Ну это форс-мажор. Чего это программа будет падать?
Забанить смену курсора
Добавлено: 18 Ноябрь 2017, 16:14
Игорь Столяров
kreator писал(а): 18 Ноябрь 2017, 15:14Можно при открытии своего окна подменить курсоры
Упс ! Так ведь есть другие окна, на которые можно переключаться или открывать из окна ...
Я пытаюсь разобраться какое событие возникает при наведении курсора на область рамки окна ...
Забанить смену курсора
Добавлено: 18 Ноябрь 2017, 16:14
Дед Пахом
Ещё можно попробовать перехватывать сообщение WM_SETCURSOR.
Забанить смену курсора
Добавлено: 20 Ноябрь 2017, 10:45
kreator
Игорь Столяров писал(а): 18 Ноябрь 2017, 16:14
Упс ! Так ведь есть другие окна, на которые можно переключаться или открывать из окна ...
Есть LoseFocus и GainFocus, но идея полубредовая, естественно, впрочем как и задача

. Неужто рамка совсем другая в режиме resize?
Забанить смену курсора
Добавлено: 20 Ноябрь 2017, 12:59
Игорь Столяров
kreator писал(а): 20 Ноябрь 2017, 10:45но идея полубредовая,
Просто блажь ...

Захотелось "такую же точно, но с перламутровыми пуговицами". Бывает.

Хотя ... Если для окна включен RESIZE и введено ограничение Restrict MIN / MAX Window Size = 0,
то по хорошему смена курсора на краях рамки окна должна убираться шаблоном.
Зачем показывать действие, которое заведомо невозможно выполнить ?

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