我从CStatic继承了一个并且有了frame的样子,我现在想在他的内侧沿着框画一个高亮的矩形框
其实就是一个选中时 让他显得突出点
我在OnEraseBkgnd 和 CtlColor 加入下面代码 都不行
COLORREF hilightcolor = RGB(255,255,0);
CRect rect ;
GetClientRect(&rect);
pDC->Draw3dRect(rect, hilightcolor, hilightcolor);
int dx = -GetSystemMetrics(SM_CXBORDER);
int dy = -GetSystemMetrics(SM_CYBORDER);
rect.InflateRect(dx,dy);
pDC->Draw3dRect(rect, hilightcolor, hilightcolor);
请高人指点
其实就是一个选中时 让他显得突出点
我在OnEraseBkgnd 和 CtlColor 加入下面代码 都不行
COLORREF hilightcolor = RGB(255,255,0);
CRect rect ;
GetClientRect(&rect);
pDC->Draw3dRect(rect, hilightcolor, hilightcolor);
int dx = -GetSystemMetrics(SM_CXBORDER);
int dy = -GetSystemMetrics(SM_CYBORDER);
rect.InflateRect(dx,dy);
pDC->Draw3dRect(rect, hilightcolor, hilightcolor);
请高人指点
HBRUSH CVideoShow::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CStatic::OnCtlColor(pDC, pWnd, nCtlColor);
COLORREF hilightcolor = RGB(255,255,0);
CRect rect ;
GetClientRect(&rect);
pDC->Draw3dRect(rect, hilightcolor, hilightcolor);
int dx = -GetSystemMetrics(SM_CXBORDER);
int dy = -GetSystemMetrics(SM_CYBORDER);
rect.InflateRect(dx,dy);
pDC->Draw3dRect(rect, hilightcolor, hilightcolor);
return hbr;
}
还是不行
在向导中有前面有=号的消息
这个消息已经试过了 不行 。有谁坐过这种效果的
m_Colour = RGB(255,255,0); //初始化一个颜色值
CDC* dc = GetDC();
CRect rect;
GetClientRect(rect);//获取客户区的大小
rect.InflateRect(1,1,1,1);//将客户区域增大一个像素
CBrush brush (m_Colour);//创建画刷
dc->FrameRect(rect,&brush);//绘制边框
void CStaticEx::OnPaint()
{
CPaintDC dc(this);
CRect rt;
CBrush brush(RGB(255, 0, 0));
GetWindowRect(&rt);
ScreenToClient(&rt);
dc.FrameRect(&rt,&brush);
}
选的颜色不对,试试用::GetSysColor(COLOR_BTNHILIGHT),::GetSysColor(COLOR_BTNSHADOW)
因为想画出突出效果,即让受光面与其背面有颜色差,其实是选色的问题,这个颜色微软已经给选好了