如何获得Listctrl Item的HDC

山伟 2009-09-27 06:26:47
如何获得我选择的Item的HDC ?
我想通过这个HDC来得到这个Item区域的像素颜色。谢谢!

...全文
95 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
山伟 2009-09-29
  • 打赏
  • 举报
回复
问题已解决,虽然没用这种方法,但是思路还是相同的。
谢谢各位!
山伟 2009-09-28
  • 打赏
  • 举报
回复
[

void CListImageCtrl::OnMouseMove(UINT nFlags, CPoint point)
{
HDC hDC = ::GetDC(NULL); //1.这个是获得整个屏幕的dc
HDC hDcT = GetDC();//2.或者GetDC(GetSafeHwnd())
COLORREF clr = GetPixel(hDC, 20, 20);
COLORREF clr2 = GetPixel(hDCT, 20, 20);
}

hDC得到屏幕dc,取颜色没问题。
但是hDcT获得ListCtrl的dc取出的颜色总是4294967295,无效值。

这个dc我去错了吗?
山伟 2009-09-27
  • 打赏
  • 举报
回复
好,明天试试看……
oyster2008 2009-09-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 shanwei355 的回复:]
引用 1 楼 oyster2008 的回复:
没有直接的函数,得到ListCtrl的hDC然后使用GetItemRect函数判断Item区域的颜色吧
如果是自绘列表的话,可以在自绘函数中得到item的区域和dc


请问下Listctrl有没有每个Item的hdc?
我现在控制的这部分不是在customdraw里面,而是在窗口创建完后的一个函数中。直接
GetDC所取得是不是就是整个ListCtrl的hdc?然后Getpixel(hdc,x,y);就能得到改点的颜色?
[/Quote]
是的
山伟 2009-09-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 oyster2008 的回复:]
没有直接的函数,得到ListCtrl的hDC然后使用GetItemRect函数判断Item区域的颜色吧
如果是自绘列表的话,可以在自绘函数中得到item的区域和dc
[/Quote]

请问下Listctrl有没有每个Item的hdc?
我现在控制的这部分不是在customdraw里面,而是在窗口创建完后的一个函数中。直接
GetDC所取得是不是就是整个ListCtrl的hdc?然后Getpixel(hdc,x,y);就能得到改点的颜色?
zoulie 2009-09-27
  • 打赏
  • 举报
回复
没有直接的API
获取区域然后然后取
oyster2008 2009-09-27
  • 打赏
  • 举报
回复
没有直接的函数,得到ListCtrl的hDC然后使用GetItemRect函数判断Item区域的颜色吧
如果是自绘列表的话,可以在自绘函数中得到item的区域和dc

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧