Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Опять проблема совместимости.. GetWindowRect() + GetPixel()

318
13 сентября 2010 года
nof
193 / / 03.04.2006
Ребят, в общем у меня стоит такая задача:
прикрепляться к процессу, получать hwnd главного окна, его размер (через GetWindowRect()) и затем считывать цвет пикселя по определённой координате.
Загвоздка в том, что у всех размер окна программы (это игра) разное. Поэтому точка, цвет которой мне надо получить, имеет разную координату в зависимости от разрешения (размера) окна игры. Я решил эту проблему чисто математически:
Если у меня GetWindowRect() возвращает ширину и высоту окна 800 и 600, а нужная точка при данном разрешении имеет координату 200 и 150, тогда чтобы получить координаты этой же точки на другом разрешении (например 1024х768), мы должны заюзать такую пропорцию: X = (1024 / (800 / 200)). Также для Y. Разумеется, не без погрешности, но если быть точным, меня интересует небольшая область точек, а не какая-то конкретная.
Так вот, у меня на компьютере это работает отменно.. т.е. меняю разрешения и точка считывается именно та, которая нужна мне (из нужной области, вернее). Но на некоторых других компьютерах получаю следующее:
программа выводит ширину и высоту окна на экран (полученную через GetWindowRect()) - 1024 на 768. А считанный цвет пикселя: 255, 255, 255 (RGB)
На сколько вам известно, это белый цвет. Его ДАЖЕ БЛИЗКО с нужно точкой нет. Соответственно, то ли он считывается где-то за пределами области окна, то ли вообще не понимаю откуда берётся этот цвет..
И самое интересное, что ошибка возникает на разных компьютерах, но с идентичными разрешениями (и экрана и окна программы). Вопрос заключается в том, как мне отловить ошибку и где она может быть? Есть ли какие-то ограничения у GetPixel()?
318
13 сентября 2010 года
nof
193 / / 03.04.2006
эм, пока писал, сообразил. А если в GetPixel будут переданы дробные координаты, она корректно отработает?
14
13 сентября 2010 года
Phodopus
3.3K / / 19.06.2008
Ты представляешь себе дробный пиксел? Игра GDI?
9.0K
13 сентября 2010 года
grag63
71 / / 23.01.2006
GetPixel имеет вх. параметры как int, соотв. твои дроби преобр. к целому.
Эта функция может возвратить ошибку CLR_INVALID (0xffffffff), что скорее всего и происходит, а не белый цвет 0x00ffffff.
318
14 сентября 2010 года
nof
193 / / 03.04.2006
Цитата: Phodopus
Ты представляешь себе дробный пиксел? Игра GDI?


Эм, а как определить?)

Цитата: grag63
GetPixel имеет вх. параметры как int, соотв. твои дроби преобр. к целому.
Эта функция может возвратить ошибку CLR_INVALID (0xffffffff), что скорее всего и происходит, а не белый цвет 0x00ffffff.


По входным - согласен.. по ошибке - тоже. Тогда другой вопрос: почему эта ошибка может возникать?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог