我做了一个基于对话框的程序,就是想做一个能得到屏幕上某个点的颜色的程序(颜色拾取器)。鼠标在对话框内时程序可以得到鼠标的位置,也就能取得颜色值。可鼠标一出对话框,就不行了,该怎么办呢?请高手指点一下!我的代码如下:
         HDC hDC = ::GetDC(NULL); 
CPoint pt;
GetCursorPos(&pt);//得到当前鼠标所在位置
COLORREF clr = ::GetPixel(hDC, pt.x, pt.y); //获取当前鼠标点像素值
m_nX=pt.x;
m_nY=pt.y;
CString ClrText;
ClrText.Format("%d",GetRValue(clr));//分解出红色值
m_strRed=ClrText;
ClrText.Format("%d",GetGValue(clr)); //分解出绿色值
m_strGreen=ClrText;
ClrText.Format("%d",GetBValue(clr)); //分解出蓝色值
m_strBlue=ClrText;//m_strRed,m_strGreen,m_strBlue分别对应对话框中的三个编辑框
UpdateData(FALSE);

::ReleaseDC(NULL, hDC); //释放屏幕DC

解决方案 »

  1. 代码应该没有问题,你到下面的地址下载代码看看
    http://www.vckbase.com/document/viewdoc/?id=403
      

  2. 你应该把上述代码放到一个Timer里面, 不要放在OnMouseMove里面
      

  3. 楼上说得对,按照 laiyiling(【CSDN●】) 介绍的教程中的方法做好,谢谢大家!
      

  4. SetCapture然后处理WM_MOUSEMOVE消息,获取x,y坐标
      

类似问题 »