176 lines
5.4 KiB
C++
176 lines
5.4 KiB
C++
|
/**********************************************************************/
|
||
|
/** Microsoft Windows/NT **/
|
||
|
/** Copyright(c) Microsoft Corp., 1991 **/
|
||
|
/**********************************************************************/
|
||
|
|
||
|
/*
|
||
|
bltdisph.hxx
|
||
|
Header file for DISPATCHER class.
|
||
|
|
||
|
FILE HISTORY:
|
||
|
terryk 20-Jun-91 move the source code from bltclwin.hxx
|
||
|
terryk 01-Aug-91 change Dispatcher return type to ULONG
|
||
|
beng 28-May-1992 Major shuffling between bltcc and bltdisph
|
||
|
*/
|
||
|
|
||
|
#ifndef _BLTDISPH_HXX_
|
||
|
#define _BLTDISPH_HXX_
|
||
|
|
||
|
#include "bltevent.hxx"
|
||
|
|
||
|
DLL_CLASS ASSOCHWNDDISP; // forward decl's
|
||
|
DLL_CLASS DISPATCHER;
|
||
|
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: ASSOCHWNDDISP
|
||
|
|
||
|
SYNOPSIS: Associate a dispatcher with a window
|
||
|
|
||
|
INTERFACE: HwndToPdispatch()
|
||
|
|
||
|
PARENT: ASSOCHWNDTHIS
|
||
|
|
||
|
HISTORY:
|
||
|
beng 30-Sep-1991 Created
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS ASSOCHWNDDISP: private ASSOCHWNDTHIS
|
||
|
{
|
||
|
NEWBASE(ASSOCHWNDTHIS)
|
||
|
public:
|
||
|
ASSOCHWNDDISP( HWND hwnd, const DISPATCHER * pdsp )
|
||
|
: ASSOCHWNDTHIS( hwnd, pdsp ) { }
|
||
|
|
||
|
static DISPATCHER * HwndToPdispatch( HWND hwnd )
|
||
|
{ return (DISPATCHER *)HwndToThis(hwnd); }
|
||
|
};
|
||
|
|
||
|
|
||
|
/**********************************************************************
|
||
|
|
||
|
NAME: DISPATCHER
|
||
|
|
||
|
SYNOPSIS: General window-message dispatcher class
|
||
|
|
||
|
INTERFACE: DISPATCHER() - constructor
|
||
|
~DISPATCHER() - destructor
|
||
|
|
||
|
CaptureMouse() - capture the mouse
|
||
|
ReleaseMouse() - release the mouse
|
||
|
DoChar() - force an OnChar function
|
||
|
DoUserMessage() - force an OnUserMessage function
|
||
|
|
||
|
USES:
|
||
|
|
||
|
HISTORY:
|
||
|
beng 01-Mar-91 Create client-window class
|
||
|
terryk 20-Jun-91 move the source code from bltclwin.hxx
|
||
|
terryk 01-Aug-91 change Dispatcher return type to ULONG
|
||
|
beng 30-Sep-1991 Win32 conversion
|
||
|
beng 05-Dec-1991 Implemented scroll-bar callbacks
|
||
|
beng 13-Feb-1992 Removed Repaint member (parallel to clwin)
|
||
|
beng 18-May-1992 Disabled scroll-bar callbacks
|
||
|
beng 19-May-1992 OnNCHitTest superseded by CUSTOM_CONTROL::
|
||
|
OnQHitTest
|
||
|
beng 28-May-1992 Major reshuffle of bltcc and bltdisph
|
||
|
|
||
|
**********************************************************************/
|
||
|
|
||
|
DLL_CLASS DISPATCHER
|
||
|
{
|
||
|
private:
|
||
|
WINDOW * _pwnd;
|
||
|
|
||
|
// This object lets the window find its pwnd when it is entered
|
||
|
// from Win (which doesn't set up This pointers, etc.)
|
||
|
//
|
||
|
ASSOCHWNDDISP _assocThis;
|
||
|
|
||
|
protected:
|
||
|
// constructor and destructor
|
||
|
|
||
|
DISPATCHER( WINDOW * pwnd );
|
||
|
~DISPATCHER();
|
||
|
|
||
|
|
||
|
// OnXXX Message
|
||
|
|
||
|
virtual BOOL OnPaintReq();
|
||
|
virtual BOOL OnActivation( const ACTIVATION_EVENT & );
|
||
|
virtual BOOL OnDeactivation( const ACTIVATION_EVENT & );
|
||
|
virtual BOOL OnFocus( const FOCUS_EVENT & );
|
||
|
virtual BOOL OnDefocus( const FOCUS_EVENT & );
|
||
|
virtual BOOL OnResize( const SIZE_EVENT & );
|
||
|
virtual BOOL OnMove( const MOVE_EVENT & );
|
||
|
virtual BOOL OnCloseReq();
|
||
|
virtual BOOL OnDestroy();
|
||
|
virtual BOOL OnKeyDown( const VKEY_EVENT & );
|
||
|
virtual BOOL OnKeyUp( const VKEY_EVENT & );
|
||
|
virtual BOOL OnChar( const CHAR_EVENT & );
|
||
|
|
||
|
virtual BOOL OnMouseMove( const MOUSE_EVENT & );
|
||
|
virtual BOOL OnLMouseButtonDown( const MOUSE_EVENT & );
|
||
|
virtual BOOL OnLMouseButtonUp( const MOUSE_EVENT & );
|
||
|
virtual BOOL OnLMouseButtonDblClick( const MOUSE_EVENT & );
|
||
|
|
||
|
virtual BOOL OnQMouseCursor( const QMOUSEACT_EVENT & event );
|
||
|
|
||
|
virtual ULONG OnQDlgCode();
|
||
|
virtual ULONG OnQHitTest( const XYPOINT & xy );
|
||
|
virtual ULONG OnQMouseActivate( const QMOUSEACT_EVENT & event );
|
||
|
|
||
|
#if 0 // following member fcns elided to reduce vtable congestion
|
||
|
virtual BOOL OnMMouseButtonDown( const MOUSE_EVENT & );
|
||
|
virtual BOOL OnMMouseButtonUp( const MOUSE_EVENT & );
|
||
|
virtual BOOL OnMMouseButtonDblClick( const MOUSE_EVENT & );
|
||
|
virtual BOOL OnRMouseButtonDown( const MOUSE_EVENT & );
|
||
|
virtual BOOL OnRMouseButtonUp( const MOUSE_EVENT & );
|
||
|
virtual BOOL OnRMouseButtonDblClick( const MOUSE_EVENT & );
|
||
|
#endif
|
||
|
|
||
|
virtual BOOL OnTimer( const TIMER_EVENT & );
|
||
|
virtual BOOL OnCommand( const CONTROL_EVENT & );
|
||
|
|
||
|
#if 0 // Never really implemented (gedankenmembers?)
|
||
|
virtual BOOL OnClick( const CONTROL_EVENT & );
|
||
|
virtual BOOL OnDblClick( const CONTROL_EVENT & );
|
||
|
virtual BOOL OnChange( const CONTROL_EVENT & );
|
||
|
virtual BOOL OnSelect( const CONTROL_EVENT & );
|
||
|
virtual BOOL OnEnter( const CONTROL_EVENT & );
|
||
|
virtual BOOL OnDropDown( const CONTROL_EVENT & );
|
||
|
#endif
|
||
|
|
||
|
#if 0 // more elided members
|
||
|
virtual BOOL OnScrollBar( const SCROLL_EVENT & );
|
||
|
virtual BOOL OnScrollBarThumb( const SCROLL_THUMB_EVENT & );
|
||
|
#endif
|
||
|
|
||
|
virtual BOOL OnUserMessage( const EVENT & );
|
||
|
|
||
|
static DISPATCHER * HwndToPwnd( HWND hwnd )
|
||
|
{ return ASSOCHWNDDISP::HwndToPdispatch(hwnd); }
|
||
|
|
||
|
virtual BOOL Dispatch( const EVENT & e, ULONG * pnRes );
|
||
|
|
||
|
public:
|
||
|
// Spliced in from WINDOW
|
||
|
|
||
|
HWND QueryHwnd() const;
|
||
|
virtual HWND QueryRobustHwnd() const;
|
||
|
|
||
|
VOID CaptureMouse();
|
||
|
VOID ReleaseMouse();
|
||
|
|
||
|
// Exported hooks for a couple of CCs
|
||
|
|
||
|
BOOL DoChar( const CHAR_EVENT & event );
|
||
|
BOOL DoUserMessage( const EVENT & event );
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif // _BLTDISPH_HXX_
|
||
|
|