Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменить курсор при помощи SetCursor(), Как корректно 
:(
    Опции темы
Evgeny84
Дата 27.6.2007, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Как правильно использовать SetCursor()?
MFC SDI приложение.
При использовании SetCursor(LoadCursor(NULL,IDC_WAIT)) курсор меняется на песочные часы на доли сек, а затем возвращается к стрелке. В MSDN написанно, что если курсор класса приложения не NULL, то при движении мыши курсор восстанавливается.
Цитата

If your application must set the cursor while it is in a window, make sure the class cursor for the specified window's class is set to NULL. If the class cursor is not NULL, the system restores the class cursor each time the mouse is moved. 

Тогда как обнулить курсор, если создание класса приложения скрыто за структурой SDI?
PM MAIL   Вверх
zkv
  Дата 28.6.2007, 02:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

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



Цитата(Evgeny84 @  27.6.2007,  18:13 Найти цитируемый пост)
Как правильно использовать SetCursor()?

обрабатывай WM_SETCURSOR, суть такая:
Код

BOOL CMyDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
    if( m_fIsWaitCur )//некоторое условие, при котором 
    {
        HCURSOR hCur = AfxGetApp()->LoadStandardCursor( IDC_WAIT );
        SetCursor( hCur );
        return TRUE;
    }

    return CDialog::OnSetCursor(pWnd, nHitTest, message);
}

Цитата(Evgeny84 @  27.6.2007,  18:13 Найти цитируемый пост)
Тогда как обнулить курсор

примерно так: (в общепознавательных целях, не рекомендую использовать)
Код

    ::SetClassLong(GetSafeHwnd(), GCL_HCURSOR, NULL );

таким же образом, можно нагло подсунуть свой курсор :
Код

    HCURSOR hCur = AfxGetApp()->LoadStandardCursor( IDC_WAIT );
    ::SetClassLong(GetSafeHwnd(), GCL_HCURSOR, hCur );

только возвращать обратно тоже самому придется smile
PM MAIL   Вверх
Evgeny84
Дата 28.6.2007, 05:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо!!! 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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