Главная страница | назад





Article #17185: Catching and changing the Maximize of a form

 Question and Answer Database
FAQ2185C.txt Catching and changing the Maximize of a form
Category :VCL
Platform :All
Product :C++Builder 3.x
Question:
I want to make it so that the mazimize button in the caption
makes it so that the form runs only across the top of the
screen (like the BCB tool bar). How do I do that.
Answer:
This is not to difficult. All you have to do is create a message
map that catches the WM_GETMINMAXINFO message and
override that.
You can also use this to set the window to any size you want
when the Maximize button is pressed.
Here is sample code on how to do this:
//sample code----------------------------
/****************************************
* Header file for the form you want to *
* have maxamize only across the top of *
* the screen *
****************************************/
//---------------------------------------------------------------------------
#include 
#include 
#include 
#include 
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
protected:
void __fastcall HandleIt(TMessage &Msg);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_GETMINMAXINFO, TMessage, HandleIt)
END_MESSAGE_MAP(TForm)
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
/***********************************************
* Here is the source (.cpp) file for the form *
***********************************************/
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::HandleIt(TMessage &Msg)
{
((POINT *)Msg.LParam)[4].y = 96; // 96 is the target height of the window
TForm::Dispatch(&Msg);
}
//---------------------------------------------------------------------------
7/2/98 10:32:32 AM

Last Modified: 01-SEP-99