图片上显示多行文字失败解决方案

图片上显示多行文字失败
现在代码遇到的问题:
1.用drawtext显示文字失败,用textout可以正常显示
期望达到的效果:

1.在对话框中显示图片,图片设定为文字的背景
2.在图片上输出多行文字,当文字超过设定显示范围的大小时,可滚动显示。
3.显示文字可清除,且不影响图片显示

请帮我排查一下问题。
我现在的主要代码,图片显示在static text的控件中名字为IDC_STATIC_IMG。
不能显示文字代码:

BOOL CShowJpgDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
CDC *pdc;
pdc=GetDlgItem(IDC_STATIC_IMG)->GetDC();
if(pMsg->message==WM_RBUTTONDOWN)
{
ShowImage(pdc,"C:\\Users\\Administrator\\Desktop\\a.jpg",0,0);
}
if(pMsg->message==WM_LBUTTONDOWN)
{
//获取客户区域
static CString str="测试文字换行";

HDC hDC=pdc->GetSafeHdc();
CRect rc;
COLORREF color=RGB(255,0,0);
//SetBkColor(hDC,color);
GetDlgItem(IDC_STATIC_IMG)->GetClientRect(&rc);
CString clientsize;
clientsize.Format("client size %d,%d,%d,%d",rc.top,rc.left,rc.bottom,rc.right);
MessageBox(clientsize);
rc.SetRect(500,500,1000,1000);
SetBkMode(hDC,TRANSPARENT);
clientsize.Format("str len %d",str.GetLength());
MessageBox(clientsize);
DrawText(hDC,str,str.GetLength(),&rc,DT_CALCRECT);
str+=str;
//DrawText();
}
//my_font->DeleteObject();
ReleaseDC(pdc);

return CDialogEx::PreTranslateMessage(pMsg);
}


显示图片的代码

BOOL CShowJpgDlg::ShowImage(CDC* pDC,CString strPath, int x, int y)
{
   
    IPicture *pPic=NULL; 
    OleLoadPicturePath(CComBSTR(strPath.GetBuffer()), (LPUNKNOWN)NULL, 0, 0, IID_IPicture,(LPVOID*)&pPic);
    if (NULL==pPic)
    {
        return FALSE;
    }

    // 获取图像宽和高,注意这里的宽和高不是图像的分辨率
    OLE_XSIZE_HIMETRIC hmWidth;  
    OLE_YSIZE_HIMETRIC hmHeight;  
    pPic->get_Width(&hmWidth);  
    pPic->get_Height(&hmHeight);  

    // 将图像宽度和高度单位转化为像素单位
   //#define HIMETRIC_PER_INCH 2540
   //int nPicWidth =  MulDiv(hmWidth, GetDeviceCaps(GetDC()->m_hDC, LOGPIXELSX),2540);
   //int nPicHeight = MulDiv(hmHeight, GetDeviceCaps(GetDC()->m_hDC, LOGPIXELSY),2540);

   // 获取显示图片窗口的宽度和高度
   RECT rtWnd;
   pDC->GetWindow()->GetWindowRect(&rtWnd);
   int iWndWidth=rtWnd.right-rtWnd.left;
   int iWndHeight=rtWnd.bottom-rtWnd.top;

   if(FAILED(pPic->Render(*pDC,x,y,iWndWidth,iWndHeight,0,hmHeight,hmWidth,-hmHeight,NULL)))  
   {
       pPic->Release();
       return false;
   }

   pPic->Release(); 
   return true;
}


//************************************
// 方法说明:    浏览图片
// 返回值:      void
//************************************
void CShowJpgDlg::OnBnClickedBtnBrowse()
{
    // TODO: Add your control notification handler code here
    CFileDialog dlg(TRUE,"jpg","*.jpg", OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, 
        "JPEG文件(*.jpg)|*.jpg|GIF文件(*.gif)|*.gif|bmp文件(*.bmp)|*.bmp|",NULL); 
    if(dlg.DoModal()==IDOK) 
    { 
        SetDlgItemText(IDC_TXT_PATH,dlg.GetPathName());

        //设置静态控件的样式,使其可以使用位图,并使位图显示居中
        ((CStatic*)GetDlgItem(IDC_STATIC_IMG))-> ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);

        //ShowJpgGif(GetDlgItem(IDC_STATIC_IMG)->GetDC(),dlg.GetPathName(),0,0);
        ShowImage(GetDlgItem(IDC_STATIC_IMG)->GetDC(),dlg.GetPathName(),0,0);

    } 

}


------解决思路----------------------
DrawText(hDC,str,str.GetLength(),&rc,DT_CALCRECT);
----------->
DrawText(hDC,str,str.GetLength(),&rc,DT_EDITCONTROL
------解决思路----------------------
DT_WORDBREAK);