Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как изменить симвал мышки без SetCapture 
:(
    Опции темы
Гость_Юля
  Дата 20.5.2005, 19:00 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











как изменить симвал мышки на IDC_CROSS не делая SetCapture
  Вверх
srd
Дата 22.5.2005, 06:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


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

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



Где? Везде или только в пределах твоего окна? Если последнее, копай в сторону WM_SETCURSOR/SetCursor()


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
Гость_Юля
Дата 22.5.2005, 11:28 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











в пределах окна - поясните подробние
  Вверх
kometa_triatlon
Дата 22.5.2005, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А причем тут вообще SetCapture() ? Или это обязательное условие смены курсора?


--------------------
Всё очень просто: сказки обман,
Солнечный остров скрылся в туман,
Замков воздушных не носит земля,
Кто-то ошибся, ты или я.

--------------
Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым.
PM MAIL ICQ   Вверх
srd
Дата 23.5.2005, 06:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


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

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



Самый простой способ - указать нужный курсор при регистрации оконного класса. Если же курсор требуется менять динамически, то надо написать обработчик сообщения WM_SETCURSOR, и в нём с помощью функции SetCursor ставить нужный курсор. Примерно так:
Код

BOOL CMainFrame::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
    // Для данного окна и всех дочерних курсор будет изменён на крестик.
    SetCursor(::LoadCursor(NULL, IDC_CROSS));
    return TRUE;
}




--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
kometa_triatlon
Дата 23.5.2005, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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





--------------------
Всё очень просто: сказки обман,
Солнечный остров скрылся в туман,
Замков воздушных не носит земля,
Кто-то ошибся, ты или я.

--------------
Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым.
PM MAIL ICQ   Вверх
srd
Дата 24.5.2005, 05:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


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

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



kometa_triatlon
В том треде пример с SetCursor немного некорректен/неполон, т.к.:

Цитата из MSDN
Цитата

Your application can change the design of the cursor by using the SetCursor function and specifying a different cursor handle. However, when the cursor moves, the system redraws the class cursor at the new location. To prevent the class cursor from being redrawn, you must process the WM_SETCURSOR message. Each time the cursor moves and mouse input is not captured, the system sends this message to the window in which the cursor is moving.




--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
Coocky
Дата 24.5.2005, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



srd
Цитата
В том треде пример с SetCursor немного некорректен/неполон, т.к.:

Да.


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
kometa_triatlon
Дата 25.5.2005, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Гм. А что это значит на нормальном языке? smile


--------------------
Всё очень просто: сказки обман,
Солнечный остров скрылся в туман,
Замков воздушных не носит земля,
Кто-то ошибся, ты или я.

--------------
Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым.
PM MAIL ICQ   Вверх
srd
Дата 26.5.2005, 02:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


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

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



Перевод примерно такой:
Цитата
Ваше приложение может изменить изображение курсора мыши с помощью функции SetCursor и указанием другого хэндла курсора. Однако, когда курсор двигается, система рисует в новой позиции курсор оконного класса. Для того, чтобы предотвратить рисование курсора, связанного с оконным классом, вы должны обрабатывать сообщение WM_SETCURSOR. Каждый раз, когда курсор двигается и мышиный ввод не захвачен, система посылает это сообщение окну, над которым курсор и двигается.


Другими словами, без обработчика WM_SETCURSOR, после первого же движения мыши курсор будет опять изменён на тот, который был указан при регистрации оконного класса.




--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
kometa_triatlon
Дата 26.5.2005, 04:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А ведь точно smile Без захвата не обойтись...
Но ты представь, сколько сообщений будет послано при перемещении курсора на протяжении двух минут. И каждый - вызов функции.
Интересно, чем это Юле не угодила SetCapture ? ;)


--------------------
Всё очень просто: сказки обман,
Солнечный остров скрылся в туман,
Замков воздушных не носит земля,
Кто-то ошибся, ты или я.

--------------
Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым.
PM MAIL ICQ   Вверх
srd
Дата 26.5.2005, 05:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


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

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



1. Сообщений через оконную функцию и так проходит очень много, так что ничего страшного в обработке WM_SETCURSOR нет (если содержимое обработчика будет тривиально, разумеется). В конце концов, он может просто возвращать TRUE, а вызов SetCursor() воткнуть в другое место.
2. При захвате мышиные сообщения будут сыпаться в твоё окно, не зависимо от того, где сейчас находится курсор. Как тогда кликать по панелям инструментам, жать кнопки или меню?

Добавлено @ 05:39
Ну и захват очень легко потерять smile


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


 




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


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

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