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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вид (стиль) курсора мышки 
:(
    Опции темы
kma
Дата 16.3.2006, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Подскажите, каким образом в С++ можно получить (перехватить) стиль курсора мышки при движении мыши в Internet Explorer. Т.е. стоит задача определить когда форма курсора принимает вид "пальца"

smile Желательно smile
PM MAIL   Вверх
Romikgy
Дата 16.3.2006, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Следи за мышью и бери GetCursor
как увидишь что он палец , значит то что те нужно


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
kma
Дата 16.3.2006, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Romikgy @ 16.3.2006, 12:03)
Следи за мышью и бери GetCursor
как увидишь что он палец , значит то что те нужно

Это таки да, но как из него стиль выдернуть?
PM MAIL   Вверх
Romikgy
Дата 16.3.2006, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(kma @ 16.3.2006, 11:17 Найти цитируемый пост)
GetCursor

он те и вернет


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
kma
Дата 16.3.2006, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Где можно посмотреть эти стили, функция это возвращает в 16 значении
PM MAIL   Вверх
Romikgy
Дата 16.3.2006, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Эта ф-ция возвращает HCURSOR, это хендл курсора,
а смотреть можно в МСДН
если набрать LoadCursor
то в хелпе (МСДН) будет так
Код

IDC_APPSTARTING    Standard arrow and small hourglass
IDC_ARROW    Standard arrow
IDC_CROSS    Crosshair
IDC_IBEAM    Text I-beam
IDC_ICON    Windows NT only: Empty icon
IDC_NO    Slashed circle
IDC_SIZE    Windows NT only: Four-pointed arrow
IDC_SIZEALL    Same as IDC_SIZE
IDC_SIZENESW    Double-pointed arrow pointing northeast and southwest
IDC_SIZENS    Double-pointed arrow pointing north and south
IDC_SIZENWSE    Double-pointed arrow pointing northwest and southeast
IDC_SIZEWE    Double-pointed arrow pointing west and east
IDC_UPARROW    Vertical arrow
IDC_WAIT    Hourglass



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
kma
Дата 16.3.2006, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спосибо тебе smile
PM MAIL   Вверх
Romikgy
Дата 16.3.2006, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



kma, а тебе пожалуйста smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
kma
Дата 16.3.2006, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Появилась проблема, написал
Код

if(GetCursor()==IDC_HAND)

Компилятор выдает ошибку: error C2065: 'IDC_HAND' : undeclared identifier
Подскажи пожалуйста что нужно сделать, файл “ #pragma comment(lib, "user32")” подключил
PM MAIL   Вверх
Romikgy
Дата 16.3.2006, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



#include <windows.h>
or
#include <winuser.h>


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
kma
Дата 16.3.2006, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Все равно ругается smile
PM MAIL   Вверх
Romikgy
Дата 16.3.2006, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Код в студию



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
kma
Дата 16.3.2006, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

#include "stdafx.h"
#include "Max_Test.h"
#include "Max_TestDlg.h"
#include <windows.h>
#include <winuser.h>
#pragma comment(lib, "user32")
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#pragma comment(lib, "user32")


// CMax_TestApp

BEGIN_MESSAGE_MAP(CMax_TestApp, CWinApp)
    ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()


// CMax_TestApp construction

CMax_TestApp::CMax_TestApp()
{
    // TODO: add construction code here,
    // Place all significant initialization in InitInstance
}


// The one and only CMax_TestApp object

CMax_TestApp theApp;


// CMax_TestApp initialization

BOOL CMax_TestApp::InitInstance()
{
    InitCommonControls();
    CWinApp::InitInstance();
    AfxEnableControlContainer();
    SetRegistryKey(_T("Local AppWizard-Generated Applications"));
    for(;;)
    {
        if(GetCursor()==IDC_HAND)    
        {
            mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); // нажали левую кнопку мыши
            mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); 
        }
        /*int i=rand();
        int j=rand();
        if(i<700&&j<700)
        {
            HCURSOR MyCurs=GetCursor();
            Sleep(100);
            SetCursorPos(i,j);
        }*/
    }
    return FALSE;
}


PM MAIL   Вверх
Romikgy
Дата 17.3.2006, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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




if(GetCursor()==(LPSTR)((DWORD)(32649))
попробуй такое условие ,
имхо код правильный


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
kma
Дата 17.3.2006, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Romikgy @ 17.3.2006, 10:14)
if(GetCursor()==(LPSTR)((DWORD)(32649))   

GetCursor() Так эта функция возвращает “HCURSOR”
PM MAIL   Вверх
Romikgy
Дата 17.3.2006, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Код

#define MAKEINTRESOURCEA(i) (LPSTR)((DWORD)((WORD)(i))) 
#define MAKEINTRESOURCE MAKEINTRESOURCEA 
#define IDC_HAND MAKEINTRESOURCE(32649) 

Это из Winuser.h


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
kma
Дата 17.3.2006, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ругается на не соответствие типов данных
error C2446: '==' : no conversion from 'LPSTR' to 'HCURSOR'

PM MAIL   Вверх
Romikgy
Дата 17.3.2006, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



if(GetCursor()==(HCURSOR)(32649)
А так сделай


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
kma
Дата 17.3.2006, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Не работает
PM MAIL   Вверх
Romikgy
Дата 17.3.2006, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Ты хошь отлавливать курсор в своем приложении или везде?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
kma
Дата 17.3.2006, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я хочу отлавливать стиль курсора везде
PM MAIL   Вверх
Earnest
Дата 17.3.2006, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



HCURSOR - это одно, а IDC_HAND или что там еще - абсолютно другое. Нельзя их сравнивать.
Ну сами посудите: IDC_HAND - это 2-байтовый ид-р, для удобства преобразованный к LPTSTR...
Кроме того, кто сказал, что используется cтандартный IDC_HAND (даже если он похож - никто не мешает сделать свой ресурс).
Нет такого понятия "стиль курсора".
Вряд ли вообще возможно - что ты хочешь...


--------------------
...
PM   Вверх
Romikgy
Дата 17.3.2006, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(kma @ 16.3.2006, 17:32 Найти цитируемый пост)
if(GetCursor()==IDC_HAND)

надо так

Код

if(GetCursor()==LoadCursor(0,IDC_HAND))

но лучше лоадкурсор вынести из цикла


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
kma
Дата 20.3.2006, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Romikgy @ 17.3.2006, 23:56)
Код

if(GetCursor()==LoadCursor(0,IDC_HAND))


Компилятор ругается на 'IDC_HAND' пишет 'IDC_HAND' : undeclared identifier
Подскажи, почему он его не видит
PM MAIL   Вверх
Romikgy
Дата 20.3.2006, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



У тя в файле
Цитата(kma @ 16.3.2006, 17:32 Найти цитируемый пост)
#include <winuser.h>

такие строки есть?
Код

#define IDC_HAND MAKEINTRESOURCE(32649) 

Добавлено @ 11:23
Кстати мож добавить эту строку , у ся в проекте


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
kma
Дата 20.3.2006, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Пробовал и так
Код

if(GetCursor()==LoadCursor(MAKEINTRESOURCE(32649)))

Программа не срабатывает
PM MAIL   Вверх
Romikgy
Дата 20.3.2006, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(kma @ 17.3.2006, 16:00 Найти цитируемый пост)
Я хочу отлавливать стиль курсора везде

Это я проглядел, smile

Цитата(kma @ 20.3.2006, 10:34 Найти цитируемый пост)
if(GetCursor()==LoadCursor(MAKEINTRESOURCE(32649)))

Это работает только в твоем приложении,
для глобального можно попытатся перехватывать SetSystemCursor, и смотреть че он меняет, или SetCursor


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
kma
Дата 22.3.2006, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я написал
Код

SetCursor(LoadCursor(IDC_HAND));
SetSystemCursor(LoadCursor(IDC_HAND),NULL);

Ни чего не изменилось
PM MAIL   Вверх
Romikgy
Дата 22.3.2006, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Код

SetCursor(LoadCursor(0,IDC_HAND));
SetSystemCursor(LoadCursor(0,IDC_HAND),NULL);



Имхо так нужно


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
kma
Дата 23.3.2006, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Написал
Код

SetSystemCursor(LoadCursor(0,IDC_HAND),NULL);

Компилятор ругается
error C2661: 'CWinApp::LoadCursorA' : no overloaded function takes 2 arguments

Попробовал написать
Код

SetSystemCursor(::LoadCursor(0,IDC_HAND),NULL);

Ни чего не меняет

PM MAIL   Вверх
Romikgy
Дата 23.3.2006, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(kma @ 23.3.2006, 09:31 Найти цитируемый пост)
'CWinApp::LoadCursorA'

у тя компилятор понимает что LoadCursor это метод CWinApp, а эта функция виндов!!! Как ей сказать об этом.... не силен может так System::LoadCursor или так Window(s)::LoadCursor, я не в курсе smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
kma
Дата 23.3.2006, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



я тоже не знаю может
Код

SetSystemCursor(::LoadCursor(0,IDC_HAND),NULL);

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

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


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

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


 




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


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

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