🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: borland.public.cppbuilder.nativeapi
Article #2011

Re: How can I create an application like BCB IDE

#2011
From: Ron Sawyer
Date: Wed, 09 May 2007 21:47
56 lines
3176 bytes
> When you maximize any window all work windows are maximized to Main
Toolbar.
If I understand correctly, the solution appears below.  Before I post it:
credit where it is due.

Harold Howe used to have an excellent how-to site.  When he shut it down he
graciously allowed us to download a word document from the site.  This post
is taken direction from his document.

Many Windows programs create secondary forms that minimize to the taskbar.
For example, MS Exchange opens a new window when you read a mail message,
and these windows minimize to the taskbar. Netscape creates different
windows for its browser, news reader, and mail reader, and each window
minimizes to the taskbar. Come to think of it, having forms that minimize to
the desktop isn't too useful, and not many apps seem to work that way.

A window will minimize to the taskbar if its extended window style contains
the WS_EX_APPWINDOW style. By default, secondary forms do not have this
style set. You can make a form minimize to the taskbar by overriding the
CreateParams function and altering the extended windows style. Use this code
from the secondary form.

void __fastcall TForm2::CreateParams(TCreateParams &Params)

{

    TForm::CreateParams(Params);

    Params.ExStyle |= WS_EX_APPWINDOW;

}

In addition to making a form minimize to the taskbar, you will also want to
change the owner of the secondary form. By owner, I mean the owner window of
the form in API terms, not the VCL owner. The hidden application window owns
all forms in a C++Builder program. The OS hides all owned windows when their
owner window is hidden or minimized. When you create an independent form
that minimizes to the taskbar, this behavior will seem awkward. To fix the
problem, set the WndParent member of TCreateParams to the result of
GetDesktopWindow. This makes the desktop the owner of the form, and prevents
the form from being hidden when you minimize the main form of the program.

void __fastcall TForm2::CreateParams(TCreateParams &Params)

{

    TForm::CreateParams(Params);

    Params.ExStyle  |= WS_EX_APPWINDOW;

    Params.WndParent = GetDesktopWindow();

}

Remember that changing the WndParent member of CreateParams does not affect
who deletes the form object.
Technical Details
Message-ID: <46424187@newsgroups.borland.com>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!news.glorb.com!newsfeeds.ihug.co.nz!ihug.co.nz!newsgroups.borland.com!not-for-mail
References: <4641c590$1@newsgroups.borland.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: 10cc67,15576462eec398b9
X-Google-Attributes: gid10cc67,public
X-Google-Language: ENGLISH,ASCII-7-bit
Reply-To: "Ron Sawyer" <XXXRSAWYER8128XQQXX@aol.com>
From: "Ron Sawyer" <XXXRSAWYER8128XQQXX@aol.com>
Newsgroups: borland.public.cppbuilder.nativeapi
References: <4641c590$1@newsgroups.borland.com>
Subject: Re: How can I create an application like BCB IDE
Date: Wed, 9 May 2007 17:47:53 -0400
Lines: 58
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
NNTP-Posting-Host: 71.58.147.14
Message-ID: <46424187@newsgroups.borland.com>
X-Trace: newsgroups.borland.com 1178747271 71.58.147.14 (9 May 2007 14:47:51 -0700)
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!news.glorb.com!newsfeeds.ihug.co.nz!ihug.co.nz!newsgroups.borland.com!not-for-mail