⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 winproc.cpp

📁 Visual C++ 游戏开发与设计实例 源代码(所有)
💻 CPP
字号:

#include "global.h"
#include "ddutil.h"

extern CDisplay		Display;
extern HWND			hMainWnd, hChildWnd;

//-----------------------------------------------------------------------------
// Global variables for command analyse
//-----------------------------------------------------------------------------
bool			bKeyPressed[6] = { 0,0,0,0,0,0 };
bool			bFired = false;				
unsigned int	uiRecentCmd = 0, uiCurrentCmd = 0;
unsigned int	KeyMap[6] = { 0, VK_RIGHT, VK_DOWN, VK_UP, VK_LEFT, VK_SPACE};

//-----------------------------------------------------------------------------
// Name: MainWndProc()
// Desc: Callback message procedure of the main window
//-----------------------------------------------------------------------------
LRESULT CALLBACK MainWndProc( HWND hwnd, UINT message,
							 WPARAM wParam, LPARAM lParam)
{
    switch ( message )
    {
    case WM_CREATE:
        break;

	case WM_ACTIVATE:
		if ( LOWORD(wParam) == WA_INACTIVE )
			g_bActive = false;
		else {
			g_bActive = true;
			SetFocus( hChildWnd ); 
		}
		break;

	case WM_COMMAND:
		break;

	case WM_MOVE:
		Display.UpdateBounds();
	    break;

	case WM_SIZE:
		Display.UpdateBounds();
	    break;

    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    }
    return DefWindowProc( hwnd, message, wParam, lParam );
}



//-----------------------------------------------------------------------------
// Name: GameWndProc()
// Desc: Callback message procedure of the game window
//-----------------------------------------------------------------------------
LRESULT CALLBACK GameWndProc( HWND hwnd, UINT message,
							 WPARAM wParam, LPARAM lParam )
{
	int		i;

	uiCurrentCmd = 0;
	bFired = false;
    
	switch (message)
    {
	case WM_CREATE:
		g_bActive = true;
		break;

	case WM_LBUTTONDOWN:
		SetFocus(hwnd);
		break;

	case WM_KEYDOWN:
		for(i=1;i<5;i++) {				// Pressed any direction button?
			if( wParam == KeyMap[i] ) {
				bKeyPressed[i] = true;
				uiCurrentCmd = i;
				uiRecentCmd = i;
				goto end_gameproc;
			}
		}							
										// Not a direction button
		if ( wParam == KeyMap[5] )		// the fire button ?
			bFired = true;
		break;

	case WM_KEYUP:
		for( i=1; i<5; i++)
			if( wParam == KeyMap[i] ) {
				bKeyPressed[i] = false;
				break;
			}
		break;

	case WM_CLOSE:
		g_bActive = false;
		break;
	}
									// No input msg received
	if ( bKeyPressed[uiRecentCmd] ) // if the recent cmd is valid
			uiCurrentCmd = uiRecentCmd;
	else {							// test all keys to find a valid one
		for( i=4; i>0; i--)		
			if( bKeyPressed[i] ) 
				break;
		uiRecentCmd = i;			// 4 - 0
		uiCurrentCmd = i;
	}

end_gameproc:
	return DefWindowProc ( hwnd, message, wParam, lParam );
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -