2013-03-14 151 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檢查比較? 我不uderstund有什麼不對,因爲我是新的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'也是無效的。 – 2013-03-14 14:06:13

+0

按正確順序做事。在* GetDC調用之前,您不會初始化'tempHWND'。 – 2013-03-14 14:46:54

回答

0

我使用不同的代碼來完成它的工作!

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