POINT po;
po.x=100;
po.y=100;
HDC dc=::GetDC(::GetDesktopWindow());
if (CLR_INVALID=::GetPixel(dc,10,10))
MessageBox("我操 值是CLR_INVALID");
COLORREF MyColor=::GetPixel(dc,10,10);
CString StrInfo;
StrInfo.Format("当前点的颜色值为:RGB(%d,%d,%d)",GetRValue(MyColor),
GetGValue(MyColor),GetBValue(MyColor));
MessageBox(StrInfo,"信息提示",MB_OK);每一次运行点击这个按钮就输出“我操 值是CLR_INVALID” 这是为什么???????????????

解决方案 »

  1.   

    if (CLR_INVALID==::GetPixel(dc,10,10))
    MessageBox("我操 值是CLR_INVALID");
      

  2.   

    主要是messagebox输出的词把上面的==吓跑了一个,呵呵
      

  3.   

    if (CLR_INVALID=::GetPixel(dc,10,10))
    MessageBox("我操 值是CLR_INVALID");你这个MessageBox太流氓了
      

  4.   

    谢谢大家的回答!
    这个问题我解决了,
    可惜又来了非常郁闷的问题。
    请大虾们看看!这是我写的一个类 在HEAD.H中class GetColor
    {
    public:
    COLORREF getcolor(HWND h,POINT poop)
    {
    HDC hdc= ::GetDC(h);
    COLORREF mycolor= ::GetPixel(hdc,poop.x,poop.y);
    ::ReleaseDC(h,hdc);
    return mycolor;
    }
    COLORREF getcolor(HWND h,long x,long y)
    {
    HDC hdc= ::GetDC(h);
    COLORREF mycolor= ::GetPixel(hdc,x,y);
    ::ReleaseDC(h,hdc);
    return mycolor;
    }
    };
    、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
    #include "head.h"
    GetColor cc1;
    COLORREF MyColor1=cc1.getcolor(hwnd,68,187);
    GetColor cc2;
    COLORREF MyColor2=cc2.getcolor(hwnd,68,188);
    if (MyColor1 == MyColor2)
    MessageBox("一样");结果奇怪了, 结果不一样。谁能解释一下为什么??
      

  5.   

    补充一下, 68,187和68,188颜色我用VB做了一下测试。
    vb的结果是一样的。
      

  6.   

    刚刚又测试了一下,我用控制台程序结果返回的值是一样的。为什么拿到MFC下,结果老是不同。现在郁闷死而来。
    请高手们指点指点。
      

  7.   

    ::GetDesktopWindow()
    取得的是桌面窗口句柄,但是其内容包含其上覆盖的窗口,所以,相等不相等取决于你运行程序时电脑的情况。
      

  8.   

    我看了别人的代码,我想过这个问题。
    别人都用HBITMAP。可惜不会, 正在学习中,
    谁能赐教赐教。感激不尽