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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемма с GetPixel 
V
    Опции темы
Agentx86
Дата 23.3.2009, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Помогите написать программу которая получает цвета пикселей из другого окна и выводит это в моем окне. Я пытаюсь получить hwnd калькулятора. Получаю его нормально. А вот дальше никик. Подскажите в чем у меня проблема? 
Код

        case WM_LBUTTONDOWN:
                {
                
  HWND hwndprog=FindWindow("SciCalc",0);
  HDC dc;
  dc=GetDC(hwndprog);
  hdc = GetDC(hWnd);
  for(int i=0;i<100;i++)
  {
      for(int j=0;j<100;j++)
      {
          COLORREF color=GetPixel(dc,i,j);
          int r = GetRValue(color);
          int g = GetGValue(color);
          int b = GetBValue(color);
          SetPixel(hdc,i,j,color);

      }
  }
        ReleaseDC(hWnd,hdc);
        ReleaseDC(hwndprog,dc);


                }
                break;

И еще интерессно как можно получить цвет пикселя под мышкой не учитывая над каким окном она находится?

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


Новичок



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

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



Делаешь почти все правильно но
1) рисовать нужно в обработчике сообщения WM_PAINT
2)окно с которого ты получаешь dc должно быть видно на экране,иначе полученный dc будет черным 
прямоугольником. 
можно попробовать приблизительно вот так 
Код

switch (msg)
    {
        case WM_PAINT:
            {
                PAINTSTRUCT ps;
                HDC hdc    = BeginPaint(hWnd, &ps);
                HWND hwndprog=FindWindow(_T("SciCalc"),0);
                HDC dc;
                dc=GetDC(hwndprog);
    
                for(int i=0;i<100;i++)
                {
                    for(int j=0;j<100;j++)
                    {
                        COLORREF color=GetPixel(dc,i,j);
                        int r = GetRValue(color);
                        int g = GetGValue(color);
                        int b = GetBValue(color);
                        SetPixel(hdc,i,j,color);
                    }
                }
                ReleaseDC(hwndprog,dc);
                EndPaint(hWnd, &ps);

...........................................................................................................

при перерисовке твоего окна будет виден кусок 100х100 калькулятора ,если последний находится на экране . 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0550 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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