void CALLBACK CWebVideoCtrl::DrawFunctionString(LONG lRealHandle, HWND hDC, LPVOID lpUser)
{
CRect rect;
int i = 0;
HDC hDc= (HDC)hDC;
CFont font;
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT));
lf.lfHeight =50;
font.CreateFontIndirect(&lf);
::SelectObject(hDc,&font);
CWebVideoCtrl* webvideo = (CWebVideoCtrl*)lpUser;
int x,y;
for (i=0;im_bDrawRect.size();i++)
{
rect.left=webvideo->m_bDrawRect[i].left;
rect.top = webvideo->m_bDrawRect[i].top;
rect.right = webvideo->m_bDrawRect[i].right;
rect.bottom = webvideo->m_bDrawRect[i].bottom;
x=rect.left;
y=rect.top;
::Rectangle(hDc,rect.left,rect.top,rect.right,rect.bottom);
::DrawText(hDc,webvideo->m_bDrawString[i],webvideo->m_bDrawString[i].length,&rect,DT_SINGLELINE|DT_LEFT|DT_VCENTER);
}
}
进行写一个在cwnd上一个矩形框内输入文字的程序,发现这样写怎么也改变不了字体的带下。google无果。
后来把HDC转成cdc竟然成功了。
void CALLBACK CWebVideoCtrl::DrawFunctionString(LONG lRealHandle, HWND hDC, LPVOID lpUser)
{
CRect rect;
int i = 0;
//HBRUSH hBrush= (HBRUSH)CreateSolidBrush();
//hwnd = m_picDetectArea.GetSafeHwnd();
HDC hDc= (HDC)hDC;
CDC cdc;
cdc.Attach(hDc);
CFont font;
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT));
lf.lfHeight =50;
font.CreateFontIndirect(&lf);
cdc.SelectObject(&font);
//::SelectObject(hDc,GetStockObject(NULL_BRUSH));
CWebVideoCtrl* webvideo = (CWebVideoCtrl*)lpUser;
//HPEN hRedPen;
//hRedPen = CreatePen(PS_SOLID, 1, RGB(255, 0, 0));
//HPEN hPenOld = (HPEN)::SelectObject(hDc, hRedPen);
//::SetTextColor(hDc,RGB(0, 0, 255));
//::SetBkMode(hDc,TRANSPARENT);
int x,y;
for (i=0;im_bDrawRect.size();i++)
{
rect.left=webvideo->m_bDrawRect[i].left;
rect.top = webvideo->m_bDrawRect[i].top;
rect.right = webvideo->m_bDrawRect[i].right;
rect.bottom = webvideo->m_bDrawRect[i].bottom;
x=rect.left;
y=rect.top;
//::TextOut(hDc,x,y,webvideo->m_bDrawString[i],webvideo->m_bDrawString[i].GetLength());
::Rectangle(hDc,rect.left,rect.top,rect.right,rect.bottom);
cdc.DrawText(webvideo->m_bDrawString[i],&rect,DT_SINGLELINE|DT_LEFT|DT_VCENTER);
}
//::DrawEdge(hDc,&rect,BDR_SUNKENOUTER,BF_RECT);
}