Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2009, 22:52   #1
Oburec
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 33
По умолчанию смена курсора у окна с известным handle

Как поменять курсор у окна с известным хендлом?
Oburec вне форума Ответить с цитированием
Старый 09.07.2009, 06:36   #2
0nni
Форумчанин
 
Аватар для 0nni
 
Регистрация: 24.07.2008
Сообщений: 279
По умолчанию

Такого понятия как курсор в дельфи в свойствах окна нет, windows переодически посылает окну сообщение WM_SETCURSOR на которое оно должно отреагировать и вызвать SetCursor() или SetSystemCursor();
Единственный надежный способ - обрабатывать очередь сообщений чужого окна и ловить WM_SETCURSOR;
Ненадежный способ - Можете просто в таймере вызывать SetCursor() или SetSystemCursor() - но будет заметно мигание.
Сказал и загрустил от бесспорности своей правоты.
0nni вне форума Ответить с цитированием
Старый 09.07.2009, 23:32   #3
Oburec
Пользователь
 
Регистрация: 20.03.2009
Сообщений: 33
По умолчанию

Цитата:
Сообщение от 0nni Посмотреть сообщение
Такого понятия как курсор в дельфи в свойствах окна нет, windows переодически посылает окну сообщение WM_SETCURSOR на которое оно должно отреагировать и вызвать SetCursor() или SetSystemCursor();
Единственный надежный способ - обрабатывать очередь сообщений чужого окна и ловить WM_SETCURSOR;
Ненадежный способ - Можете просто в таймере вызывать SetCursor() или SetSystemCursor() - но будет заметно мигание.
Не понял все равно. Если сделать как написано ниже курсор не меняется, хотя если сделать Form.cursor:=cursor то все нормально. Нужен аналог свойства cursor TWinControl-a
Код:
case msg.msg of
WM_SetCursor:
    begin
      windows.setCursor(cursor);
    end;
end;
Oburec вне форума Ответить с цитированием
Старый 10.07.2009, 06:23   #4
0nni
Форумчанин
 
Аватар для 0nni
 
Регистрация: 24.07.2008
Сообщений: 279
По умолчанию

Код:
SetSystemCursor(LoadCursor(0, IDC_CROSS), OCR_NORMAL);
А setCursor() ты должен вызывать, будучи внутри процесса чужого окна, такого как TForm.Cursor, еще раз говорю, нет -при движении мыши windows "опрашивает" окно над которым находится мышь (или которое выполнило SetCapture), а менять или не менять курсор решает программист.
Сказал и загрустил от бесспорности своей правоты.

Последний раз редактировалось 0nni; 10.07.2009 в 06:33.
0nni вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить Handle TEdit'a, зная дескриптор родительского окна Cold_Night Win Api 2 13.02.2009 16:47
Как получить handle главного окна, зная имя приложения? Altera Win Api 8 22.12.2008 18:52
Как имея handle окна узнать handle edit-a который находится в етом окне SeRhy Общие вопросы Delphi 1 20.07.2008 13:48
закрыть все дочерни окна, кроме главного окна Worms Общие вопросы Delphi 2 03.12.2007 22:18
Как сделать чтобы дочерние окна в MDI-приложениях были вне главного окна??? dimonchuk Общие вопросы Delphi 1 11.08.2007 12:13