在算法历程当中动态的加载图片显示到mfc的控件上 不被覆盖

在算法过程当中动态的加载图片显示到mfc的控件上 不被覆盖
在算法程序中把处理好的图片保存到指定的路径上,然后加载图片显示到mfc的static的控件上,可是图片会被覆盖掉,查了资料说是要重载,可是对mfc真的相当的不清楚,希望能有具体一些的代码做指导,多谢!这是我现在的图片显示程序。
void ShowImage1( UINT uID, void * image)
{
    //显示图片
CDC* pDC=aaDlg->GetDlgItem(uID)->GetDC();// 获得显示控件的 DC

HDC hDC=pDC->GetSafeHdc();// 获取 HDC(设备句柄) 来进行绘图操作

CRect rect;

aaDlg->GetDlgItem(uID)->GetClientRect(&rect);

CvvImage cimg;
cimg.CopyOf((IplImage*)image);    // 复制图片

cimg.DrawToHDC(hDC,&rect);
cimg.Destroy();
aaDlg->ReleaseDC(pDC);

}
------解决思路----------------------
这个二货
你要用text staic 的类派生一个新类
在新类里相应WM_PAINT
这个叫重载

步骤如下:
一、建立以个新类CMyPic,新类的基类选用CStatic
二、给CMyPic类相应WM_PAINT,在OnPaint里画你要的图片
三、添加一个text staic 控件,给这个控件建立以个CStatic关联的变量x
四、到对话框里吧CStatic x;改成CMyPic x;

OVER
------解决思路----------------------
楼上说的对,当控件需要重绘时,系统会发送WM_PAINT消息,你没在WM_PAINT消息的响应函数中绘制的话你绘制的图片就会被默认的行为覆盖。所以你要派生一个新类,把绘制代码放在WM_PAINT的消息函数OnPaint里面绘制
------解决思路----------------------
这个问题给这么多分!好有钱

//头文件.h
#pragma once

// CMyStatic

class CMyStatic : public CStatic
{
DECLARE_DYNAMIC(CMyStatic)

protected:
LPCTSTR m_lpszImagePath;
public:
CMyStatic();
virtual ~CMyStatic();

public:
void SetImagePath(LPCTSTR lpszImagePath);
protected:
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnPaint();
};

//源文件.cpp
#include "stdafx.h"
#include "MyStatic.h"

// CMyStatic

IMPLEMENT_DYNAMIC(CMyStatic, CStatic)

CMyStatic::CMyStatic()
: m_lpszImagePath(NULL)
{

}

CMyStatic::~CMyStatic()
{
}


BEGIN_MESSAGE_MAP(CMyStatic, CStatic)
ON_WM_PAINT()
END_MESSAGE_MAP()



// CMyStatic message handlers

void CMyStatic::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here


image_plateview = cvLoadImage(m_lpszImagePath);
if (image_plateview != NULL)
{
CvvImage cimg;
cimg.CopyOf((IplImage*)image_plateview);    // 复制图片

CRect rect;
GetClientRect(&rect);
cimg.DrawToHDC(dc.GetSafeHdc(),&rect);
cimg.Destroy();
}

// Do not call CStatic::OnPaint() for painting messages
}

void CMyStatic::SetImagePath( LPCTSTR lpszImagePath )
{
m_lpszImagePath = lpszImagePath;
        Invalidate();
UpdateWindow();
}


//在按钮click中
void CIntelligentTrafficDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
//OnOK();
    CMyStatic* pMyStatic = GetDlgItem(uID);
    pMyStatic.SetImagePath(imagepath);
}

------解决思路----------------------
猜测你没有子类化控件该控件
1.
BOOL CIntelligentTrafficDlg::OnInitDialog()
{
//在头文件中声明的CMyStatic m_ctlMyStatic
m_ctlMyStatic.SubclassDlgItem(IDC_STATIC_TEST, this);  //IDC_STATIC_TEST控件的ID,可能要把默认的IDC_STATIC修改下
}

2.在类向导中为控件添加成员变量CMyStatic

------解决思路----------------------
对话框 加 WS_CLIPCHIDREN 属性。
------解决思路----------------------
资源,对话框, 属性,
------解决思路----------------------
点击对话框,按“属性”
------解决思路----------------------
右图 里 那个 ”Clip Children“ 改 TRUE