|

楼主 |
发表于 2004-6-7 08:20:00
|
显示全部楼层
Re:关于DrectDraw页面的一个问题。
事实上,这个是《VC游戏设计》的一个程序。
可以看代码,按书上的本来意思是让两个图片“back1.bmp”和“back2.bmp”
在屏幕上交替显示。
//建立窗口,导入图片。directdraw系列对象在OnCreate中建立好了。
gameFrame::gameFrame()
{
Create(NULL, "BeyondDream", WS_POPUP);
hdc = ::CreateCompatibleDC(NULL);
bmp1 = (HBITMAP): oadImage(NULL, "back1.bmp", IMAGE_BITMAP,
640, 480, LR_LOADFROMFILE);
bmp2 = (HBITMAP)::LoadImage(NULL, "back2.bmp", IMAGE_BITMAP,
640, 480, LR_LOADFROMFILE);
::SelectObject(hdc, bmp1);
LoadBmp();
pPSur->BltFast(0, 0, pOPla, CRect(0, 0, 640, 480), DDBLTFAST_WAIT);
Sleep(500); //延迟一段时间以看到直接在主页面上贴的图片。
::SelectObject(hdc, bmp2);
LoadBmp();
pBBuf->BltFast(0, 0, pOPla, CRect(0, 0, 640, 480), DDBLTFAST_WAIT);
}
在第一次,果然看到了一次位图交替显示。而且刚才直接贴到主页面的图象也正常显示。
//以后,每隔一段时间,就看到位图交替显示。
void gameFrame::OnTimer(UINT nIDEvent)
{
pPSur->Flip(NULL, DDFLIP_WAIT);
CFrameWnd::OnTimer(nIDEvent);
}
可是,运行结果是:一张图片和一个空白背景交替显示,难道还有一个页面丢失了吗? |
|