RWPDEMO
RWPDEMO
{ }
{ Resource Workshop Demo }
{ Copyright (c) 1992 by Borland International }
{ }
{************************************************}
{
This example can be compiled with either the "standard" windows look
or the "Borland look". By default, it uses "standard" windows
controls. To cause it to use Borland Windows Custom Controls, select
Options.Compiler and enter BWCC in the Conditional defines field.
}
program RWPDemo;
{$ifdef BWCC}
{$R RWPDEMOB.RES}
{$else}
{$R RWPDEMO.RES}
{$endif}
{$D 'Resource Workshop Demo Program. Copyright (c) Borland 1992'}
const
AppName = 'RWPDEMO';
StatusLineHeight = 20;
TextStart = 200; { Location for hints in status line }
EditFirst = cm_EditUndo;
EnvironmentFirst = cm_Preferences;
FileFirst = cm_New;
Helpfirst = cm_Index;
OptionFirst = cm_Directories;
ViewFirst = cm_All;
WindowFirst = cm_TileChildren;
am_DrawStatusLine = wm_User + 200;
type
PRWPApplication = ^RWPApplication;
RWPApplication = object(TApplication)
constructor Init(AName: PChar);
procedure InitMainWindow; virtual;
procedure Error(ErrorCode: Integer); virtual;
end;
type
PRWPWindow = ^TRWPWindow;
TRWPWindow = object(TMDIWindow)
BmpStatusBar: HBitmap;
BmpStatusLine: HBitmap;
CurrentID: Word;
CurrentPopup: HMenu;
constructor Init(AParent: PWindowsObject; ATitle: PChar);
destructor Done; virtual;
procedure AboutRWP(var Msg: TMessage); virtual cm_First + cm_About_RWP;
procedure BlastStatusLine(PaintDC: HDC);
procedure ReconstructStatusLine;
procedure DefCommandProc(var Msg: TMessage); virtual;
procedure FileNew(var Msg: TMessage); virtual cm_First + cm_New;
procedure FileOpen(var Msg: TMessage); virtual cm_First + cm_Open;
procedure FilePrint(var Msg: TMessage); virtual cm_First + cm_Print;
function GetClassName: PChar; virtual;
procedure GetWindowClass(var WndClass: TWndClass); virtual;
procedure OpenAFile(FileType: Integer; FileName: PChar);
procedure OptionsDirectories(var Msg: TMessage); virtual
cm_First+cm_Directories;
procedure OptionsMouse(var Msg: TMessage); virtual cm_First+cm_Mouse;
procedure OptionsOpen(var Msg: TMessage); virtual cm_First+cm_Options_Open;
procedure OptionsPreferences(var Msg: TMessage); virtual
cm_First+cm_Preferences;
procedure OptionsSave(var Msg: TMessage); virtual cm_First+cm_Options_Save;
procedure OptionsSaveAs(var Msg: TMessage); virtual cm_First+cm_Options_Saveas;
procedure Paint(PaintDC: HDC; var PaintInfo: TPaintStruct); virtual;
procedure StubDialog(ADialog: PRWPDialog; ACaption: PChar);
procedure WMDrawStatusLine(var Msg: TMessage); virtual wm_First +
am_DrawStatusLine;
procedure WMMenuSelect(var Msg: TMessage); virtual wm_First + wm_MenuSelect;
procedure WMEnterIdle(var Msg: TMessage); virtual wm_First + wm_EnterIdle;
procedure WMSize(var Msg: TMessage); virtual wm_First + wm_Size;
end;
procedure RWPApplication.InitMainWindow;
begin
MainWindow := New(PRWPWindow, Init(nil, 'Resource Workshop Demo Program'));
end;
destructor TRWPWindow.Done;
begin
DeleteObject(BmpStatusLine);
DeleteObject(BmpStatusBar);
TMDIWindow.Done;
end;
DC := GetDC(HWindow);
BlastStatusLine(DC);
if (CurrentPopup <> 0) or (CurrentID <> 0) then
begin
hOld := SelectObject(DC, GetStockObject(ANSI_VAR_FONT));
LoadString(HInstance, StrID, Str, Sizeof(Str));
GetClientRect(HWindow, Rect);
SetBKColor(DC, RGB(192, 192, 192));
TextHeight := HiWord( GetTextExtent( DC, Str, 1) );
TextOut(DC, TextStart+10,
Rect.bottom - StatusLineHeight + ( ( StatusLineHeight - TextHeight ) div 2),
Str, strlen(Str));
SelectObject(DC, hOld);
end;
ReleaseDC(HWindow, DC);
end;
procedure TRWPWindow.ReconstructStatusLine;
var
Bmp: HBitmap;
DC: HDC;
DestDC: HDC;
OldSrc: HBitmap;
OldDest: HBitmap;
Rect: TRect;
SrcDC: HDC;
begin
GetClientRect(HWindow, Rect);
DC := GetDC(HWindow);
SrcDC := CreateCompatibleDC(DC);
DestDC := CreateCompatibleDC(DC);
ReleaseDC(HWindow, DC);
SelectObject(SrcDC, BmpStatusBar);
BitBlt(DestDC, 40, 0, 10, StatusLineHeight,
SrcDC, 0, 0, SrcCopy);
BitBlt(DestDC, 100, 0, 10, StatusLineHeight,
SrcDC, 0, 0, SrcCopy);
BitBlt(DestDC, TextStart, 0, 10, StatusLineHeight,
SrcDC, 0, 0, SrcCopy);
SelectObject(SrcDC, OldSrc);
BmpStatusLine := SelectObject(DestDC, OldDest);
DeleteDC(SrcDC);
DeleteDC(DestDC);
DeleteObject(Bmp);
end;
var
RWPApp:RWPApplication;
begin
RWPApp.Init(AppName);
RWPApp.Run;
RWPApp.Done;
end.