Поиск:

Ответ в темуСоздание новой темы Создание опроса
> выход за границы ActiveX 
V
    Опции темы
RastaDja
Дата 2.2.2011, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Хорошего времени суток!

В своем контроле обрабатываю событие OnMouseMove
Код

LRESULT CСtrl::OnMouseMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
    long x, y;
    x = LOWORD(lParam);
    y = HIWORD(lParam);    //    координаты
        RECT rClient;
        GetClientRect(&rClient);

        // Тра-та-та .........

    if(x<rClient.left) x = rClient.left;       // <- вот эти места
    if(x>rClient.right) x = rClient.right;  // <- вот эти места
    //if(x>=Zone1Sp.left && x<=Zone1Sp.right){ // это тоже не делает то что мне надо
         // Чтот-то там делаю
    //}
    
       // Тра-та-та .........
       ::RedrawWindow(m_hWnd, &rClient, NULL, TRUE);
}


когда x>rClient.right то все нормально, а вот когда x<rClient.left у меня происходит вместо х = rClient.left; вот это x = rClient.right;

Посоветуйте что не так, и может надо как-то правильнее OnMouseMove обрабатывать.

Спассибо.


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
RastaDja
Дата 2.2.2011, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



обнаружил некую непонятную мне вещицу, при выходе за приделы окна вправо (правая координата ~ 800pkc), значение х увеличивается правильно (становится 820pkc, 830pkc, ... и т.д ); но вот при сдвиге левее координаты 0 получаю сразу ~ 55535 и т.д.

я вообще то предполагал что в такой ситуации х будет принимать отрицательные значения. Как это обьяснить?


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
RastaDja
Дата 3.2.2011, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



MMM...

да, ответа не дождался ... smile

Ну да ладно.

Вот написал такую проверку
Код

if(x>0x7FFF) x=0;

вроде работает, но вот не уверен что это корректное решение. Что скажите господа?


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
xvr
Дата 3.2.2011, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(RastaDja @  2.2.2011,  17:08 Найти цитируемый пост)
я вообще то предполагал что в такой ситуации х будет принимать отрицательные значения. Как это обьяснить? 

Они и есть отрицательные. Только в оригинале они short (т.е. 16 бит), а макросы LOWORD и HIWORD извлекают их как беззнаковые.
Сделайте
Код

   signed short x, y;
и будет вам счастье  smile 

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


Опытный
**


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

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



Цитата(xvr @  3.2.2011,  15:43 Найти цитируемый пост)
Сделайте
код C++
1:
   signed short x, y;
и будет вам счастье   


как близко было счастье  smile 
Код

    signed short x, y;
//    long x, y;
    x = LOWORD(lParam);
    y = HIWORD(lParam);


спс


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема »


 




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


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

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