如何在点击后给CStatic控件加上边框,在点击到控件后,想有一个反应,给控件加上一个边框什么的,让用户知道点中了哪个控件,应该怎么实现呢?
解决方案 »
- 求bmp转换成Jpg格式的c或VC算法
- COM对象 COM接口 COM组件的区别
- VC绘图的小问题,进来看详细
- setIcon的小问题
- 怎样将文件夹图标文件(folder.ico),导入到工程中,并设置ID 为 IDI_FOLDER??
- 建立一个普通的Win32程序,依赖另一个产生lib的工程,每次运行都提示project configuration out of data,要求重编译,是什么原因呢?
- 为什么我获取不到RecordCount?
- 请问如何实现媒体格式文件的缩略播放?
- VC网络编程大侠 求救!!!
- USB GUID missing function header (old-style formal list?) 问题
- 图标显示的问题
- 在点击后给CStatic控件加上边框
void CCdfkDlg::DrawRect(CRect rect)
{
CDC* pDC=GetDC();
pDC->SelectStockObject(BLACK_PEN);
pDC->MoveTo(rect.left,rect.top);
pDC->LineTo(rect.left,rect.bottom);
pDC->LineTo(rect.right,rect.bottom);
pDC->LineTo(rect.right,rect.top);
pDC->LineTo(rect.left,rect.top);
}然后再OnPait里面用
GetDlgItem(IDC_STATIC2)->GetWindowRect(&rectL);//获取控件相对于屏幕的位置
ScreenToClient(rectL);//转化为对话框上的相对位置
rectL.left-=1;
rectL.top-=1;
rectL.right+=1;
rectL.bottom+=1;
获取控件的位置,在边缘画线。
但是如果我调用 Invalidate(TRUE)的话,在开启视频后点击,线就画不出来,没开视频还可以实现
在OnPaint函数中
void CMfcStatic::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CStatic::OnPaint()
CRect rect;
dc.MoveTo(rect.left,rect.top);
dc.LineTo(rect.left,rect.bottom);
dc.LineTo(rect.right,rect.bottom);
dc.LineTo(rect.right,rect.top);
dc.LineTo(rect.left,rect.top);
}
你那个 框 被 视频 覆盖了。static 本身要 有 框。那个 rect 不要 -1.
到可以 试试 +1
“但是有4个static,只能选中一个画边框”
派生类中 用 GetDlgCtrlID()来区分 那一个