Getpixel() из внешнего дескриптора окна MFC

У меня есть дескриптор окна, и мне нужно получить цвет пикселя.

#include "Globals.h"
    void MainHamsterDlg::OnTimer(UINT nIDEvent)
    {
      Sleep(4000);
      HDC hDC = ::GetDC(tempHWND);
      COLORREF rgb = GetPixel(hDC,351,515);

        if(GetPixel(hDC,351,515) == RGB(33,30,28))
          AfxMessageBox(L"Please select or write correct name!");

      ::ReleaseDC(tempHWND, hDC);

       CDialog::OnTimer(nIDEvent);
    }

Отладка говорит, что COLORREF rgb = GetPixel(hDC,351,515); получает значение 3225917 нужно ли мне преобразовать в rgb, чтобы проверить для сравнения? Я не понимаю, что там не так, потому что я новичок в mfc.

#include "Globals.h"
    void WaitProcessDlg::OnTimer(UINT nIDEvent)
    {
      if(::FindWindow(NULL, str)){
       tempHWND = ::FindWindow(NULL, str);
       ::SetWindowText(tempHWND, L"Weather");
       EndDialog( 0 );
       KillTimer(IDC_PROGRESS1);
       }
      CDialog::OnTimer(nIDEvent);
    } 

Вот дескриптор окна и его ручки окна. Я проверил с изменением заголовка.

Я использую Globals для переноса дескриптора окна из одного диалогового окна в другое.

Globals.h
-------------------
#pragma once
extern HWND tempHWND;
--------------------

Итак, мой вопрос: нужно ли конвертировать в RGB для проверки сравнения? и как?


person Klasik    schedule 14.03.2013    source источник
comment
0xcccccc недопустимое значение. Вероятно, ваш tempHWND тоже недействителен.   -  person    schedule 14.03.2013
comment
Делайте вещи в правильном порядке. Вы не инициализируете tempHWND до после вызова GetDC.   -  person Mark Ransom    schedule 14.03.2013


Ответы (1)


Я использую другой код, чтобы сделать это и его работу!

HDC hDC = CreateDC(L"DISPLAY",0,0,0);
COLORREF rgb5 = GetPixel(hDC,24,507);
person Klasik    schedule 08.04.2013