- 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>
120 lines
3.4 KiB
C++
120 lines
3.4 KiB
C++
//----------------------------------------------------------------------------
|
|
// ObjectWindows - (C) Copyright 1991, 1993 by Borland International
|
|
//
|
|
// Peeper is a program that allows the user to select some windows and
|
|
// perform one or more actions on those windows. Actions include:
|
|
// . Changing the window text (caption).
|
|
// . Sending messages.
|
|
//
|
|
// The windows that are selected are put into a list which can be cleared
|
|
// at any time to start over.
|
|
//
|
|
// To choose a window click on the 'Peep!' button and when the mouse if over
|
|
// a window that you want to choose, click the left mouse button. To stop
|
|
// 'peeping' click the right mouse button. You can't peep Peeper.
|
|
//----------------------------------------------------------------------------
|
|
#if !defined(__PEEPER_H)
|
|
#define __PEEPER_H
|
|
|
|
#include <owl\applicat.h>
|
|
#include <owl\dialog.h>
|
|
#include <classlib\vectimp.h>
|
|
#include "peeper.rh"
|
|
|
|
//
|
|
// global functions used with ForEach():
|
|
//
|
|
void SendWMSetText(HWND& hWnd, void* p);
|
|
void SendSysMessage(HWND& hWnd, void* p);
|
|
void SendWMMessage(HWND& hWnd, void* p);
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
// Handles the 'peeping' process by capturing, tracking and releasing
|
|
// the mouse.
|
|
//
|
|
class TClientWindow : public TWindow {
|
|
public:
|
|
TClientWindow() : TWindow(0, "") {}
|
|
|
|
protected:
|
|
void DisplayWinInfo();
|
|
void EvLButtonDown(UINT mod_keys, TPoint& point);
|
|
void EvRButtonDown(UINT mod_keys, TPoint& point);
|
|
|
|
DECLARE_RESPONSE_TABLE(TClientWindow);
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
// Transfer buffer for the messages dialog.
|
|
struct MessagesTB {
|
|
MessagesTB()
|
|
{
|
|
MaxCB = MinCB = PaintCB = RestoreCB = PasteCB = CloseCB = FALSE;
|
|
}
|
|
|
|
BOOL MaxCB, MinCB, PaintCB, RestoreCB, PasteCB, CloseCB;
|
|
};
|
|
|
|
//
|
|
// Dialog that contains checkboxs that reprsent the messages the user wants
|
|
// to send to the selected windows.
|
|
//
|
|
class TMessagesDialog : public TDialog {
|
|
public:
|
|
TMessagesDialog(TWindow* parent, MessagesTB* mtb)
|
|
: TDialog(parent, IDD_MESSAGES)
|
|
{
|
|
MaximizeCB = new TCheckBox(this, IDC_MAXIMIZE);
|
|
MinimizeCB = new TCheckBox(this, IDC_MINIMIZE);
|
|
PaintCB = new TCheckBox(this, IDC_PAINT);
|
|
RestoreCB = new TCheckBox(this, IDC_RESTORE);
|
|
PasteCB = new TCheckBox(this, IDC_PASTE);
|
|
CloseCB = new TCheckBox(this, IDC_CLOSE);
|
|
SetTransferBuffer(mtb);
|
|
}
|
|
|
|
private:
|
|
TCheckBox* MaximizeCB;
|
|
TCheckBox* MinimizeCB;
|
|
TCheckBox* PaintCB;
|
|
TCheckBox* RestoreCB;
|
|
TCheckBox* PasteCB;
|
|
TCheckBox* CloseCB;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
// Peeper application. Handles most of the messages.
|
|
//
|
|
class TPeeper : public TApplication {
|
|
public:
|
|
TPeeper() : TApplication("Peeper") {}
|
|
~TPeeper() { delete WindowList; }
|
|
|
|
void InitMainWindow();
|
|
|
|
private:
|
|
TWindow* Client;
|
|
TStatic* SelWinText;
|
|
TListBox* SelectedWindows;
|
|
TControlBar* Actions;
|
|
TMessageBar* StatusLine;
|
|
TCVectorImp<HWND>* WindowList;
|
|
|
|
void CmPeeping();
|
|
void CmChangeCaption();
|
|
void CmClearWindowList();
|
|
void CmSendMessage();
|
|
void CmHelp();
|
|
|
|
friend class TClientWindow;
|
|
|
|
DECLARE_RESPONSE_TABLE(TPeeper);
|
|
};
|
|
|
|
#endif
|