Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замена стандартного курсора Windows 
:(
    Опции темы
Haster
Дата 22.10.2006, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.10.2006

Репутация: нет
Всего: нет



Товарищи!!! 
Подскажите, как программно изменить курсор. 
Хочется создать прогу, которая бы не имела видимого окна и 
изменяла стандартный курсор винды. 
Была идея найти хэндл десктопа, по нему получить хэндл процесса, 
а далее поменять курсор при помощи SetCursor(). Но что-то не сраслось. 
Хотелось бы обойтись средствами самой винды, т.е. API (без использования
MFC)
Заранее спасибо.

P.S. Похожие темы видел, но описывалось в них изменение курсора в приложении + с использованием
библиотеки MFC, поэтому счел правильным создать новую тему.  
PM MAIL   Вверх
ЫукпШ
Дата 22.10.2006, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 20.10.2006

Репутация: нет
Всего: нет



Цитата(Haster @ 22.10.2006,  15:38)

Хочется создать прогу, которая бы не имела видимого окна и 
изменяла стандартный курсор винды. 
Была идея найти хэндл десктопа, по нему получить хэндл процесса, 
а далее поменять курсор при помощи SetCursor(). Но что-то не сраслось. 


 Ф-ия ::SetCursor используется для изменения курсора окна в оконной процедуре
 в ответ на сообщение  WM_SETCURSOR.
Код

//..
 case WM_SETCURSOR : if (hCur)::SetCursor (hCur);break;
//..

 Значит, если найден хэндл десктопа, можно попытацца сделать
ему сабклассинг и там обработать WM_SETCURSOR.
При этом не надо передавать это сообщение оригинальному
обработчику окна.
 smile  
PM MAIL   Вверх
Haster
Дата 22.10.2006, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.10.2006

Репутация: нет
Всего: нет



Тогда возникает вопрос, как сделать сабклассинг smile))
(ну новичек я в проганьи)
PM MAIL   Вверх
ЫукпШ
Дата 22.10.2006, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 20.10.2006

Репутация: нет
Всего: нет



Цитата(Haster @ 22.10.2006,  17:47)
Тогда возникает вопрос, как сделать сабклассинг smile))


 При помощи ::SetWindowLong/::GetWindowLong/::CallWindowProc.
 Сабклассинг позволяет "подсоединиться" к оконной процедуре любого окна
 и слегка "порулить" нужным окошком.
 Классом это оформлять не обязательно.

 Но вот такой класс-сабклассинг состряпал я (приаттачено):

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  msub.zip 2,05 Kb
PM MAIL   Вверх
Haster
Дата 22.10.2006, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.10.2006

Репутация: нет
Всего: нет



ЫукпШ, спасибо!
Будем пробовать. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0876 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.