|
|
只是简单的在屏幕上随机的画点,640*480*8,只有一个主表面,不带后台缓冲。但是在不同的地方释放DDraw的对象,会有不同的结果。
//////////////////
//以下代码运行正常
//////////////////
int WINAPI WinMain(.........)
{
//...............省略若干
GameInit(hwnd);
while(1)
{
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if (msg.message == WM_QUIT)
break;
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
GameMain();
Sleep(30);
}
GameOut(); //在这里释放
return msg.wParam ;
}
int GameMain()
{
if(GetAsynckeyState(VK_ESCAPE))
SendMessage(hwnd,WM_CLOSE,0,0);
//....................
}
********************************
********************************
但是如果我把GameOut()的调用放到下面这里,在按esc退出后,就弹出非法操作的提示框(就是那个什么即将关闭,报不报告错误)。
int WINAPI WinMain(.........)
{
//...............
GameInit(hwnd);
while(1)
{
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if (msg.message == WM_QUIT)
break;
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
GameMain();
Sleep(30);
}
//不在这里释放
return msg.wParam ;
}
int GameMain()
{
if(GetAsynckeyState(VK_ESCAPE))
{
GameOut(); //在这里释放
SendMessage(hwnd,WM_CLOSE,0,0);
}
//....................
} |
|