共有回帖数 0 个
-
程序名称: CIW版 砖块碰撞
程序作者: CIW_BLUE
实现语言: C++ & Direct7.0
运行模式: 1024*768
因为里面用到了大量图片,如果你想要这个游戏的源代码就留下你的信箱,我会第一时间发给你的.
效果图:

程序代码:
#define INITGUID
#pragma comment(lib, "ddraw.lib" )
#include windows.h
#include ddraw.h
#include cmath
#include cstdlib
#include ctime
#include io.h
#include cstdio
#include "GameDefine.h"
#include "CDDraw.h"
#include "CDInput.h"
#include "DSAndDM.h"
#include "CPlayerInfo.h"
///////////////////// 窗口函数声明 //////////////////////////
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
/////////////////// 游戏循环函数声明 ////////////////////////
void GameInit();
void GameMain();
void GameExit();
void DrawAllBrick();
void MoveBrick();
void IsBrickCollision();
void RecoverPlayer();
void DrawPlayerInfo();
void GetPlayerInput();
//////////////// 变量类型 //////////////////////////
typedef unsigned char UCHAR;
typedef unsigned long ULONG;
typedef unsigned short USHORT;
typedef LPDIRECTDRAWSURFACE7 LPDDSF7;
//////////////// DirectDraw 变量 /////////////////////
LPDIRECTDRAW7 lpDD = NULL;
LPDDSF7 lpDDPrimary= NULL;
LPDDSF7 lpDDBackSurface = NULL;
//////////////////// 游戏常量 ///////////////////////////////
const float MAX_TSPCE_NUM = (const float)0.9; //透明度
const int SCREEN_WIDTH = 1024;
const int SCREEN_HEIGHT = 768;
const int SCREEN_BPP = 32 ;
const int MAX_GAME_CROSS = 3;
const int MAX_BRICK_X = 6;
const int MAX_BRICK_Y = 6;
const int MAX_BRICK_TYPE = 6;
const int MAX_BRICK_GAP = 30;
const int MAX_BRICK_W = 56;
const int MAX_BRICK_H = 34;
const int MAX_BRICK_OFFSET_X = 50;
const int MAX_BRICK_OFFSET_Y = 100;
const int MAX_MAINBRICK_X = (SCREEN_WIDTH1) - 200;
const int MAX_MAINBRICK_Y = (SCREEN_HEIGHT1) + 250;
const int MAX_MAINBRICK_WIDTH = 112;
const int MAX_MAINBRICK_HEIGHT = 16;
const int MAX_MAINBRICK_RISE_HEIGHT = 50;
const int MAX_MOVEBRICK_W = 16;
const int MAX_MOVEBRICK_H = 16;
const int MAX_GAME_MAIN_WIDTH = 540;
const int MAX_GAME_MAIN_HEIGHT = 750;
const int MAX_CROSSINT_ADD_SPEED_X = 5;
const int MAX_CROSSINT_ADD_SPEED_Y = 5;
const int MAX_HORSE_SPEED = 10;
const int GAME_CHOOSE = 1;
const int GAME_START = 2;
const int GAME_END = 3;
const int GAME_FRAME_TIME = 30;
///////// 游戏主要变量 //////////////
CPlayerInfo cPlayerInfo(-5, 10, 5);
CSprite cBg, cGameStart, cGameContinue;
CDSoundAndDMusicInit cDSDMInit;
CDSound cDSound;
CDMusic cDMusic;
CDInput cDInput;
int nBrickWidth[MAX_BRICK_TYPE] = {44, 40, 32, 42, 52, 40};
int nBrickHeight[MAX_BRICK_TYPE] = {38, 41, 42, 38, 31, 44};
int nBrick[MAX_BRICK_X][MAX_BRICK_Y] = { 1, 1, 6, 2, 6, 1,
0, 0, 0, 0, 0, 0,
1, 1, 4, 6, 4, 1,
0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0
};
CSprite cBrick[MAX_BRICK_X][MAX_BRICK_Y]; //砖块
CSprite cMainBrick; //下面的挡板
CSprite cMoveBrick; //移动的挡板
CSprite cMainBg; //背景
BITMAPFILE stBrickBmp[MAX_BRICK_TYPE]; //砖块位图
/////////////// 一般变量 ////////////
HINSTANCE hInst;
HWND hWnd;
DWORD dwNow = 0;
float fTspceNum = 1, bFlag = true;
DDSURFACEDESC2 stDdsd;
int nMempitch = 0;
bool bIsExit = 0;
int nGameState = GAME_CHOOSE;
void GameInit()
{
//////////////////////////////////// 初始化 //////////////////////////////////////
if( DirectDrawCreateEx( NULL, (void**)&lpDD, IID_IDirectDraw7, NULL) != DD_OK )
{
exit( 0 );
}
lpDD-SetCooperativeLevel( hWnd, DDSCL_FULLSCREEN | DDSCL_ALLOWMODEX |
DDSCL_EXCLUSIVE | DDSCL_ALLOWREBOOT );
lpDD-SetDisplayMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, 0, 0);
////////////////////////// 创建 显示表面 //////////////////////////////////////////////
memset( &stDdsd, 0, sizeof( DDSURFACEDESC2 ) );
stDdsd.dwSize = sizeof( DDSURFACEDESC2 ) ;
stDdsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
stDdsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_COMPLEX | DDSCAPS_FLIP ;
stDdsd.dwBackBufferCount = 1;
lpDD-CreateSurface( &stDdsd, &lpDDPrimary, NULL );
stDdsd.ddsCaps.dwCaps = DDSCAPS_BACKBUFFER ;
lpDDPrimary-GetAttachedSurface( &stDdsd.ddsCaps, &lpDDBackSurface);
//////////////////////////////////////////////////////////////////////////////////////
//////////////////////////// 上锁显示表面的内存 //////////////////////////////////////////
DDSURFACEDESC2 stDdsd;
memset( &stDdsd, 0, sizeof( DDSURFACEDESC2 ) );
stDdsd.dwSize = sizeof( DDSURFACEDESC2 );
lpDDPrimary-Lock( NULL, &stDdsd, DDLOCK_SURFACEMEMORYPTR | DDLOCK_WAIT, NULL );
nMempitch = stDdsd.lPitch;
lpDDPrimary-Unlock( NULL );
srand( time(0) );
/////////////////////////////////////////////////////////////////////////////////////
cBg.InitSprite( "Data\Picture\Bg.bmp", 1, 357, 483, MAX_GAME_MAIN_WIDTH + 80,
(SCREEN_HEIGHT1)-300 );
cBg.SetExist( true );
cGameStart.InitSprite( "Data\Picture\GameStart.bmp", 1, 448, 280, (SCREEN_WIDTH1) - 450,
(SCREEN_HEIGHT1) - 100 );
cGameStart.SetExist( true );
cGameContinue.InitSprite( "Data\Picture\Continue.bmp", 1, 312, 317, (SCREEN_WIDTH1) - 450,
(SCREEN_HEIGHT1) - 100);
cGameContinue.SetExist( true );
cMainBg.InitSprite( "Data\Picture\GameBg.bmp", 1, 576, 739);
cMainBg.SetExist( true );
//CloseWindow( hWnd );
///////////////////////// 初始化 cBrick /////////////////////////////////////
LoadBitmapFile( "Data\Picture\Brick_1.bmp", &stBrickBmp[0] );
LoadBitmapFile( "Data\Picture\Brick_2.bmp", &stBrickBmp[1] );
LoadBitmapFile( "Data\Picture\Brick_3.bmp", &stBrickBmp[2] );
LoadBitmapFile( "Data\Picture\Brick_4.bmp", &stBrickBmp[3] );
LoadBitmapFile( "Data\Picture\Brick_5.bmp", &stBrickBmp[4] );
LoadBitmapFile( "Data\Picture\Brick_6.bmp", &stBrickBmp[5] );
for( int i = 0; i MAX_BRICK_Y; i++)
{
for( int j = 0; j MAX_BRICK_X; j++)
{
if( nBrick[j] 0 )
{
cBrick[j].InitSprite( stBrickBmp[nBrick[j] - 1], 1, nBrickWidth[nBrick[j] - 1],
nBrickHeight[nBrick[j] - 1],
MAX_BRICK_OFFSET_X + j * (MAX_BRICK_W + MAX_BRICK_GAP) ,
MAX_BRICK_OFFSET_Y + i * (MAX_BRICK_H + MAX_BRICK_GAP),
0, 0, 0, 0 );
cBrick[j].SetExist( true );
cBrick[j].SetSpriteState( nBrick[j] ); //挡板的硬度
cBrick[j].SetTspceNum( MAX_TSPCE_NUM );
}
}
}
cMainBrick.InitSprite( "Data\Picture\MainBrick.bmp", 1, MAX_MAINBRICK_WIDTH, MAX_MAINBRICK_HEIGHT, MAX_MAINBRICK_X, MAX_MAINBRICK_Y,
0, 0, cPlayerInfo.GetBrickMainMoveSpeed(), cPlayerInfo.GetBrickMainMoveSpeed() );
cMainBrick.SetExist( true );
cMoveBrick.InitSprite( "Data\Picture\MoveBrick.bmp", 4, MAX_MOVEBRICK_W, MAX_MOVEBRICK_H, MAX_MAINBRICK_X + 40 , MAX_MAINBRICK_Y - 20,
0, 0, cPlayerInfo.GetBrickMoveSpeed(), cPlayerInfo.GetBrickMoveSpeed() );
cMoveBrick.SetExist( true );
cMoveBrick.SetUpdateTime( 2 );
cMainBrick.SetTspceNum( MAX_TSPCE_NUM );
cMoveBrick.SetTspceNum( MAX_TSPCE_NUM );
cBg.SetTspceNum( MAX_TSPCE_NUM );
cGameContinue.SetTspceNum( MAX_TSPCE_NUM );
cGameStart.SetTspceNum( MAX_TSPCE_NUM );
cGameStart.SetSpriteVX( 10 );
cGameStart.SetSpriteVY( 10 );
cGameContinue.SetSpriteVX( 10 );
cGameContinue.SetSpriteVY( 10 );
/////////////////////////////////////////////////////////////////////////////////////
///////////////////////// 初始化 cDInput CDSound CDMusic/////////////////////////////
cDInput.InitDInput( hInst, hWnd );
cDSDMInit.InitDSoundAndDMusic( hWnd );
cDSound.InitDSound( cDSDMInit.GetDSoundInfo() );
cDMusic.InitDMusic( cDSDMInit.GetDMusicInfo() );
cDSound.AddWavFile( "Data\Sound\Wave\GameOver.wav" );
cDSound.AddWavFile( "Data\Sound\Wave\Eat.wav" );
cDSound.AddWavFile( "Data\Sound\Wave\Jump.WAV" );
cDSound.AddWavFile( "Data\Sound\Wave\Collision.wav" );
cDSound.AddWavFile( "Data\Sound\Wave\Break.WAV" );
cDMusic.AddMidiFile( "Data\Sound\Midi\1.mid" );
cDMusic.PlayMidiWithIndex( 0, 1);
cPlayerInfo.SetIsDie( true );
}
void DrawAllBrick()
{
if( cPlayerInfo.GettIsFirstEnterGame() )
{
cGameStart.DrawSprite();
return ;
}
if( cPlayerInfo.GetIsDie() )
{
cGameContinue.DrawSprite();
return ;
}
for( int i = 0; i MAX_BRICK_Y; i++)
{
for( int j = 0; j MAX_BRICK_X; j++)
{
if( cBrick[j].GetExist() )
{
cBrick[j].DrawSprite();
}
}
}
cBg.DrawSprite();
DrawPlayerInfo(); //显示玩家信息
cMainBg.DrawSprite();
cMainBrick.DrawSprite();
cMoveBrick.DrawSprite();
}
void MoveBrick()
{
if( cPlayerInfo.GettIsFirstEnterGame() )
{
cGameStart.MoveSprite();
if( cGameStart.GetSpriteX() = MAX_GAME_MAIN_WIDTH - cGameStart.GetSpriteWidth() - 10|| cGameStart.GetSpriteX() = 10 )
cGameStart.SetSpriteVX( -cGameStart.GetSpriteVX() );
if( cGameStart.GetSpriteY() = MAX_GAME_MAIN_HEIGHT - cGameStart.GetSpriteHeight() - 10|| cGameStart.GetSpriteY() = 60 )
cGameStart.SetSpriteVY( -cGameStart.GetSpriteVY() );
cGameStart.SetTspceNum( fTspceNum );
if( bFlag )
{
fTspceNum -= (const float)0.01;
if( fTspceNum 0.01)
bFlag = false;
}
else
{
fTspceNum += (const float)0.01;
if((int)fTspceNum 0.91 )
bFlag = true;
}
return ;
}
if( cPlayerInfo.GetIsDie() )
{
cGameContinue.MoveSprite();
if( cGameContinue.GetSpriteX() = MAX_GAME_MAIN_WIDTH - cGameContinue.GetSpriteWidth() - 10|| cGameContinue.GetSpriteX() = 10 )
cGameContinue.SetSpriteVX( -cGameContinue.GetSpriteVX() );
if( cGameContinue.GetSpriteY() = MAX_GAME_MAIN_HEIGHT - cGameContinue.GetSpriteHeight() - 10|| cGameContinue.GetSpriteY() = 10 )
cGameContinue.SetSpriteVY( -cGameContinue.GetSpriteVY() );
cGameContinue.SetTspceNum( fTspceNum );
if( bFlag )
{
fTspceNum -= (const float)0.01;
if( fTspceNum (const float)0.01)
bFlag = false;
}
else
{
fTspceNum += (const float)0.01;
if((int)fTspceNum (const float)0.91 )
bFlag = true;
}
return ;
}
if( cDInput.GetKeyboardState( DIK_LEFT ) && cMainBrick.GetSpriteX() - cPlayerInfo.GetBrickMainMoveSpeed() - 12 0 )
{
cMainBrick.AddSpriteX(-abs(cMainBrick.GetSpriteVX()));
if( cPlayerInfo.GetIsDie() )
{
cMoveBrick.AddSpriteX( -abs(cMainBrick.GetSpriteVX()) );
}
}
else if( cDInput.GetKeyboardState( DIK_RIGHT ) && cMainBrick.GetSpriteX() + cMainBrick.GetSpriteWidth() + 10 = MAX_GAME_MAIN_WIDTH )
{
cMainBrick.AddSpriteX(abs(cMainBrick.GetSpriteVX()));
if( cPlayerInfo.GetIsDie() )
{
cMoveBrick.AddSpriteX( abs(cMainBrick.GetSpriteVX()) );
}
}
else if( cDInput.GetKeyboardState( DIK_DOWN ) && cMainBrick.GetSpriteY() = MAX_MAINBRICK_RISE_HEIGHT + MAX_MAINBRICK_Y )
{
cMainBrick.AddSpriteY(abs(cMainBrick.GetSpriteVY()));
}
else if( cDInput.GetKeyboardState( DIK_UP ) && cMainBrick.GetSpriteY() = MAX_MAINBRICK_Y - MAX_MAINBRICK_RISE_HEIGHT )
{
cMainBrick.AddSpriteY(-abs(cMainBrick.GetSpriteVY()));
}
if( cMoveBrick.GetSpriteX() = MAX_GAME_MAIN_WIDTH || cMoveBrick.GetSpriteX() = 15 )
{
cMoveBrick.SetSpriteVX( -cMoveBrick.GetSpriteVX() );
}
if( cMoveBrick.GetSpriteY() = 70 )
{
cMoveBrick.SetSpriteVY( -cMoveBrick.GetSpriteVY() );
}
cMoveBrick.AddFrame();
if( !cPlayerInfo.GetIsDie() )
cMoveBrick.MoveSprite();
}
void IsBrickCollision()
{
int nNotExistBrickNum = 0;
for( int i = 0; i MAX_BRICK_Y; i++)
{
for( int j = 0; j MAX_BRICK_X; j++)
{
if( cBrick[j].GetExist() )
{
if( cMoveBrick.CollisionForRect( *cBrick[j].GetRect() ) ) //发生碰撞
{
cBrick[j].SetTspceNum( cBrick[j].GetTspceNum()-0.15 );
cDSound.StopAllWav();
cDSound.PlayWavWithIndex( 3, 0 );
cBrick[j].SetSpriteState( cBrick[j].GetSpriteState() - 1 );
if( cBrick[j].GetSpriteState() == 0 ) //消失
{
cBrick[j].SetExist( false ); //砖块撞掉了
cPlayerInfo.SetScore( cPlayerInfo.GetScore() + (nBrick[j]) * 10);
}
POINT pt[4];
pt[0].x = cBrick[j].GetRect()-left;
pt[0].y = cBrick[j].GetRect()-top;
pt[1].x = cBrick[j].GetRect()-right;
pt[1].y = cBrick[j].GetRect()-top;
pt[2].x = cBrick[j].GetRect()-right;
pt[2].y = cBrick[j].GetRect()-bottom;
pt[3].x = cBrick[j].GetRect()-left;
pt[3].y = cBrick[j].GetRect()-bottom;
if( cMoveBrick.CollisoinForSegment( pt[0], pt[1] ) )
{
cMoveBrick.SetSpriteVY( -cMoveBrick.GetSpriteVY() ) ;
}
else if( cMoveBrick.CollisoinForSegment( pt[1], pt[2] ) )
{
cMoveBrick.SetSpriteVX( -cMoveBrick.GetSpriteVY() ) ;
}
else if( cMoveBrick.CollisoinForSegment( pt[3], pt[2] ) )
{
cMoveBrick.SetSpriteVY( -cMoveBrick.GetSpriteVY() ) ;
}
else if( cMoveBrick.CollisoinForSegment( pt[0], pt[0] ) )
{
cMoveBrick.SetSpriteVX( -cMoveBrick.GetSpriteVX() ) ;
}
}
nNotExistBrickNum ++;
}
}
}
//挡板全部完了
if( !nNotExistBrickNum )
{
if( cPlayerInfo.GetCross() MAX_GAME_CROSS )
{
cPlayerInfo.SetCross( cPlayerInfo.GetCross() + 1 );
}
for( int i = 0; i MAX_BRICK_Y; i++)
{
for( int j = 0; j MAX_BRICK_X; j++)
{
if( nBrick[j] 0 )
{
cBrick[j].SetTspceNum( 1 );
cBrick[j].SetExist( true );
cBrick[j].SetSpriteState( nBrick[j] );
cBrick[j].SetSpriteVX( cBrick[j].GetSpriteVX() + MAX_CROSSINT_ADD_SPEED_X );
cBrick[j].SetSpriteVY( cBrick[j].GetSpriteVY() + MAX_CROSSINT_ADD_SPEED_Y );
}
}
}
}
if( cMoveBrick.GetSpriteY() = MAX_GAME_MAIN_HEIGHT && !cPlayerInfo.GetIsDie() )
{
if( cPlayerInfo.GetLife() == 0) //Game Over
{
}
cPlayerInfo.SetLife( cPlayerInfo.GetLife() - 1 );
cMoveBrick.SetSpriteX( cMainBrick.GetSpriteX() + 40 );
cMoveBrick.SetSpriteY( cMainBrick.GetSpriteY() - 20 );
cPlayerInfo.SetIsDie( true );
}
POINT pt[2] = { {cMainBrick.GetRect()-left, cMainBrick.GetRect()-top}, {cMainBrick.GetRect()-right, cMainBrick.GetRect()-top} };
if( cMoveBrick.CollisoinForSegment(pt[0], pt[1] ) )
{
cDSound.StopAllWav();
cDSound.PlayWavWithFileName( "Data\Sound\Wave\Jump.wav", 0);
cMoveBrick.SetSpriteVY( -abs(cMoveBrick.GetSpriteVY()) );
int nMainBrickCenter = cMainBrick.GetSpriteX() + (cMainBrick.GetSpriteWidth()1);
int nMoveBrickX = cMoveBrick.GetSpriteX();//+ (cMoveBrick.GetSpriteWidth()1);
if( cMoveBrick.GetSpriteVX() 0 )
nMoveBrickX += cMoveBrick.GetSpriteWidth();
if( nMoveBrickX nMainBrickCenter )
cMoveBrick.SetSpriteVX( abs(cMoveBrick.GetSpriteVX()) );
else if( nMoveBrickX nMainBrickCenter )
cMoveBrick.SetSpriteVX( -abs(cMoveBrick.GetSpriteVX()) );
}
}
void RecoverPlayer()
{
if( cPlayerInfo.GetIsDie() )
{
if( cDInput.GetKeyboardState( DIK_SPACE ) && cPlayerInfo.GetLife() 0)
{
cMoveBrick.SetSpriteVY( -abs(cMoveBrick.GetSpriteVY()) );
cMoveBrick.SetSpriteX( cMainBrick.GetSpriteX() + 40 );
cMoveBrick.SetSpriteY( cMainBrick.GetSpriteY() - 20 );
cPlayerInfo.SetIsDie( false );
}
}
}
void DrawPlayerInfo()
{
char szText[100];
sprintf( szText, "Score:%d", cPlayerInfo.GetScore() );
DrawText( lpDDBackSurface, szText, 23, 33, RGB(100, 200, 256) );
sprintf( szText, "Level:%d", cPlayerInfo.GetCross() );
DrawText( lpDDBackSurface, szText, 495, 30, RGB(100, 200, 256) );
}
void GetPlayerInput()
{
if( cDInput.GetKeyboardState( DIK_SPACE ) && cPlayerInfo.GettIsFirstEnterGame() )
{
cPlayerInfo.SettIsFirstEnterGame( false );
}
}
void GameMain()
{
if( bIsExit )
return;
if( KEYDOWN(VK_ESCAPE) )
{
bIsExit = 1;
PostMessage( hWnd, WM_CLOSE, 0, 0 );
}
dwNow = GetTickCount();
FillSurface( lpDDBackSurface, 0 );
cDInput.GetKeyboardEvent();
GetPlayerInput();
DrawAllBrick(); //渲染所有砖块
MoveBrick(); //移动挡板
IsBrickCollision(); //是否发生碰撞
RecoverPlayer(); //玩家是否Over
while( GetTickCount() - dwNow = GAME_FRAME_TIME );
while( FAILED(lpDDPrimary-Flip( NULL, DDFLIP_WAIT )));
}
void GameExit()
{
for(int i =0; i MAX_BRICK_TYPE; i++)
ReleaseBitmapFile( &stBrickBmp );
if( lpDDBackSurface )
lpDDBackSurface-Release();
if( lpDDPrimary )
lpDDPrimary-Release();
if( lpDD )
lpDD-Release();
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
MyRegisterClass(hInstance);
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}
GameInit();
while(TRUE)
{
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
if (msg.message == WM_QUIT)
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
GameMain();
}
GameExit();
return msg.wParam;
}
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = NULL;
wcex.hCursor = NULL;
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = "CIW";
wcex.hIconSm = NULL;
return RegisterClassEx(&wcex);
}
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
hInst = hInstance;
hWnd = CreateWindow("CIW", "CIW" , WS_POPUP | WS_VISIBLE,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
if (!hWnd)
{
return FALSE;
}
MoveWindow(hWnd,10,10,640,480,true);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
break;
case WM_CLOSE:
ExitProcess( 0 );
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
完了
楼主 2016-06-09 16:53 回复
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
意见反馈 |
关于直线 |
版权声明 |
会员须知