Message handlers

Top  Previous  Next

What is translated > Message handlers

 

Message handlers are methods that implement responses to dynamically dispatched messages. Delphi’s VCL uses message handlers to respond to Windows messages.

 

In Delphi a message handler is created by including the message directive in a method declaration, followed by an integer constant between 1 and 49151 which specifies the message ID.

 

The routine for handling the message can be declared as a macro:

 

#define VCL_MESSAGE_HANDLER(msg,type,meth)          \

 

          case    msg:                              \

            meth(*((type *)Message));               \

            break;

 

This macros has to be embedded into two other macros:

 

#define BEGIN_MESSAGE_MAP virtual void __fastcall Dispatch(void *Message) \

 

        {                                           \

          switch  (((PMessage)Message)->Msg)        \

          {

 

 

#define END_MESSAGE_MAP(base)    default:    \

 

                        base::Dispatch(Message);\

                        break;                  \

          }                                     \

        }

 

 

For example the two message handlers:

 

  procedure WMVScroll(var Message: TWMVScroll); 

                      Message WM_VSCROLL;

  procedure WMHScroll(var Message: TWMHScroll); 

                      Message WM_HSCROLL;

 

 

are translated to C++Builder C++:

 

  MESSAGE void __fastcall WMVScroll( TWMVScroll& Message ) 

               /*# WM_VSCROLL */;

  MESSAGE void __fastcall WMHScroll( TWMHScroll& Message ) 

               /*# WM_HSCROLL */;

 

 

  BEGIN_MESSAGE_MAP

    VCL_MESSAGE_HANDLER(WM_VSCROLL, TWMVScroll, WMVScroll)

    VCL_MESSAGE_HANDLER(WM_HSCROLL, TWMHScroll, WMHScroll)

  END_MESSAGE_MAP( TPanel )

 

 

 

 

 



This page belongs to the DelphiXE2Cpp11 Documentation

DelphiXE2Cpp11 home  Content