C++ 来自外部窗口句柄MFC的Getpixel()

C++ 来自外部窗口句柄MFC的Getpixel(),c++,mfc,getpixel,C++,Mfc,Getpixel,我有窗口句柄,我需要得到像素颜色 #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))

我有窗口句柄,我需要得到像素颜色

#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,351515)
获取值
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来检查比较?怎么做呢?

我使用不同的代码来实现它和它的工作

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

0xCCCC
是无效值。您的
tempHWND
可能也无效。请按正确的顺序操作。在调用
GetDC
之前,您不会初始化
tempHWND