📄 app.cpp
字号:
//app.cpp
#include <instSprite.h>
#include <instSurfWithDDraw.h>
using namespace inst;
Int32 mousex;
Int32 mousey;
IDirectDraw7 *pddraw;
HWND g_hwnd;
CSurf *pfront;
CSurf *pback;
CLayerMgr *g_pLayerMgr;
CTiledLayer *g_pMap;
CSurf *g_pImage;
CSprite *g_psprA;
CSurf *g_pTiles;
Bool init()
{
if(FAILED(DirectDrawCreateEx(NULL,(VOID**)&pddraw,IID_IDirectDraw7,NULL)))
return FALSE;
if(FAILED(pddraw->SetCooperativeLevel(NULL,DDSCL_NORMAL)))
return FALSE;
CSurf::SetDDraw(pddraw);
IDirectDrawSurface7 *pddsfront;
DDSURFACEDESC2 front_d;
ZeroMemory(&front_d,sizeof(front_d));
front_d.dwSize=sizeof(front_d);
front_d.dwFlags=DDSD_CAPS;
front_d.ddsCaps.dwCaps=DDSCAPS_PRIMARYSURFACE;
pddraw->CreateSurface(&front_d,&pddsfront,null);
pfront=new CSurf(pddsfront);
pddsfront->Release();
pback=new CSurf(640,480); //0-639,0-479
g_pLayerMgr=new CLayerMgr();
g_pLayerMgr->SetViewPort(0,0,640,480);
g_pImage=new CSurf(L"sprA.bmp",0,0);
g_psprA=new CSprite(g_pImage,30,70);
g_psprA->SetFrame(4);
g_pLayerMgr->AddLayer(g_psprA);
g_pImage->SetColorKey(Rgb(0,255,0));
g_pTiles=new CSurf(L"Tiles.bmp",0,0);
g_pMap=new CTiledLayer(10,8,g_pTiles,30,20);
g_pMap->SetCell(0,1,1);
g_pMap->SetCell(0,2,2);
g_pMap->SetX(0);
g_pMap->SetY(0);
g_pLayerMgr->AddLayer(g_pMap);
g_pLayerMgr->PutLayerTop(g_psprA);
return True;
}
void destroy()
{
SafeDel(g_pTiles);
SafeDel(g_pMap);
SafeDel(g_pImage);
SafeDel(g_psprA);
SafeDel(pback);
SafeDel(pfront);
SafeRelease(pddraw);
}
void Render()
{
pback->FillRect(0,0,pback->GetW(),pback->GetH(),Rgb(0,0,0));
g_pLayerMgr->Render(pback,0,0);
POINT pt;
pt.x=pt.y=0;
::ClientToScreen(g_hwnd,&pt);
pfront->Blt( pt.x , pt.y ,pback,0,0,pback->GetW(),pback->GetW(),255,False);
}
Bool MsgLoop()
{
::MSG msg;
ZeroMemory(&msg,sizeof(msg));
if(::PeekMessage(&msg,0,0U,0U,PM_REMOVE))
{
if(msg.message==WM_QUIT)return True;
mousex=msg.pt.x;
mousey=msg.pt.y;
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}else
{
Render();
};
return False;
}
LRESULT WINAPI WinProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)
{
switch(msg)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,msg,wparam,lparam);
}
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR CmdLine,int nShowCmd)
{
WNDCLASSEX wc={sizeof(WNDCLASSEX),CS_CLASSDC,WinProc,0L,0L,
GetModuleHandle(0),0,0,0,0,"instemast",0};
RegisterClassEx(&wc);
g_hwnd=CreateWindow("instemast","abc",WS_OVERLAPPEDWINDOW,100,100,800,600,0,0,wc.hInstance,0);
ShowWindow(g_hwnd,SW_SHOWDEFAULT);
UpdateWindow(g_hwnd);
init();
while(True)
{
if(MsgLoop())break;
}
destroy();
UnregisterClass("instemast",wc.hInstance);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -