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

📄 me_dxbak.cpp

📁 战棋游戏的地图编辑器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				break;

			case 0x1a:
				PreButton = ButtonPressed = 12;
				CurWnd = PreWnd;
				// SelectME(Earth, 1, 1);
				break;

			case 'G':
			case 'g':
				CurWnd = PreWnd;
				if( bGrid ) bGrid = FALSE;
				else bGrid = TRUE;
				break;

			case 'F':
			case 'f':
				CurWnd = PreWnd;
				PreButton = ButtonPressed = 1;
				SelectME(Earth, 1, 1);
				break;

			case 'S':
			case 's':
				CurWnd = PreWnd;
				PreButton = ButtonPressed = 2;
				SelectME(Structure, 1, 1);
				break;

			case 'T':
			case 't':
				CurWnd = PreWnd;
				PreButton = ButtonPressed = 3;
				SelectME(Tree, 1, 1);
				break;

			case 'R':
			case 'r':
				PreButton = ButtonPressed = 4;
				CurWnd = PreWnd;
				SelectME(River, 1, 1);
				break;

			case 'E':
			case 'e':
				PreButton = ButtonPressed = 5;
				CurWnd = PreWnd;
				SelectME(Object, 1, 1);
				break;

			case 'A':
			case 'a':
				PreButton = ButtonPressed = 6;
				CurWnd = PreWnd;
				SelectME(Army, 1, 1);
				break;

			case '1':
				CurWnd = PreWnd;
				SelectME(CurClass,CurPage,1);
				break;

			case '2':
				CurWnd = PreWnd;
				SelectME(CurClass,CurPage,2);
				break;

			case '3':
				CurWnd = PreWnd;
				SelectME(CurClass,CurPage,3);
				break;

			case '4':
				CurWnd = PreWnd;
				SelectME(CurClass,CurPage,4);
				break;

			case '5':
				CurWnd = PreWnd;
				SelectME(CurClass,CurPage,5);
				break;

			case '6':
				CurWnd = PreWnd;
				SelectME(CurClass,CurPage,6);
				break;
			}
		}
		break;

    case WM_DESTROY:
		finiObjects();
		PostQuitMessage( 0 );

    case WM_KEYDOWN:
		if(CurWnd)
		{
			switch(wParam)
			{
			case VK_ESCAPE:
				// Quit();
				PreButton = ButtonPressed;
				ButtonPressed = 16;
				CurWnd = NULL;
				PostMessage(hWnd, WM_CLOSE, 0, 0);
				break;

			case VK_F1:
				PreButton = ButtonPressed;
				ButtonPressed = 17;
				CurWnd = NULL;
				CurPage = 0;
				Help();
				break;

			case VK_F2:
				PreButton = ButtonPressed;
				ButtonPressed = 13;
				CurWnd = NULL;
				CurPage = 0;
				// NewMap();
				break;

			case VK_F3:
				PreButton = ButtonPressed;
				ButtonPressed = 14;
				CurWnd = NULL;
				CurPage = 0;
				// LoadMap();
				break;

			case VK_F4:
				PreButton = ButtonPressed;
				ButtonPressed = 15;
				CurWnd = NULL;
				// SaveMap();
				break;
			}
		}
		break;
    }
    return DefWindowProc(hWnd, message, wParam, lParam);

} /* WindowProc */

/*
 * This function is called if the initialization function fails
 */
static BOOL initFail( HWND hwnd ,char *msg)
{
    finiObjects();
    MessageBox( hwnd, msg, TITLE, MB_OK );
    DestroyWindow( hwnd );
    return FALSE;
} /* initFail */

/*
 * doInit - do work required for every instance of the application:
 *                create the window, initialize data
 */
static HWND doInit( HINSTANCE hInstance, int nCmdShow )
{
    HWND                hwnd;
    WNDCLASS            wc;
    DDSURFACEDESC       ddsd;
    DDSCAPS             ddscaps;
    HRESULT             ddrval;


    me[Earth][0].index = 0x100;
	me[Earth][1].index = 0x101;
	me[Tree][0].index = 0x300;

	me[Earth][0].height = 1;
	me[Earth][1].height = 1;
	me[Tree][0].height = 6;
	me[Earth][0].hotx = 30;
	me[Earth][1].hotx = 30;

	for (int i=0;i<35;i++)
	{
		for(int j=0;j<10;j++)
		{
			if(i%2)
			{
				sERL1[i][j].index = 0x111;
				sERL2[i][j].index = 0;
				sERL1[i][j].height = 1;
				sERL2[i][j].height = 7;
				sERL1[i][j].hotx = 30;
				sERL2[i][j].hoty = 35;
				sERL1[i][j].hoty = 32;
				sERL2[i][j].hoty = 115;
				sERL1[i][j].pdata = &sRcm[3];
				sERL2[i][j].pdata = &sRcm[7];//&sRcm[3];
			}
			else
			{
				sERL1[i][j].index = 0x112;
				sERL2[i][j].index = 0x311;
				sERL1[i][j].height = 3;
				sERL2[i][j].height = 7;
				sERL1[i][j].hotx = 31;
				sERL2[i][j].hotx = 31;
				sERL1[i][j].hoty = 63;
				sERL2[i][j].hoty = 102;
				sERL1[i][j].pdata = &sRcm[6];
				sERL2[i][j].pdata = &sRcm[7];//&sRcm[6];
			}
		}
	}
	/*
     * set up and register window class
     */
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WindowProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon( hInstance, IDI_APPLICATION );
    wc.hCursor = LoadCursor( NULL, IDC_ARROW );
    wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
    wc.lpszMenuName = NULL;
    wc.lpszClassName = NAME;
    RegisterClass( &wc );
    
    /*
     * create a window
     */
    hwnd = CreateWindowEx(
	0,
	NAME,
	TITLE,
	WS_POPUP,
	0,
	0,
	GetSystemMetrics(SM_CXSCREEN),
	GetSystemMetrics(SM_CYSCREEN),
	NULL,
	NULL,
	hInstance,
	NULL );

	CurWnd = PreWnd = hwnd;
    if( !hwnd )	return hwnd;

    ShowWindow( hwnd, nCmdShow );
    UpdateWindow( hwnd );

    /*
     * create the main DirectDraw object
     */
    ddrval = DirectDrawCreate( NULL, &lpDD, NULL );
    if( ddrval != DD_OK )
	{
		initFail(hwnd, "DirectDraw: can't create.");
		return NULL;
	}

    // Get exclusive mode
    ddrval = lpDD->SetCooperativeLevel( hwnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN );
    if( ddrval != DD_OK )
	{
		initFail(hwnd, "DirectDraw: Can't set cooperative level.");
		return NULL;
	}

    // Set the video mode to 800x600x8
    ddrval = lpDD->SetDisplayMode( 800, 600, 8);
    if( ddrval != DD_OK )
	{
		initFail(hwnd, "DirectDraw: Can't set to this mode.");
		return NULL;
	}

    // Create the primary surface with 1 back buffer
    ddsd.dwSize = sizeof( ddsd );
    ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
    ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE |
			  DDSCAPS_FLIP |
			  DDSCAPS_COMPLEX;
    ddsd.dwBackBufferCount = 1;
    ddrval = lpDD->CreateSurface( &ddsd, &lpDDSPrimary, NULL );
    if( ddrval != DD_OK )
	{
		initFail(hwnd, "DirectDraw: Can't crate surface.");
		return NULL;
	}

    ddscaps.dwCaps = DDSCAPS_BACKBUFFER;
    ddrval = lpDDSPrimary->GetAttachedSurface(&ddscaps, &lpDDSBack);
    if( ddrval != DD_OK )
	{
		initFail(hwnd, "DirectDraw: BackBuffer no found.");
		return NULL;
	}

    // Create a offscreen bitmap.
    ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
    ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
    ddsd.dwHeight = 680;
    ddsd.dwWidth = 800;
    ddrval = lpDD->CreateSurface( &ddsd, &lpDDSOne, NULL );
    if( ddrval != DD_OK )
	{
		initFail(hwnd, "DirectDraw: Can't locate bitmap buffer");
		return NULL;
	}
    ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
    ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
	ddsd.dwWidth = 800;
	ddsd.dwHeight = 640;
    ddrval = lpDD->CreateSurface( &ddsd, &lpDDSTwo, NULL );
    if( ddrval != DD_OK )
	{
		initFail(hwnd, "DirectDraw: Can't locate bitmap buffer");
		return NULL;
	}

    // Create a Direct Draw Palette and associate it with the front buffer
    lpDDPal = DDLoadPalette(lpDD, szBitmap);

    if (lpDDPal)
	lpDDSPrimary->SetPalette( lpDDPal );

    if(!InitSurfaces() )
	{
		initFail(hwnd,"DIrectDraw: Can't set Palette.");
		return NULL;
	}

    // Create a timer to recycle the palette.
    if( !SetTimer( hwnd, TIMER_ID, TIMER_RATE, NULL ) )
	{
		initFail(hwnd, "Can't set timer.");
		return NULL;
	}

	UpdateFrame();
	ShowCursor(1);
    return hwnd;
} /* doInit */



// InitSurfaces - This function reads the bitmap file MAINMENU.BMP
// and stores it in offscreen surface 1 .
static BOOL InitSurfaces( void )
{
    HBITMAP hbm;

    // Load our bitmap resource.
    hbm = (HBITMAP)LoadImage(GetModuleHandle(NULL), szBitmap, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);
    if (hbm == NULL) return FALSE;

    DDCopyBitmap(lpDDSOne, hbm, 0, 0,   800, 680);
    DeleteObject(hbm);
	DDSetColorKey(lpDDSOne, RGB(127,127,127));
    return TRUE;
} /* readBMPIntoSurfaces */

// WinMain - initialization, message loop
int PASCAL WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    MSG         msg;
	HWND		hwnd;
	PreButton = ButtonPressed =1;

    lpCmdLine = lpCmdLine;
    hPrevInstance = hPrevInstance;

	hwnd = doInit( hInstance, nCmdShow );
    if( !hwnd ) return FALSE;

    while( GetMessage( &msg, NULL, 0, 0 ) )
    {
	TranslateMessage(&msg);
	DispatchMessage(&msg);
    }

	finiObjects();
    return msg.wParam;
} // WinMain

⌨️ 快捷键说明

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