如何获取对话框或者任何CWnd类控件 (比如说:Label控件)的表面的颜色???
急??? 问题点数:80、回复次数:10Top
1 楼zcpro(zcpro)回复于 2002-04-21 17:59:46 得分 10
通过控件ID获得他的窗口句柄,再通过窗口句柄获得他的DC,再通过DC得到他的背景刷子。
Top
2 楼sin_sir()回复于 2002-04-21 18:14:07 得分 0
通过窗口句柄获得他的DC 以及 通过DC得到他的背景刷子,分别是什么函数呢??回答完这个马上给分!!Top
3 楼inelm(木野狐)回复于 2002-04-21 18:14:57 得分 10
不知你指的这个控件和你的程序有没有关系?以及你希望的取色方式是什么?Top
4 楼dennisgull(裤子云)回复于 2002-04-21 18:21:23 得分 10
CEdit *p =static_cast<CEdit *>(GetDlgItem(IDC_EDIT1));
CDC *pDc= p->GetDC();
CBrush *pBrush = pDc->GetCurrentBrush();
不知道对不对,我MFC不怎么用,呵呵
Top
5 楼sin_sir()回复于 2002-04-21 18:54:19 得分 0
to dennisgull(裤子云):
不对:我是过了,这样得到的Brush 是白色的,而控件表面的颜色都是我们所见到的灰色的。
我认为 CDC *pDc= p->GetDC(); 得到的仍然是Device Context,而不是操作系统显示该控件时的DC .
请高手指点。Top
6 楼Julienjut(秋水)回复于 2002-04-21 19:01:40 得分 10
屏幕取点的方式试过没有,不过不值得推荐,太片面了。Top
7 楼dennisgull(裤子云)回复于 2002-04-21 19:39:24 得分 0
用GetBkColor()呢Top
8 楼sin_sir()回复于 2002-04-21 20:25:13 得分 0
其实:
GetSysColor(COLOR_WINDOW)
CBrush brush(GetSysColor(COLOR_WINDOW))Top
9 楼inelm(木野狐)回复于 2002-04-22 07:29:55 得分 40
关键在于获得窗口的dc是没有用的,而要用全屏的dc.其实这很简单:
RECT rect;
CORLORREF cr;
HDC hdcScreen;
hdcScreen=CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL) ;
GetWindowRect(&rect);
cr=GetPixel(hdcScreen,rect.x,rect.y);
Top
10 楼inelm(木野狐)回复于 2002-04-23 12:50:44 得分 0
sorry,有一点小错误。最后一行应该是:
cr=GetPixel(hdcScreen,rect.left+2,rect.top+2);Top




