Шаг 134 - Смена курсора

----Исходное сообщение-----
От: Yegor A. Blackheel 
Кому: kaev@yandex.ru 
Дата: 7 марта 2000 г. 13:31
Тема: MFCByStep 

Привет, Артем! Классный сайт!
Альтернативный способ смены курсора вида:
1. В любом нужном месте вида вставляем строки
/*наши курсоры*/
HCURSOR  newcursor, oldcursor;  
.................................
/* */
newcursor = AfxGetApp()->LoadCursor(IDC_ВАШКУРСОР);
/* если  надо - сохраняем старый */
oldcursor = ::GetCursor();
/*функция SetClassLong - принадледит глобальному 
пространству имен - используем :: */
/*GCL_HCURSOR означает, что мы меняем именно 
курсор, принадлежащий окну вида */
::SetClassLong(this->m_hWnd,GCL_HCURSOR,(long)newcursor);
2. Все!
Конечно, чем именно пользоваться, дело вкуса :) Но мне кажется,
что использование SetClassLong достаточно интересная тема для нового ШАГА. :)
С уважением, Yegor A. Blackheel
Ну что, давайте попробуем и этот вариант. Делаем приложение на базе диалогового окна. На это окно помещаем кнопку и код к ней. В ресурсы добавляем наш курсор.

134.gif (3767 b)

Нарисуйте что-нибудь на курсоре, например, фигу :-))) Давайте напишем код и посмотрим результат работы.

void CTestCursDlg::OnButton1() 
{
	HCURSOR cr;
	HCURSOR old;
	cr= AfxGetApp()->LoadCursor(IDC_CURSOR1);
	old = ::SetCursor(cr); 
	::SetClassLong(this->m_hWnd,GCL_HCURSOR,(long)cr);
}

Итак, создаем указатели на курсоры. Один на новый, второй на старый. Из ресурсов зачитываем курсор (LoadCursor). Дальше получаем указатель на старый курсор и устанавливаем новый (SetCursor). А вот теперь эта функция SetClassLong, которая помогает нам установить курсор. Результаты тестирования меня немного удивили :-))). Курсор устанавливается при перемещении над кнопкой в обычный вид, уберешь с кнопки - нормальный, который установили.


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.