Technical Information Database
TI511D.txt Creating an OWL app withoug a border and caption
Category :OWL
Platform :All
Product :Pascal All
Description:
Sometimes programmers of OWL applications want to open a
main window that has no border, no caption, and which
fills the entire screen. The following example shows
how to do this.
To get started, override the Init Constructor. Then set
the Windows style to WS_VISIBLE and WS_POPUP:
Attr.Style := ws_Visible or ws_PopUp;
After doing this, the program will appear with no
border and no caption. However, the window will not
be visible unless you define its size. To give the
program a shape, assign it a width and height:
Attr.X := 100;
Attr.Y := 100;
Attr.H := 200;
Attr.W := 200;
Of course, if you want to show the window in a maximized
state, then you can simply send it a WM_SYSCOMMAND message
from the programs SETUPWINDOW procedure:
procedure TStepWindow.SetUpWindow;
begin
inherited SetUpWindow;
PostMessage(HWindow, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
end;
To sum up, the shortest way from point A to point B is to
first give the window the WS_POPUP style, and then
maximize it with the WM_SYSCOMMAND message. If you
want to create a window that is not maximized, then be
sure to set the window's width and height. The example
below shows a maximized window:
program NoCaption;
uses WinTypes, WinProcs, OWindows, Strings;
type
PStepWindow = ^TStepWIndow;
TStepWindow = object(TWindow)
constructor Init(P: PWindowsObject; AName: PChar);
procedure SetUpWindow; virtual;
procedure Paint(PaintDC: HDC; var PaintInfo: TPaintStruct);
virtual;
procedure WMLButtonDown(var Msg: TMessage);
virtual wm_First + wm_LButtonDown;
end;
TMyApplication = object(TApplication)
procedure InitMainWindow; virtual;
end;
constructor TStepWindow.Init(P: PWindowsObject; AName: PChar);
begin
inherited Init(P, Aname);
Attr.Style := ws_Visible or WS_PopUp;
{ Attr.H := 200;
Attr.W := 200; }
end;
procedure TStepWindow.SetUpWindow;
begin
inherited SetUpWindow;
PostMessage(HWindow, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
end;
procedure TStepWindow.WMLButtonDown(var Msg: TMessage);
begin
CloseWindow;
end;
procedure TStepWindow.Paint(PaintDC: HDC;
var PaintInfo: TPaintStruct);
var
S: array[0..100] of Char;
begin
StrCopy(S, 'Click on Window to close it');
TextOut(PaintDC, 10, 10, S, StrLen(S));
end;
procedure TMyApplication.InitMainWindow;
begin
MainWindow := New(PStepWindow, Init(nil, 'Steps'));
end;
var
MyApp: TMyApplication;
begin
MyApp.Init('Steps');
MyApp.Run;
MyApp.Done;
end.
Reference:
7/16/98 4:33:46 PM
Last Modified: 01-SEP-99