2013-03-14 3 views
1

У меня есть ручка окна, и мне нужно получить цвет пикселя.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, чтобы проверить его на сравнение? и как?

+3

'0xcccccc' является недопустимым. Вероятно, ваш 'tempHWND' также недействителен. –

+0

Делайте вещи в правильном порядке. Вы не инициализируете 'tempHWND' до * после * вызова' GetDC'. –

ответ

0

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

HDC hDC = CreateDC(L"DISPLAY",0,0,0); 
COLORREF rgb5 = GetPixel(hDC,24,507); 
Смежные вопросы