DrawText无法改变字体大小。

     

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;i<webvideo->m_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;i<webvideo->m_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);
}


你可能感兴趣的:(mfc,界面)