MFC动态加载JPG图片,作为对话框背景图片,且每隔10秒显示一次,该怎么解决

MFC动态加载JPG图片,作为对话框背景图片,且每隔10秒显示一次
我现在有个测试代码,编译运行都是正确的,不过是通过资源的方式导入JPG图片的。现在要动态加载图片,不要下面的资源导入。

运行的效果也是正确的:现在就是怎么改成动态加载:



下面是我的测试代码:
.h 文件:
C/C++ code
public:
    UINT         IDJPG[4];
    int          i;
    int             m_iPic;
    CBrush       m_brBk;
    CBitmap      bmp;

    CPoint       pt; 
    CPen         pen;
    CBrush       cbrush;


.cpp 文件:
初始化工作:
C/C++ code
CTestJPGDlg::CTestJPGDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CTestJPGDlg::IDD, pParent)
{
    IDJPG[0] = IDR_JPG1;
    IDJPG[1] = IDR_JPG2;
    IDJPG[2] = IDR_JPG3;
    IDJPG[3] = IDR_JPG4;
    i = 0;
    m_iPic = 1;

    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}


C/C++ code
BOOL CTestJPGDlg::OnInitDialog()
{
    …………
    // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
    //  执行此操作
    SetIcon(m_hIcon, TRUE);            // 设置大图标
    SetIcon(m_hIcon, FALSE);        // 设置小图标

    // TODO: 在此添加额外的初始化代码

    //初始化一个画笔-------------------------------
    pen.CreatePen(PS_INSIDEFRAME,1,RGB(255,0,0));

    SetTimer(1, 1000, NULL);
    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

void CTestJPGDlg::OnPaint()
{
    DrawCircle();
    
    CPaintDC dc(this);
}

void CTestJPGDlg::OnTimer(UINT_PTR nIDEvent)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值

    if (nIDEvent == 1)
    {
        pt.x=(long)rand()%100+30;
        pt.y=(long)rand()%100+30;

        DrawCircle();

        i++;
        m_iPic++;

        if ( i == 4 )
        {
            i = 0;
        }

        if ( m_iPic == 40 )
        {
            m_iPic = 0;
        }

        /*if (m_iPic < 80)
        {
            m_iPic++;
        }*/
    }

    CDialog::OnTimer(nIDEvent);
}

BOOL ImageFromIDResource(UINT nID, LPCTSTR sTR, Gdiplus::Image * &pImg)
{
    HINSTANCE hInst = AfxGetResourceHandle();
    HRSRC hRsrc = ::FindResource (hInst,MAKEINTRESOURCE(nID),sTR); //type
    if (!hRsrc)
    {
        return FALSE;
    }

    // load resource into memory
    DWORD len = SizeofResource(hInst, hRsrc);
    BYTE* lpRsrc = (BYTE*)LoadResource(hInst, hRsrc);
    if (!lpRsrc)
    {
        return FALSE;
    }

    // Allocate global memory on which to create stream
    HGLOBAL m_hMem = GlobalAlloc(GMEM_FIXED, len);
    BYTE* pmem = (BYTE*)GlobalLock(m_hMem);
    memcpy(pmem,lpRsrc,len);
    IStream* pstm;
    CreateStreamOnHGlobal(m_hMem,FALSE,&pstm);
    // load from stream
    pImg=Gdiplus::Image::FromStream(pstm);
    // free/release stuff
    GlobalUnlock(m_hMem);
    pstm->Release();
    FreeResource(lpRsrc);

    return TRUE;
}

//画图函数-------------------------
void CTestJPGDlg::DrawPicture(void)
{
    m_brBk.DeleteObject();
    bmp.DeleteObject();

    Image *pBackImage = NULL;
    //int index = min(4,m_iPic/10);

    if ( ImageFromIDResource(/*IDJPG[index]*/IDJPG[m_iPic/10],_T("JPG"),pBackImage) )
    {
        CDC *pDC = GetDC();
        Graphics graph(pDC->m_hDC);

        CRect rect;
        GetClientRect(&rect);
        Rect rectClient(rect.left,rect.top,rect.Width(),rect.Height());

        graph.DrawImage(pBackImage,rectClient);
        ReleaseDC(pDC);
    }

    //pDC->FillRect(rect,&m_brBk);
}

//画圆函数---------------------
void CTestJPGDlg::DrawCircle()
{
    DrawPicture();

    CDC *pDC = GetDC();

    CPen *pPen = pDC->SelectObject(&pen);
    cbrush.CreateSolidBrush(RGB(255,0,0));
    CBrush *poldbrush = pDC->SelectObject(&cbrush);   
    pDC->Ellipse(pt.x-30,pt.y-30,pt.x+30,pt.y+30);

    //Sleep(500); //不用这个
    //Sleep(500); 
    pDC->SelectObject(poldbrush);
    pDC->SelectObject(pPen);

    //Invalidate();

    cbrush.DeleteObject();
    ReleaseDC(pDC);
}

HBRUSH CTestJPGDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO:  在此更改 DC 的任何属性

    // TODO:  如果默认的不是所需画笔,则返回另一个画笔

    if (pWnd == this) 
    { 
        return m_brBk; 
    }

    return hbr;
}