不只是这样    把对话框移动到显示器外图片会被像被橡皮一样擦掉  
void CLookYourselfDlg::OnBnClickedButton1()
{
CImage image;
image.Attach(SC());//SC()截屏程序绝对OK
HDC hDestDC;
hDestDC=::GetDC(::GetDlgItem(m_hWnd,IDC_STATIC_ID));
::SetStretchBltMode(hDestDC,HALFTONE); 
::SetBrushOrgEx(hDestDC,0,0,NULL); 
image.StretchBlt(hDestDC,0,0,1024,768,SRCCOPY);//显示也没问题
}就是不知道为什么移到显示器外会被擦掉  
貌似CStatic的 SetBitmap函数不会发生这样的情况    但是我需要这样写图片才会达到预期的大小 1024*768

解决方案 »

  1.   

    你没处理WM_PAINT消息,当窗口被擦掉,需要重绘制的时候,你应该再把图片绘制上去,要不然它当然不会出现按想象出现一个图片的。 /:^]
    你应该在自己的窗口类里重载
    CWnd::OnPaint
    并且在实现里进行必须的图像绘制
    afx_msg void OnPaint( )
    {
        CImage image;
        HDC hDestDC;
        hDestDC=::GetDC(::GetDlgItem(m_hWnd,IDC_STATIC_ID));
        ::SetStretchBltMode(hDestDC,HALFTONE);  
        ::SetBrushOrgEx(hDestDC,0,0,NULL);  
        image.StretchBlt(hDestDC,0,0,1024,768,SRCCOPY);
        http://www.osronline.com/article.cfm?id=469
        CWnd::OnPaint ();
    }