void CChildView::OnPaint()
{
CPaintDC dc(this); //创建一个用于截屏的DC
//dc.CreateDC(_T("Display"), NULL, NULL, NULL); //然后就截屏咯 // 用于绘制的设备上下文
CDC memDC;
memDC.CreateCompatibleDC(&dc);
static bool Once = true;
if (Once)
{
m_bmp.CreateCompatibleBitmap(&dc,::GetSystemMetrics(SM_CXSCREEN),::GetSystemMetrics(SM_CYSCREEN));
Once = false;
}
memDC.SelectObject(&m_bmp); dc.BitBlt(0,0,::GetSystemMetrics(SM_CXSCREEN),::GetSystemMetrics(SM_CYSCREEN),&memDC,0,0,SRCCOPY);
//dc.DeleteDC();
memDC.DeleteDC();
// TODO: 在此处添加消息处理程序代码
// 不要为绘制消息而调用 CWnd::OnPaint()
}
{
CPaintDC dc(this); //创建一个用于截屏的DC
//dc.CreateDC(_T("Display"), NULL, NULL, NULL); //然后就截屏咯 // 用于绘制的设备上下文
CDC memDC;
memDC.CreateCompatibleDC(&dc);
static bool Once = true;
if (Once)
{
m_bmp.CreateCompatibleBitmap(&dc,::GetSystemMetrics(SM_CXSCREEN),::GetSystemMetrics(SM_CYSCREEN));
Once = false;
}
memDC.SelectObject(&m_bmp); dc.BitBlt(0,0,::GetSystemMetrics(SM_CXSCREEN),::GetSystemMetrics(SM_CYSCREEN),&memDC,0,0,SRCCOPY);
//dc.DeleteDC();
memDC.DeleteDC();
// TODO: 在此处添加消息处理程序代码
// 不要为绘制消息而调用 CWnd::OnPaint()
}
void CChildView::OnPaint()
{
CPaintDC dc(this); //创建一个用于截屏的DC
//dc.CreateDC(_T("Display"), NULL, NULL, NULL); //然后就截屏咯 // 用于绘制的设备上下文static bool Once = true;
if (Once)
{
CDC memDC;memDC.CreateCompatibleDC(&dc);m_bmp.CreateCompatibleBitmap(&dc,::GetSystemMetrics(SM_CXSCREEN),::GetSystemMetrics(SM_CYSCREEN));
memDC.SelectObject(&m_bmp);dc.BitBlt(0,0,::GetSystemMetrics(SM_CXSCREEN),::GetSystemMetrics(SM_CYSCREEN),&memDC,0,0,SRCCOPY);
//dc.DeleteDC();
memDC.DeleteDC();Once = false;
}// TODO: 在此处添加消息处理程序代码// 不要为绘制消息而调用 CWnd::OnPaint()
}否者第二次运行的时候,你的memdc连画布都没绑定,肯定是黑的啊...
CBitamp *pOldBmp = memDC.SelectObject(&m_bmp);
memDC.SelectObject(&m_bmp);
dc.BitBlt(0,0,::GetSystemMetrics(SM_CXSCREEN),::GetSystemMetrics(SM_CYSCREEN),&memDC,0,0,SRCCOPY);
memdc.SelectObject(pOldBmp);