//******************************************************************
//函数:WinMain()
//功能:应用程序入口
//******************************************************************
int PASCAL WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg; hInst=hInstance;
//初始化主窗口
if (!InitWindow( hInstance, nCmdShow)) return FALSE;
//初始化DirectDraw环境
if (!InitDDraw()) { MessageBox(hWndMain, "初始化DirectDraw过程中出错!", "Error", MB_OK); FreeObjects(); DestroyWindow(hWndMain); return FALSE; }
//进入消息循环
while(1) { if(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) { if(!GetMessage(&msg, NULL, 0, 0 )) return msg.wParam; TranslateMessage(&msg); DispatchMessage(&msg); } else if(bActive) { UpdateFrame(); } else WaitMessage(); }
return msg.wParam; }
///////////////////////////////////////////////
//-----------------------------------------------------------------------------
// Name: WinMain()
// Desc: Initialization, message loop
//-----------------------------------------------------------------------------
int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg;
if (InitApp(hInstance, nCmdShow) != DD_OK) return FALSE;
while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }
/////////////////////////////////////////////////////////////////////////////////////////////
// 主循环
/////////////////////////////////////////////////////////////////////////////////////////////
int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow) { MSG msg;
if(!InitApp(hInst, nCmdShow)) return FALSE;
while(1) { if(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) { if(!GetMessage(&msg, NULL, 0, 0 )) return msg.wParam; TranslateMessage(&msg); DispatchMessage(&msg); } else if(bActive) { Update();
// 翻转上一层缓冲区内容到屏幕。
Screen->Flip(); } else WaitMessage(); } } ////////////////////////////////////////////////
///////////////////////////////////////////////////
int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // any windows programmer should be familiar with this
MSG msg;
lpCmdLine = lpCmdLine; hPrevInstance = hPrevInstance; if(!doInit(hInstance, nCmdShow)) { return FALSE; }
while (1) { if(PeekMessage(&msg, NULL, 0,0,PM_NOREMOVE)) { if(!GetMessage(&msg, NULL,0,0)) return msg.wParam; TranslateMessage(&msg); DispatchMessage(&msg); } else if(bActive) { fire(480, 0, 600, 50); // draw fire on bottom row and then flip
while(1) { ddrval = lpDDSPrimary->Flip(NULL, DDFLIP_WAIT); if(ddrval == DD_OK) { break; } if(ddrval == DDERR_SURFACELOST) { if(ddrval != DD_OK) { break; } } if(ddrval != DDERR_WASSTILLDRAWING) { break; } } } // if bActive
else { //make sure we go to sleep if have nothiing to do
WaitMessage(); } }
} // win main
//////////////////////////////////////////////
//-----------------------------------------------------------------------------
// Name: WinMain()
// Desc: 入口,初始化,进行消息循环
//-----------------------------------------------------------------------------
int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg;
if (InitApp(hInstance, nCmdShow) != DD_OK) return FALSE;
Map[0].Width=width; Map[0].Hight=height; Map[0].Data=(char *)malloc( Map[0].Width * Map[0].Hight ); Map[0].Pro=(char *)malloc( Map[0].Width * Map[0].Hight );
//将地图全部置为可到达
int i,j; reachable=1; for (j=0;j<Map[0].Hight;j++) for (i=0;i<Map[0].Width;i++) { *(Map[0].Data+i*Map[0].Hight+j)=reachable; }
for (j=0;j<Map[0].Hight;j++) for (i=0;i<Map[0].Width;i++) { *(Map[0].Pro+i*Map[0].Hight+j)=select_pro; }
//消息循环
while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); }
return msg.wParam; }
//-----------------------------------------------------------------------------
// Name: WinMain()
// Desc: Entry point to the program. Initializes everything and calls
// UpdateFrame() when idle from the message pump.
//-----------------------------------------------------------------------------
int APIENTRY WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR pCmdLine, int nCmdShow ) { MSG msg; HWND hWnd;
ZeroMemory( &g_Sprite, sizeof(SPRITE_STRUCT) * NUM_SPRITES ); srand( GetTickCount() );
if( FAILED( WinInit( hInst, nCmdShow, &hWnd ) ) ) return FALSE;
// Make a timer go off to re-init the table of random values every once in a while
SetTimer( hWnd, 0, 1500, NULL );
if( FAILED( InitDirectDraw( hWnd ) ) ) { if( g_pDisplay ) g_pDisplay->GetDirectDraw()->SetCooperativeLevel( NULL, DDSCL_NORMAL );
MessageBox( hWnd, TEXT("DirectDraw init failed. ") TEXT("The sample will now exit. "), TEXT("DirectDraw Sample"), MB_ICONERROR | MB_OK ); return FALSE; }
g_dwLastTick = timeGetTime();
while( TRUE ) { // Look for messages, if none are found then
// update the state and display it
if( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) ) { if( 0 == GetMessage(&msg, NULL, 0, 0 ) ) { // WM_QUIT was posted, so exit
return (int)msg.wParam; }
// Translate and dispatch the message
TranslateMessage( &msg ); DispatchMessage( &msg ); } else { if( g_bActive ) { // Move the sprites, blt them to the back buffer, then
// flip or blt the back buffer to the primary buffer
if( FAILED( ProcessNextFrame() ) ) { SAFE_DELETE( g_pDisplay );
MessageBox( hWnd, TEXT("Displaying the next frame failed. ") TEXT("The sample will now exit. "), TEXT("DirectDraw Sample"), MB_ICONERROR | MB_OK ); return FALSE; } } else { // Make sure we go to sleep if we have nothing else to do
WaitMessage();
// Ignore time spent inactive
g_dwLastTick = timeGetTime(); } } } }
|