|| Author: RadiatioN/EOF || Back to sources || View project folder ||
// MatrixPayload.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
#include "MatrixPayload.h"
HFONT BuildFont(wchar_t *wszFontFace, int nFontSize, BOOL fBold)
{
HDC hDC;
int nHeight;
hDC = GetDC(NULL);
nHeight = -MulDiv(nFontSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);
ReleaseDC(NULL, hDC);
return CreateFont(nHeight,
0,
0,
0,
fBold ? FW_BOLD: FW_NORMAL,
0,
0,
0,
DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH,
wszFontFace);
}
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
wchar_t wszTemp[512]=TEXT("A");
HDC dc;
COLORREF crBlack = RGB(0, 0, 0), crGreen = RGB(73, 144, 66);
HPEN hPen;
HBRUSH hBrush;
DWORD dwStart, dwRandomAdd, dwLastDraw, dwLastRedraw;
int iPositionArray[MATRIX_ELEMENTS][5], iScreenX, iScreenY, iRasterX=24, iRasterY=32, iRandomDelay=1503;
srand(GetTickCount());
for(int i=0; i< MATRIX_ELEMENTS; i++)
{
iPositionArray[i][0]=-1;
iPositionArray[i][1]=-1;
iPositionArray[i][2]=-1;
}
dc = GetDC(NULL);
iScreenX=GetSystemMetrics(SM_CXSCREEN);
iScreenY=GetSystemMetrics(SM_CYSCREEN);
hPen = CreatePen(PS_SOLID, 1, crBlack);
hBrush = CreateSolidBrush(crBlack);
SelectObject(dc, hPen);
SelectObject(dc, hBrush);
SetBkMode(dc, OPAQUE);
SetBkColor(dc, crBlack);
SetTextColor(dc, crGreen);
SelectObject(dc, BuildFont(TEXT("Lucida Console"), 30, true));
dwStart=GetTickCount();
dwRandomAdd=dwStart;
dwLastDraw=dwStart;
dwLastRedraw=dwStart;
BlockInput(true);
SetCursorPos(iScreenX, iScreenY);
while(dwStart+60000>GetTickCount())
{
if(dwLastDraw+80< GetTickCount())
{
Rectangle(dc, 0, 0, iScreenX, iScreenY);
for(int i=0; i< MATRIX_ELEMENTS; i++)
{
if(iPositionArray[i][2]==1)
{
for(int c=0; c< iPositionArray[i][3]; c++)
{
wszTemp[0]=rand()%253+1;
TextOut(dc, iPositionArray[i][0], iPositionArray[i][1]+(c*(iScreenY/iRasterY)), wszTemp, 1);
}
iPositionArray[i][1]+=(iScreenY/iRasterY);
if(iPositionArray[i][1]>iScreenY)
{
iPositionArray[i][2]=-1;
}
}
}
dwLastDraw=GetTickCount();
}
if(dwRandomAdd+iRandomDelay< GetTickCount())
{
for(int i=0; i< MATRIX_ELEMENTS; i++)
{
if(iPositionArray[i][2]==-1)
{
iPositionArray[i][0]=(rand()%(iScreenX/iRasterX))*iRasterX;
iPositionArray[i][1]=(rand()%(iScreenY/iRasterY))*iRasterY;
iPositionArray[i][2]=1;
iPositionArray[i][3]=(rand()%10)+3;
break;
}
}
dwRandomAdd=GetTickCount();
if(iRandomDelay>5)iRandomDelay-=(iRandomDelay/5);
}
}
BlockInput(false);
InvalidateRect(NULL, NULL, true);
ReleaseDC(NULL, dc);
return 0;
}