程序片段:
CClientDC dc(this);
CFootBall ball(&dc);
ball.GetMDC (mdc);
dc.BitBlt (0, 0, ball.nWidth, ball.nHeight, ball.memdc, 0, 0, SRCCOPY);
dc.BitBlt (100, 0, ball.nWidth, ball.nHeight, mdc, 0, 0, SRCCOPY);void CFootBall::GetMDC (CDC* mdc)
{
mdc = memdc;
}
本来应该是有两个图像显示的,但为何这时只有一个图像被显示出来?
CClientDC dc(this);
CFootBall ball(&dc);
ball.GetMDC (mdc);
dc.BitBlt (0, 0, ball.nWidth, ball.nHeight, ball.memdc, 0, 0, SRCCOPY);
dc.BitBlt (100, 0, ball.nWidth, ball.nHeight, mdc, 0, 0, SRCCOPY);void CFootBall::GetMDC (CDC* mdc)
{
mdc = memdc;
}
本来应该是有两个图像显示的,但为何这时只有一个图像被显示出来?
dc.BitBlt (0, 0, ball.nWidth, ball.nHeight, ball.memdc, 0, 0, SRCCOPY);
dc.BitBlt (100, 0, ball.nWidth, ball.nHeight, ball.memdc, 0, 0, SRCCOPY);
有什么不同吗?
CgameFrame::CgameFrame()
{
...
CClientDC dc(this);
CFootBall ball(&dc);
ball.GetMDC (mdc);
dc.BitBlt (0, 0, ball.nWidth, ball.nHeight, ball.memdc, 0, 0, SRCCOPY);
dc.BitBlt (100, 0, ball.nWidth, ball.nHeight, mdc, 0, 0, SRCCOPY);
}
void CFootBall::GetMDC (CDC* mdc1)
{
mdc1 = memdc;
}
memdc是CFootBall的成员变量,经过调试,我发现调用GetMDC函数后,mdc的值未被改变,
故只能显示一张图像。那到底mdc的值为何不能改为memdc的值呢?
CgameFrame::OnTimer()
{
...
CClientDC dc(this);
CFootBall ball(&dc);
ball.GetMDC (mdc);
dc.BitBlt (0, 0, ball.nWidth, ball.nHeight, ball.memdc, 0, 0, SRCCOPY);
dc.BitBlt (100, 0, ball.nWidth, ball.nHeight, mdc, 0, 0, SRCCOPY);
}
void CFootBall::GetMDC (CDC* mdc1)
{
mdc1 = memdc;
}
memdc是CFootBall的成员变量,经过调试,我发现调用GetMDC函数后,mdc的值未被改变,
故只能显示一张图像。那到底mdc的值为何不能改为memdc的值呢?
CgameFrame::OnTimer()
{
...
CClientDC dc(this);
CFootBall ball(&dc);
ball.GetMDC (mdc);
dc.BitBlt (0, 0, ball.nWidth, ball.nHeight, ball.memdc, 0, 0, SRCCOPY);
dc.BitBlt (100, 0, ball.nWidth, ball.nHeight, mdc, 0, 0, SRCCOPY);
}
void CFootBall::GetMDC (CDC* mdc1)
{
mdc1->m_hDC = memdc->m_hDC;
}
这样就能正确显示出两幅图像了
要第二次调用dc.BitBlt()时才可显示出图像,为何?