Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.94
NumBot
13 / 13 / 0
Регистрация: 16.02.2012
Сообщений: 59
#1

GetPixel - C++

18.02.2012, 00:35. Просмотров 2138. Ответов 4
Метки нет (Все метки)

Всем доброго времени суток.
Столкнулся со странной проблемой. Вот код который на xp работал как часы, попробовал под win7 и он выдаёт чушь.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
HWND hwnd;
    HDC hdc ;
    hwnd = FindWindowExW(NULL, NULL, NULL, L"имяокна");
    if ( hwnd == NULL ) exit(3);
    hdc = GetDC(hwnd);
    if ( hdc == NULL ) exit(3);
    DWORD color;
    POINT p;
    Sleep(7000);
    GetCursorPos(&p);
    color = GetPixel(hdc, p.x, p.y);
    int r,g,b;
    r = GetRValue(color);
    g = GetGValue(color);
    b = GetBValue(color);
запускаю, навожу мышкой на нужное место, через 7с смотрю результат. r,g,b постоянно равны 255 или 0. Были ещё пара значений, но с нужным цветом ни разу не совпали.
Я в тупике. Есть мысли?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2012, 00:35     GetPixel
Посмотрите здесь:

[WinApi] Аналог GetPixel - C++
можете подскзать аналог GetPixel он слишком много тормозит или как можна сделать в моем случае: У меня есть лабиринт шарик бегает...

GetPixel и его странности - C++
дело такое: есть функция которая должна искать цвет в RGB на определённом пикселе (где находится курсор) выглядит она так POINT...

Есть ли в С++ функция, быстрее GetPixel? - C++
А то я тут пока гулял по интернету нашёл одного человека, который говорил: Это правда, что GetPixel не сильно быстро работает?...

GetPixel Сканирование область пикселей - C++
Здрасте :) Проблемма состоит в том что функция, то работает, то не работает... Задача функции, нужно просканировать целую область...

GetPixel, почему первый иф равен тру, а второй - нет - C++
Уважаемые знатоки, в первом GetPixel корды верхнего левого угла иконки поплавка (певая вкладка, опять таки вверху слева), а во втором...

Не работает: COLORREF c; BYTE r,g,b; c=GetPixel(i,j); r=GetRValue(c); g=... b=.... ..... c=RGB(r,g,b); SetPixel(i,j,c); - C++
у меня не получается посмотри: ...... COLORREF c; BYTE r,g,b; c=GetPixel(i,j); r=GetRValue(c); g=... b=.... ..... ...

GetPixel - Delphi
В общем, как бы вам обьясн ить мою задумку.... Вот курсор и вокруг него пятачок, который естественно состоит из пикселей. пример...

GetPixel - C++ WinAPI
#include <iostream> #include <windows.h> #include <stdlib.h> #include <tchar.h> using namespace std; int _tmain(int argc,...

GetPixel() и SetWindowText() - C++ WinAPI
Здравствуйте. Например во Flash и Javascript есть инструменты(функции) для отладки(trace(),console.log()) где можно увидеть значение...

GetPixel RGB - Delphi
Если пишу для PaintBox функцию GetPixel то оно выдаёт какое то число, а как мне сделать что бы оно брало цвет в RGB и присваивало его трём...

Bitmap и GetPixel - C++/CLI WinForms
Здравствуйте. Передо мной стала некоторая задача - проанализировать монохромную картинку, точнее, цвета. Если программа встречает...

WAPI GetPixel - Assembler
Допустим есть код: .386 .model flat, stdcall option casemap :none include \masm32\include\windows.inc include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
18.02.2012, 12:38     GetPixel #2
Цитата Сообщение от NumBot Посмотреть сообщение
HWND hwnd;
* * * * HDC hdc ;
* * * * hwnd = FindWindowExW(NULL, NULL, NULL, L"имяокна");
* * * * if ( hwnd == NULL ) exit(3);
* * * * hdc = GetDC(hwnd);
* * * * if ( hdc == NULL ) exit(3);
Думаю что GetDC не всегда вернёт графический дескриптор окна, а ведь тебе то он и нужен, попробуй вот так

C
1
2
3
4
HWND hWnd = NULL;
HDC hDC      = NULL;
if((hWnd = FindWindowA(NULL,"имяокна")))
    hDC = GetWindowDC(hWnd);
Добавлено через 7 минут
PS:Посмотри код по ссылке Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома
Единственное отличе его от того что ты хочешь реализовать в том что я искал не какое-то окно с именем "имяокна" а получал дескриптор окна консоли, в остальном абсолютно никакой разницы.
И ещё, чтобы не морочить себе голову WCHAR и функциями (W)
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
FindWindowExW
, просто выставь в свойствах проекта Multy Byte Characters Set вместо Unicode - см скрин внизу этой ссылки int->LPCTSTR && char->LPCTSTR
NumBot
13 / 13 / 0
Регистрация: 16.02.2012
Сообщений: 59
18.02.2012, 15:24  [ТС]     GetPixel #3
Всё работает. Спасибо)
GetWindowDC - возвращает десриптор неклиентской области окна(т.е. вместе с заголовком окна и др. служебной частью)
GetDC - возвращает клиентскую, всё что идёт сразу после заголовка и меню.
Ошибка была не в функциях, как оказалось. Я наводил мышкой в окне на нужное место, но не корректировал глобальные координаты в относительные от окна. Глупо)
-=ЮрА=-
18.02.2012, 15:47
  #4

Не по теме:

Цитата Сообщение от NumBot Посмотреть сообщение
Я наводил мышкой в окне на нужное место, но не корректировал глобальные координаты в относительные от окна.
- WM_MOUSEMOVE содержит параметрами координаты мыши относительно окна, зачем понадобились глобальные координаты?

NumBot
13 / 13 / 0
Регистрация: 16.02.2012
Сообщений: 59
18.02.2012, 17:20  [ТС]     GetPixel #5
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение

Не по теме:

- WM_MOUSEMOVE содержит параметрами координаты мыши относительно окна, зачем понадобились глобальные координаты?

Наводил мышкой на чужое приложение. Не свое.
Yandex
Объявления
18.02.2012, 17:20     GetPixel
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru