哪位大可能提供一个扩展的CStatic控件?
该控件有如下功能:
控件上的字体要加粗加黑
字体的大小要随着控件的缩放跟着缩放
问题点数:0、回复次数:3Top
1 楼lixiaosan(小三)回复于 2004-09-02 11:45:54 得分 0
自己重载一个
在OnPaint里面画就是了Top
2 楼ddszhan(高等数学)回复于 2004-09-04 09:18:59 得分 0
其中的部分代码对你游泳!
void CPicTxtStatic::OnPaint()
{
CPaintDC dc(this);
CRect rect;
GetWindowRect(&rect);
ScreenToClient(&rect);
//绘制边框
if (m_nBorderWidth>0)
{
dc.Draw3dRect(rect,GetSysColor(COLOR_3DHILIGHT),GetSysColor(COLOR_3DDKSHADOW));
rect.DeflateRect(m_nBorderWidth,m_nBorderWidth,m_nBorderWidth,m_nBorderWidth);
dc.Draw3dRect(rect,GetSysColor(COLOR_3DDKSHADOW),GetSysColor(COLOR_3DHILIGHT));
rect.DeflateRect(1,1,1,1);
}
if (m_nJPG)
{
// 绘制JPG图片
DrawJPEGImage(&dc, m_nJPG, rect);
}
else if (m_nBitmapID!=0)
{
// 绘制位图
CBitmap btMap;
btMap.LoadBitmap(m_nBitmapID);
//取得关联的位图句柄
HBITMAP hBitmap=(HBITMAP)btMap.GetSafeHandle();
if(hBitmap!=NULL)
{
//在背景中画关联位图
BITMAP bm;
::GetObject(hBitmap,sizeof(BITMAP),&bm);
CDC memDC;
memDC.CreateCompatibleDC(&dc);
HBITMAP hOldBitmap=(HBITMAP)memDC.SelectObject(hBitmap);
dc.StretchBlt(rect.left, rect.top, rect.Width(), rect.Height(), &memDC, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);
memDC.SelectObject(hOldBitmap);
memDC.DeleteDC();
}
}
else if (m_clrBK)
{
// 以背景色填充
dc.FillSolidRect(rect,m_clrBK);
}
if(!m_strCaption.IsEmpty())
{
//输出文本,注意对齐方式
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(m_clrText);
CFont cftTmp;
CFont *pOldFont=NULL;
CRect rcClient;
GetClientRect(&rcClient);
//文本区绘制文本
if (m_bAutoFont)
{
if (m_cftFont.m_hObject==NULL)
{
LOGFONT logFont;
//设置合适大小的字体
::ZeroMemory(&logFont,sizeof(logFont));
logFont.lfHeight=MulDiv(rcClient.Height(), 13, 24);//
logFont.lfWidth=0;
logFont.lfWeight=FW_NORMAL; ///***<-修改此处,加粗字体
logFont.lfQuality=ANTIALIASED_QUALITY;
logFont.lfCharSet=GB2312_CHARSET;
::lstrcpy(logFont.lfFaceName, _T("Times New Roman"));
m_cftFont.CreateFontIndirect(&logFont);
}
pOldFont=dc.SelectObject(&m_cftFont);
}
// 文字的输出
dc.DrawText(m_strCaption,&rect,DT_CENTER|DT_VCENTER|DT_SINGLELINE);
if(pOldFont!=NULL)
{
dc.SelectObject(pOldFont);
}
}
}
Top
3 楼Leanderhe(家俊)回复于 2004-09-04 09:39:33 得分 0
不用重载啦,vc里面的ActiveX组件里有一个超好的!
在对话框资源视图中,右键->Insert Activex Control选:Microsoft Forms 2.0 Label
自动在对话框中添加一个像其他普通控件的:Label1
可以像其他控件一样对Label1
的属性进行可视化操作Top




