Initial commit: ROW Client source code

Game client codebase including:
- CharacterActionControl: Character and creature management
- GlobalScript: Network, items, skills, quests, utilities
- RYLClient: Main client application with GUI and event handlers
- Engine: 3D rendering engine (RYLGL)
- MemoryManager: Custom memory allocation
- Library: Third-party dependencies (DirectX, boost, etc.)
- Tools: Development utilities

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-29 16:24:34 +09:00
commit e067522598
5135 changed files with 1745744 additions and 0 deletions

View File

@@ -0,0 +1,551 @@
//-----------------------------------------------------------------------------
// File: DirectSurfaceWrite.cpp
//
// Desc: This sample demonstrates how to animate sprites using
// DirectDraw. The samples runs in full-screen mode. Pressing any
// key will exit the sample.
//
// Copyright (c) 1999-2001 Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
#define STRICT
#include <windows.h>
#include <ddraw.h>
#include <mmsystem.h>
#include "resource.h"
#include "ddutil.h"
//-----------------------------------------------------------------------------
// Defines, constants, and global variables
//-----------------------------------------------------------------------------
#define SAFE_DELETE(p) { if(p) { delete (p); (p)=NULL; } }
#define SAFE_RELEASE(p) { if(p) { (p)->Release(); (p)=NULL; } }
#define SCREEN_WIDTH 640
#define SCREEN_HEIGHT 480
#define SCREEN_BPP 16
#define SPRITE_DIAMETER 250
#define NUM_SPRITES 5
#define HELPTEXT TEXT("Press Escape to quit.")
struct SPRITE_STRUCT
{
FLOAT fPosX;
FLOAT fPosY;
FLOAT fVelX;
FLOAT fVelY;
};
CDisplay* g_pDisplay = NULL;
CSurface* g_pSpriteSurface = NULL;
CSurface* g_pTextSurface = NULL;
RECT g_rcViewport;
RECT g_rcScreen;
BOOL g_bActive = FALSE;
DWORD g_dwLastTick;
SPRITE_STRUCT g_Sprite[NUM_SPRITES];
//-----------------------------------------------------------------------------
// Function-prototypes
//-----------------------------------------------------------------------------
LRESULT CALLBACK MainWndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam );
HRESULT WinInit( HINSTANCE hInst, int nCmdShow, HWND* phWnd, HACCEL* phAccel );
HRESULT InitDirectDraw( HWND hWnd );
HRESULT DrawSprite();
VOID FreeDirectDraw();
HRESULT ProcessNextFrame();
VOID UpdateSprite( SPRITE_STRUCT* pSprite, FLOAT fTimeDelta );
HRESULT DisplayFrame();
HRESULT RestoreSurfaces();
//-----------------------------------------------------------------------------
// 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;
HACCEL hAccel;
ZeroMemory( &g_Sprite, sizeof(SPRITE_STRUCT) * NUM_SPRITES );
srand( GetTickCount() );
if( FAILED( WinInit( hInst, nCmdShow, &hWnd, &hAccel ) ) )
return FALSE;
if( FAILED( InitDirectDraw( hWnd ) ) )
{
SAFE_DELETE( g_pDisplay );
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
if( 0 == TranslateAccelerator( hWnd, hAccel, &msg ) )
{
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();
}
}
}
}
//-----------------------------------------------------------------------------
// Name: WinInit()
// Desc: Init the window
//-----------------------------------------------------------------------------
HRESULT WinInit( HINSTANCE hInst, int nCmdShow, HWND* phWnd, HACCEL* phAccel )
{
WNDCLASS wc;
HWND hWnd;
HACCEL hAccel;
// Register the Window Class
wc.lpszClassName = TEXT("DirectSurfaceWrite");
wc.lpfnWndProc = MainWndProc;
wc.style = CS_VREDRAW | CS_HREDRAW;
wc.hInstance = hInst;
wc.hIcon = LoadIcon( hInst, MAKEINTRESOURCE(IDI_MAIN) );
wc.hCursor = LoadCursor( NULL, IDC_ARROW );
wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);
wc.lpszMenuName = NULL;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
if( RegisterClass( &wc ) == 0 )
return E_FAIL;
// Load keyboard accelerators
hAccel = LoadAccelerators( hInst, MAKEINTRESOURCE(IDR_MAIN_ACCEL) );
// Create and show the main window
hWnd = CreateWindowEx( 0, TEXT("DirectSurfaceWrite"), TEXT("DirectDraw DirectSurfaceWrite Sample"),
WS_POPUP, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInst, NULL );
if( hWnd == NULL )
return E_FAIL;
ShowWindow( hWnd, nCmdShow );
UpdateWindow( hWnd );
*phWnd = hWnd;
*phAccel = hAccel;
return S_OK;
}
//-----------------------------------------------------------------------------
// Name: InitDirectDraw()
// Desc: Create the DirectDraw object, and init the surfaces
//-----------------------------------------------------------------------------
HRESULT InitDirectDraw( HWND hWnd )
{
HRESULT hr;
g_pDisplay = new CDisplay();
if( FAILED( hr = g_pDisplay->CreateFullScreenDisplay( hWnd, SCREEN_WIDTH,
SCREEN_HEIGHT, SCREEN_BPP ) ) )
{
MessageBox( hWnd, TEXT("This display card does not support 640x480x8. "),
TEXT("DirectDraw Sample"), MB_ICONERROR | MB_OK );
return hr;
}
// Create a DirectDrawSurface for this bitmap
if( FAILED( hr = g_pDisplay->CreateSurface( &g_pSpriteSurface, SPRITE_DIAMETER, SPRITE_DIAMETER ) ) )
return hr;
if( FAILED( hr = DrawSprite() ) )
return hr;
// Create a surface, and draw text to it.
if( FAILED( hr = g_pDisplay->CreateSurfaceFromText( &g_pTextSurface, NULL, HELPTEXT,
RGB(0,0,0), RGB(255, 255, 0) ) ) )
return hr;
// Init all the sprites. All of these sprites using the
// same g_pDDSAnimationSheet surface, but depending on the
// sprite's lFrame value, it indexes a different rect on the
// surface.
for( int iSprite = 0; iSprite < NUM_SPRITES; iSprite++ )
{
// Set the sprite's position and velocity
g_Sprite[iSprite].fPosX = (float) (rand() % SCREEN_WIDTH);
g_Sprite[iSprite].fPosY = (float) (rand() % SCREEN_HEIGHT);
g_Sprite[iSprite].fVelX = 500.0f * rand() / RAND_MAX - 250.0f;
g_Sprite[iSprite].fVelY = 500.0f * rand() / RAND_MAX - 250.0f;
}
return S_OK;
}
//-----------------------------------------------------------------------------
// Name: DrawSprite()
// Desc: Draws a pattern of colors to a DirectDraw surface by directly writing
// to the surface memory. This function was designed to work only in
// 16-bit color.
//-----------------------------------------------------------------------------
HRESULT DrawSprite()
{
DDSURFACEDESC2 ddsd;
HRESULT hr;
DWORD dwShift;
DWORD dwBits;
DWORD dwRed;
DWORD dwGreen;
DWORD dwBlue;
FLOAT fPercentX;
FLOAT fPercentY;
FLOAT fPercentXY;
LPDIRECTDRAWSURFACE7 pDDS = g_pSpriteSurface->GetDDrawSurface();
ZeroMemory( &ddsd,sizeof(ddsd) );
ddsd.dwSize = sizeof(ddsd);
// Lock the surface to directly write to the surface memory
if( FAILED( hr = pDDS->Lock( NULL, &ddsd, DDLOCK_WAIT, NULL ) ) )
return hr;
// Get a pointer into the memory starting at ddsd.lpSurface. Cast this pointer to a
// 16-bit WORD since we are in 16 bit color, so each pixel has 16 bits of color information.
WORD* pDDSColor = (WORD*) ddsd.lpSurface;
for( DWORD iY = 0; iY < ddsd.dwHeight; iY++ )
{
for( DWORD iX = 0; iX < ddsd.dwWidth; iX++ )
{
// Figure out the red component as a function of the Y location of the pixel
CSurface::GetBitMaskInfo( ddsd.ddpfPixelFormat.dwRBitMask, &dwShift, &dwBits );
fPercentY = (float) abs( ddsd.dwHeight / 2 - iY ) / (float) ( ddsd.dwHeight / 2 ) + 0.25f;
if( fPercentY > 1.00f )
fPercentY = 1.00f;
dwRed = (DWORD) ( (ddsd.ddpfPixelFormat.dwRBitMask >> dwShift) * fPercentY) << dwShift;
// Figure out the green component as a function of the X location of the pixel
CSurface::GetBitMaskInfo( ddsd.ddpfPixelFormat.dwGBitMask, &dwShift, &dwBits );
fPercentX = (float) abs( ddsd.dwWidth / 2 - iX ) / (float) ( ddsd.dwWidth / 2 ) + 0.25f;
if( fPercentX > 1.00f )
fPercentX = 1.00f;
dwGreen = (DWORD) ( (ddsd.ddpfPixelFormat.dwGBitMask >> dwShift) * fPercentX) << dwShift;
// Figure out the blue component as a function of the X and Y location of the pixel
CSurface::GetBitMaskInfo( ddsd.ddpfPixelFormat.dwBBitMask, &dwShift, &dwBits );
fPercentX = (float) abs( ddsd.dwWidth / 2 - iX ) / (float) ( ddsd.dwWidth / 4 );
fPercentX = 1.0f - fPercentX * fPercentX;
fPercentY = (float) abs( ddsd.dwHeight / 2 - iY ) / (float) ( ddsd.dwHeight / 4 );
fPercentY = 1.0f - fPercentY * fPercentY;
fPercentXY = fPercentX + fPercentY;
if( fPercentXY > 1.0f )
fPercentXY = 1.0f;
if( fPercentXY < 0.0f )
fPercentXY = 0.0f;
dwBlue = (DWORD) ( (ddsd.ddpfPixelFormat.dwBBitMask >> dwShift) * fPercentXY ) << dwShift;
// Make the dwDDSColor by combining all the color components
*pDDSColor = (WORD) ( dwRed | dwGreen | dwBlue );
// Advance the surface pointer by 16 bits (one pixel)
pDDSColor++;
}
// Multiply ddsd.lPitch by iY to figure out offset needed to access
// the next scan line on the surface.
pDDSColor = (WORD*) ( (BYTE*) ddsd.lpSurface + ( iY + 1 ) * ddsd.lPitch );
}
// Unlock the surface
pDDS->Unlock(NULL);
return S_OK;
}
//-----------------------------------------------------------------------------
// Name: FreeDirectDraw()
// Desc: Release all the DirectDraw objects
//-----------------------------------------------------------------------------
VOID FreeDirectDraw()
{
SAFE_DELETE( g_pSpriteSurface );
SAFE_DELETE( g_pTextSurface );
SAFE_DELETE( g_pDisplay );
}
//-----------------------------------------------------------------------------
// Name: MainWndProc()
// Desc: The main window procedure
//-----------------------------------------------------------------------------
LRESULT CALLBACK MainWndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
switch (msg)
{
case WM_COMMAND:
switch( LOWORD(wParam) )
{
case IDM_EXIT:
// Received key/menu command to exit app
PostMessage( hWnd, WM_CLOSE, 0, 0 );
return 0L;
}
break; // Continue with default processing
case WM_SETCURSOR:
// Hide the cursor in fullscreen
SetCursor( NULL );
return TRUE;
case WM_SIZE:
// Check to see if we are losing our window...
if( SIZE_MAXHIDE==wParam || SIZE_MINIMIZED==wParam )
g_bActive = FALSE;
else
g_bActive = TRUE;
break;
case WM_EXITMENULOOP:
// Ignore time spent in menu
g_dwLastTick = timeGetTime();
break;
case WM_EXITSIZEMOVE:
// Ignore time spent resizing
g_dwLastTick = timeGetTime();
break;
case WM_SYSCOMMAND:
// Prevent moving/sizing and power loss in fullscreen mode
switch( wParam )
{
case SC_MOVE:
case SC_SIZE:
case SC_MAXIMIZE:
case SC_MONITORPOWER:
return TRUE;
}
break;
case WM_DESTROY:
// Cleanup and close the app
FreeDirectDraw();
PostQuitMessage( 0 );
return 0L;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
//-----------------------------------------------------------------------------
// Name: ProcessNextFrame()
// Desc: Move the sprites, blt them to the back buffer, then
// flips the back buffer to the primary buffer
//-----------------------------------------------------------------------------
HRESULT ProcessNextFrame()
{
HRESULT hr;
// Figure how much time has passed since the last time
DWORD dwCurrTick = timeGetTime();
DWORD dwTickDiff = dwCurrTick - g_dwLastTick;
// Don't update if no time has passed
if( dwTickDiff == 0 )
return S_OK;
g_dwLastTick = dwCurrTick;
// Update the sprites according to how much time has passed
for( int iSprite = 0; iSprite < NUM_SPRITES; iSprite++ )
UpdateSprite( &g_Sprite[ iSprite ], dwTickDiff / 1000.0f );
// Display the sprites on the screen
if( FAILED( hr = DisplayFrame() ) )
{
if( hr != DDERR_SURFACELOST )
return hr;
// The surfaces were lost so restore them
RestoreSurfaces();
}
return S_OK;
}
//-----------------------------------------------------------------------------
// Name: UpdateSprite()
// Desc: Moves and bounces the sprite based on how much time has passed.
// It also changes the sprite state based on random values it gets
// from the array g_lRandTable
//-----------------------------------------------------------------------------
VOID UpdateSprite( SPRITE_STRUCT* pSprite, FLOAT fTimeDelta )
{
// Update the sprite position
pSprite->fPosX += pSprite->fVelX * fTimeDelta;
pSprite->fPosY += pSprite->fVelY * fTimeDelta;
// Clip the position, and bounce if it hits the edge
if( pSprite->fPosX < 0.0f )
{
pSprite->fPosX = 0;
pSprite->fVelX = -pSprite->fVelX;
}
if( pSprite->fPosX >= SCREEN_WIDTH - SPRITE_DIAMETER )
{
pSprite->fPosX = SCREEN_WIDTH - 1 - SPRITE_DIAMETER;
pSprite->fVelX = -pSprite->fVelX;
}
if( pSprite->fPosY < 0 )
{
pSprite->fPosY = 0;
pSprite->fVelY = -pSprite->fVelY;
}
if( pSprite->fPosY > SCREEN_HEIGHT - SPRITE_DIAMETER )
{
pSprite->fPosY = SCREEN_HEIGHT - 1 - SPRITE_DIAMETER;
pSprite->fVelY = -pSprite->fVelY;
}
}
//-----------------------------------------------------------------------------
// Name: DisplayFrame()
// Desc: Blts a the sprites to the back buffer, then flips the
// back buffer onto the primary buffer.
//-----------------------------------------------------------------------------
HRESULT DisplayFrame()
{
HRESULT hr;
// Fill the back buffer with black, ignoring errors until the flip
g_pDisplay->Clear( 0 );
// Blt the help text on the backbuffer, ignoring errors until the flip
g_pDisplay->Blt( 10, 10, g_pTextSurface, NULL );
// Blt all the sprites onto the back buffer using color keying,
// ignoring errors until the flip. Note that all of these sprites
// use the same DirectDraw surface.
for( int iSprite = 0; iSprite < NUM_SPRITES; iSprite++ )
{
g_pDisplay->Blt( (DWORD)g_Sprite[iSprite].fPosX,
(DWORD)g_Sprite[iSprite].fPosY,
g_pSpriteSurface, NULL );
}
// We are in fullscreen mode, so perform a flip and return
// any errors like DDERR_SURFACELOST
if( FAILED( hr = g_pDisplay->Present() ) )
return hr;
return S_OK;
}
//-----------------------------------------------------------------------------
// Name: RestoreSurfaces()
// Desc: Restore all the surfaces, and redraw the sprite surfaces.
//-----------------------------------------------------------------------------
HRESULT RestoreSurfaces()
{
HRESULT hr;
if( FAILED( hr = g_pDisplay->GetDirectDraw()->RestoreAllSurfaces() ) )
return hr;
// No need to re-create the surface, just re-draw it.
if( FAILED( hr = g_pTextSurface->DrawText( NULL, HELPTEXT,
0, 0, RGB(0,0,0), RGB(255, 255, 0) ) ) )
return hr;
// No need to re-create the surface, just re-draw it.
if( FAILED( hr = DrawSprite() ) )
return hr;
return S_OK;
}

View File

@@ -0,0 +1,147 @@
# Microsoft Developer Studio Project File - Name="DirectSurfaceWrite" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Application" 0x0101
CFG=DirectSurfaceWrite - Win32 Release
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "directsurfacewrite.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "directsurfacewrite.mak" CFG="DirectSurfaceWrite - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "DirectSurfaceWrite - Win32 Release" (based on "Win32 (x86) Application")
!MESSAGE "DirectSurfaceWrite - Win32 Debug" (based on "Win32 (x86) Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
!IF "$(CFG)" == "DirectSurfaceWrite - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir ".\Release"
# PROP BASE Intermediate_Dir ".\Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir ".\Release"
# PROP Intermediate_Dir ".\Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /W3 /GX /O2 /I "..\common" /I "..\..\common\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /machine:I386
# ADD LINK32 dxguid.lib winmm.lib dxerr8.lib ddraw.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /machine:I386 /stack:0x200000,0x200000
!ELSEIF "$(CFG)" == "DirectSurfaceWrite - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir ".\Debug"
# PROP BASE Intermediate_Dir ".\Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir ".\Debug"
# PROP Intermediate_Dir ".\Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\common\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /debug /machine:I386
# ADD LINK32 winmm.lib dxguid.lib dxerr8.lib ddraw.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /debug /machine:I386 /stack:0x200000,0x200000
!ENDIF
# Begin Target
# Name "DirectSurfaceWrite - Win32 Release"
# Name "DirectSurfaceWrite - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"
# Begin Source File
SOURCE=.\DirectSurfaceWrite.cpp
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
# Begin Source File
SOURCE=.\animate.bmp
# End Source File
# Begin Source File
SOURCE=.\DirectSurfaceWrite.rc
# End Source File
# Begin Source File
SOURCE=.\directx.bmp
# End Source File
# Begin Source File
SOURCE=.\DirectX.ico
# End Source File
# Begin Source File
SOURCE=.\resource.h
# End Source File
# End Group
# Begin Group "Common"
# PROP Default_Filter ""
# Begin Source File
SOURCE=..\..\common\src\ddutil.cpp
# End Source File
# Begin Source File
SOURCE=..\..\common\include\ddutil.h
# End Source File
# Begin Source File
SOURCE=..\..\common\src\dxutil.cpp
# End Source File
# Begin Source File
SOURCE=..\..\common\include\dxutil.h
# End Source File
# End Group
# Begin Source File
SOURCE=.\readme.txt
# End Source File
# End Target
# End Project

View File

@@ -0,0 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "DirectSurfaceWrite"=.\directsurfacewrite.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

View File

@@ -0,0 +1,221 @@
# Microsoft Developer Studio Generated NMAKE File, Based on directsurfacewrite.dsp
!IF "$(CFG)" == ""
CFG=DirectSurfaceWrite - Win32 Release
!MESSAGE No configuration specified. Defaulting to DirectSurfaceWrite - Win32 Release.
!ENDIF
!IF "$(CFG)" != "DirectSurfaceWrite - Win32 Release" && "$(CFG)" != "DirectSurfaceWrite - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "directsurfacewrite.mak" CFG="DirectSurfaceWrite - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "DirectSurfaceWrite - Win32 Release" (based on "Win32 (x86) Application")
!MESSAGE "DirectSurfaceWrite - Win32 Debug" (based on "Win32 (x86) Application")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
!IF "$(CFG)" == "DirectSurfaceWrite - Win32 Release"
OUTDIR=.\Release
INTDIR=.\Release
# Begin Custom Macros
OutDir=.\Release
# End Custom Macros
ALL : "$(OUTDIR)\directsurfacewrite.exe"
CLEAN :
-@erase "$(INTDIR)\ddutil.obj"
-@erase "$(INTDIR)\DirectSurfaceWrite.obj"
-@erase "$(INTDIR)\DirectSurfaceWrite.res"
-@erase "$(INTDIR)\dxutil.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(OUTDIR)\directsurfacewrite.exe"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /ML /W3 /GX /O2 /I "..\common" /I "..\..\common\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Fp"$(INTDIR)\directsurfacewrite.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
RSC=rc.exe
RSC_PROJ=/l 0x409 /fo"$(INTDIR)\DirectSurfaceWrite.res" /d "NDEBUG"
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\directsurfacewrite.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=dxguid.lib winmm.lib dxerr8.lib ddraw.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /incremental:no /pdb:"$(OUTDIR)\directsurfacewrite.pdb" /machine:I386 /out:"$(OUTDIR)\directsurfacewrite.exe" /stack:0x200000,0x200000
LINK32_OBJS= \
"$(INTDIR)\DirectSurfaceWrite.obj" \
"$(INTDIR)\ddutil.obj" \
"$(INTDIR)\dxutil.obj" \
"$(INTDIR)\DirectSurfaceWrite.res"
"$(OUTDIR)\directsurfacewrite.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ELSEIF "$(CFG)" == "DirectSurfaceWrite - Win32 Debug"
OUTDIR=.\Debug
INTDIR=.\Debug
# Begin Custom Macros
OutDir=.\Debug
# End Custom Macros
ALL : "$(OUTDIR)\directsurfacewrite.exe"
CLEAN :
-@erase "$(INTDIR)\ddutil.obj"
-@erase "$(INTDIR)\DirectSurfaceWrite.obj"
-@erase "$(INTDIR)\DirectSurfaceWrite.res"
-@erase "$(INTDIR)\dxutil.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(INTDIR)\vc60.pdb"
-@erase "$(OUTDIR)\directsurfacewrite.exe"
-@erase "$(OUTDIR)\directsurfacewrite.ilk"
-@erase "$(OUTDIR)\directsurfacewrite.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /MLd /W3 /Gm /GX /Zi /Od /I "..\..\common\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Fp"$(INTDIR)\directsurfacewrite.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
MTL=midl.exe
MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
RSC=rc.exe
RSC_PROJ=/l 0x409 /fo"$(INTDIR)\DirectSurfaceWrite.res" /d "_DEBUG"
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\directsurfacewrite.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=winmm.lib dxguid.lib dxerr8.lib ddraw.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /incremental:yes /pdb:"$(OUTDIR)\directsurfacewrite.pdb" /debug /machine:I386 /out:"$(OUTDIR)\directsurfacewrite.exe" /stack:0x200000,0x200000
LINK32_OBJS= \
"$(INTDIR)\DirectSurfaceWrite.obj" \
"$(INTDIR)\ddutil.obj" \
"$(INTDIR)\dxutil.obj" \
"$(INTDIR)\DirectSurfaceWrite.res"
"$(OUTDIR)\directsurfacewrite.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ENDIF
!IF "$(NO_EXTERNAL_DEPS)" != "1"
!IF EXISTS("directsurfacewrite.dep")
!INCLUDE "directsurfacewrite.dep"
!ELSE
!MESSAGE Warning: cannot find "directsurfacewrite.dep"
!ENDIF
!ENDIF
!IF "$(CFG)" == "DirectSurfaceWrite - Win32 Release" || "$(CFG)" == "DirectSurfaceWrite - Win32 Debug"
SOURCE=.\DirectSurfaceWrite.cpp
"$(INTDIR)\DirectSurfaceWrite.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\DirectSurfaceWrite.rc
"$(INTDIR)\DirectSurfaceWrite.res" : $(SOURCE) "$(INTDIR)"
$(RSC) $(RSC_PROJ) $(SOURCE)
SOURCE=..\..\common\src\ddutil.cpp
"$(INTDIR)\ddutil.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\common\src\dxutil.cpp
"$(INTDIR)\dxutil.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF

View File

@@ -0,0 +1,84 @@
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include <windows.h>
#include <afxres.h>
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_MAIN ICON DISCARDABLE "DirectX.ico"
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include <windows.h>\r\n"
"#include <afxres.h>\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//
IDR_MAIN_ACCEL ACCELERATORS DISCARDABLE
BEGIN
VK_ESCAPE, IDM_EXIT, VIRTKEY, NOINVERT
"X", IDM_EXIT, VIRTKEY, ALT, NOINVERT
END
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,37 @@
//-----------------------------------------------------------------------------
//
// Sample Name: DirectSurfaceWrite Sample
//
// Copyright (c) 1999-2001 Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
Description
===========
DirectSurfaceWrite demonstrates how to write directly to a DirectDraw surface.
Path
====
Source: DXSDK\Samples\Multimedia\DDraw\DirectSurfaceWrite
Executable: DXSDK\Samples\Multimedia\DDraw\Bin
User's Guide
============
DirectSurfaceWrite requires no user input. Press the ESC key to quit the program.
Programming Notes
=================
For details on how to setup a full-screen DirectDraw app, see the FullScreenMode
sample.
To write directly on a DirectDraw surface first call IDirectDrawSurface::Lock
to obtain a pointer directly into the memory of the DirectDraw surface. While
the surface is locked, the surface can not be blted or flipped onto other surfaces.
The surface's pixel format will tell you the data format the surface stores pixels
in. Be sure to advance the surface pointer by the surface pitch instead of the surface
width, since the surface may be wider than its width. After the drawing is finished
call IDirectDrawSurface::Unlock to allow the surface to blt to other surfaces. See
DrawSprite() in this sample for an example of how this is done.

View File

@@ -0,0 +1,19 @@
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by DirectSurfaceWrite.rc
//
#define IDI_ICON1 101
#define IDI_MAIN 102
#define IDR_MAIN_ACCEL 103
#define IDM_EXIT 1001
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 103
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif