Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Замена стандартного курсора Windows


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

P.S. Похожие темы видел, но описывалось в них изменение курсора в приложении + с использованием
библиотеки MFC, поэтому счел правильным создать новую тему.  

Автор: ЫукпШ 22.10.2006, 16:39
Цитата(Haster @ 22.10.2006,  15:38)

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


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

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

 Значит, если найден хэндл десктопа, можно попытацца сделать
ему сабклассинг и там обработать WM_SETCURSOR.
При этом не надо передавать это сообщение оригинальному
обработчику окна.
 smile  

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

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


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

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

Автор: Haster 22.10.2006, 18:43
ЫукпШ, спасибо!
Будем пробовать. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)