I prefer using static globals.
I prefer using static globals myself; for example,
from my X.CPP ( my hand-rolled newsreader )
in ??? www.Cotse.NET/users/jeffrelf/Games.ZIP ???:
// WinProc() is X.CPP's one-and-only ??? Window Procedure ???.
long __stdcall WinProc ( HWND Wnd, uint _WM, uint C, long C2 ) {
PostMessage( Win, _WM, C, C2 ); return 1 ; }
// ??? VisLn ??? is what line to display at the top of the screen.
int ToolBarLines = 1 ;
_VisLn( int L ) { VisLn = Bound ( L, 0, Scro_Max ); }
// Given a screen click, Col_to_Index() returns the glyph.
// Ln.BB[] is the array of all lines, shown or not.
int C, C2 ;
ushort * P_C = ( ushort * ) & C, * P_C2 = ( ushort * ) & C2 ;
LnP Col_to_Index() {
LnP P = Ln.BB [ J_Sel ], E = P + int( * P_C2 / CharW );
While( Ch && P < ( E += Is_Color ? 1 : 1 - _Gy( Ch )->ColsCh ) );
return ! Ch && ! First_Sel ? 0 : P - ! Ch ; }
// ??? Getting( int TheGirl ) ??? is X.CPP's one-and-only event loop.
HWND Wnd ; double Due, Started ;
LnP ButDwn, ButDwnE, ButWas ;
int WM, WasInX, OnScroll, ButUp, OnUp
, OnDwn, OnLD, OnMD, OnRD, LD, MD, RD, OnLU, OnMU, OnRU ;
#define IncY ShowCursor( 1 )
#define DecY ShowCursor( 0 )
SetCur( int X ) { int Y = DecY ;
if ( Y > X ) while ( DecY > X );
else if ( Y < X ) while ( IncY < X ); }
#define WantsOut ( \
WM == WM_APPCOMMAND && P_C2[ 1 ] == APPCOMMAND_CLOSE \
|| WM == WM_SYSKEYDOWN && C == VK_F4 \
|| WM == WM_KEYDOWN && ( C == 27 || C == VK_F4 ) )
const int Any = 1, Spun = 0; MSG Msg;
// #include "Debug.CPP" // To track messages, uncomment.
int Getting( int TheGirl ) {
static int MayReactivate, OnStage = -1, rv ;
static double PaintAlarm ;
Wnd = 0, WM = C = C2 = OnScroll = OnUp = OnDwn
= OnLD = OnMD = OnRD = OnLU = OnMU = OnRU = 0 ;
GetCursorPos( & XY );
int MouseX = XY.x, MouseY = XY.y
, InX = MouseY >= ScrTop && MouseY <= ScrBot ;
if ( PeekMessage( & Msg, 0,0,0, PM_REMOVE ) ) {
static float Y_Was ;
WM = Msg.message, C = Msg.wParam, C2 = Msg.lParam, Wnd = Msg.hwnd ;
// ShWM // From Debug.CPP
if ( WantsOut ) exit( 1 );
if ( WM == WM_MOUSEWHEEL )
OnScroll = short( P_C [ 1 ] ) < 0 ? 1 : -1 ;
Yada, Yada, Yada...