Files
TeslaRel410/BORLAND/BC45/EXAMPLES/OWL/OWLAPPS/SCRNSAVE/TSCRNSAV.CPP
T
CydandClaude Fable 5 63312e07f9 source410: literal 4.10 source reconstruction + BC++ 4.52 fleet toolchain archived
- BORLAND/: Borland C++ 4.52 (chosen over 4.5 by byte-match: CODE/RP/CW32.LIB
  is identical to 4.52's install lib). BCC32/TLINK32/TLIB/MAKE run natively on
  Win11; CODE/BT/OPT.MAK is the shipped BTL4OPT.EXE's exact flag recipe
  (extender = Borland PowerPack DPMI32, not Phar Lap TNT).
- restoration/source410/: the literal 1995-form reconstruction of the missing
  BT game source (never mixed into CODE/). Round 1-3 state:
  * 6 of 10 surviving original TUs COMPILE CLEAN under the period toolchain
    (BTMSSN, BTCNSL, BTSCNRL, BTTEAM, BTL4MODE, BTL4ARND) - first builds
    since 1996.
  * BT_L4/BTL4APP.CPP pilot reconstruction: 12/12 functions, Fail() lands on
    its binary-recorded line 400 exactly.
  * BT/BTCNSL.HPP: console wire IDs recovered from the binary's ctors
    (Killed=9, Damaged=10, ScoreUpdate=13, DeathWithoutHonor=15 [T1];
    TeamScore=12 flagged [T4]).
  * MUNGA/: 8 engine-header backfills back-dated from the BT412 WinTesla tree
    (VDATA numbering decomp-verified; AUDREND's OpenAL-era virtual removed -
    the period compiler is the drift detector).
  * Tooling: backdate.py (WinTesla->1995 header transform), compile410.sh
    (per-TU verification sweep under authentic OPT.MAK flags).
  * README: corrected roadmap - MECH.HPP is the capstone grown with the mech
    TU reconstructions; BTREG.CPP green = the header-family milestone.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 07:33:26 -05:00

180 lines
3.7 KiB
C++

//----------------------------------------------------------------------------
// ObjectWindows - (C) Copyright 1991, 1993 by Borland International
//
// Windows desktop screensaver classes.
//----------------------------------------------------------------------------
#include <owl\owlpch.h>
#include <owl\dialog.h>
#include "tscrnsav.h"
DEFINE_RESPONSE_TABLE1(TScrnSavWindow, TFrameWindow)
EV_WM_MOUSEMOVE,
EV_WM_LBUTTONDOWN,
EV_WM_RBUTTONDOWN,
EV_WM_MBUTTONDOWN,
EV_WM_ACTIVATE,
EV_WM_ACTIVATEAPP,
EV_WM_KEYDOWN,
EV_WM_SYSKEYDOWN,
EV_WM_SYSCOMMAND,
END_RESPONSE_TABLE;
TScrnSavWindow::TScrnSavWindow(TWindow* parent, const char* title, TModule* module)
: TFrameWindow(parent, title, 0, FALSE, module)
{
ShowCursor(FALSE);
Attr.Style = WS_POPUP;
}
TScrnSavWindow::~TScrnSavWindow()
{
ShowCursor(TRUE);
}
void
TScrnSavWindow::GetWindowClass(WNDCLASS& wndClass)
{
TWindow::GetWindowClass(wndClass);
wndClass.hIcon = 0;
wndClass.style |= CS_SAVEBITS;
wndClass.hbrBackground = (HBRUSH)GetStockObject(NULL_BRUSH);
}
void
TScrnSavWindow::SetupWindow()
{
TFrameWindow::SetupWindow();
GetCursorPos(PrevPt);
TRect r;
::GetWindowRect(GetDesktopWindow(), &r);
MoveWindow(r, TRUE);
}
void
TScrnSavWindow::EvMouseMove(UINT, TPoint& point)
{
if (point != PrevPt)
PostMessage(WM_CLOSE);
}
void
TScrnSavWindow::EvLButtonDown(UINT, TPoint&)
{
PostMessage(WM_CLOSE);
}
void
TScrnSavWindow::EvRButtonDown(UINT, TPoint&)
{
PostMessage(WM_CLOSE);
}
void
TScrnSavWindow::EvMButtonDown(UINT, TPoint&)
{
PostMessage(WM_CLOSE);
}
void
TScrnSavWindow::EvActivate(UINT active, BOOL, HWND)
{
if (!active)
PostMessage(WM_CLOSE);
}
#if defined(__WIN32__)
void TScrnSavWindow::EvActivateApp(BOOL active, HANDLE)
#else
void TScrnSavWindow::EvActivateApp(BOOL active, HTASK)
#endif
{
if (!active)
PostMessage(WM_CLOSE);
}
void
TScrnSavWindow::EvKeyDown(UINT, UINT, UINT)
{
PostMessage(WM_CLOSE);
}
void
TScrnSavWindow::EvSysKeyDown(UINT, UINT, UINT)
{
PostMessage(WM_CLOSE);
}
void
TScrnSavWindow::EvSysCommand(UINT cmdType, TPoint&)
{
if ((cmdType & 0xFFF0) != SC_SCREENSAVE)
DefaultProcessing();
}
int
TScrnSavApp::Run()
{
if (strcmp(lpCmdLine, "/c") == 0 || strcmp(lpCmdLine, "-c") == 0) {
Configuring = TRUE;
InitConfigDialog();
//
// Get the desktop control panel applet's window handle and make a
// TWindow out of it.
//
HWND deskAppletHWnd = ::FindWindow(WC_DIALOG, "Desktop");
TWindow* deskAppletWnd = 0;
if (deskAppletHWnd)
deskAppletWnd = new TWindow(deskAppletHWnd);
//
// Set our config dialog to have the applet window as its parent if
// available
//
if (deskAppletWnd)
ConfigureDialog->SetParent(deskAppletWnd);
ConfigureDialog->Execute();
delete ConfigureDialog;
//
// When our alias is destructed, it remove its thunk, & restores old proc
//
delete deskAppletWnd;
return Status;
} else {
Configuring = FALSE;
return TApplication::Run();
}
}
void
TScrnSavApp::InitMainWindow()
{
Configuring = FALSE;
InitScrnSavWindow();
if (ScrnSavWnd)
MainWindow = ScrnSavWnd;
LastTime = GetCurrentTime();
}
void
TScrnSavApp::InitScrnSavWindow()
{
ScrnSavWnd = new TScrnSavWindow(0, 0, 0);
}
BOOL
TScrnSavApp::IdleAction(long)
{
if (!Configuring) {
uint32 diffTime = GetCurrentTime() - LastTime;
if (Speed == 2 || Speed == 1 && diffTime > 10 || diffTime > 50) {
ScrnSavWnd->AnimateScreen();
LastTime = GetCurrentTime();
}
return TRUE;
}
return FALSE;
}