908 lines
23 KiB
C++
908 lines
23 KiB
C++
|
/**********************************************************************/
|
||
|
/** Microsoft Windows/NT **/
|
||
|
/** Copyright(c) Microsoft Corp., 1991 **/
|
||
|
/**********************************************************************/
|
||
|
|
||
|
/*
|
||
|
bltevent.hxx
|
||
|
Event types, as used by the client-window classes
|
||
|
|
||
|
EVENT
|
||
|
FOCUS_EVENT
|
||
|
CONTROL_EVENT
|
||
|
SCROLL_EVENT
|
||
|
TIMER_EVENT
|
||
|
ACTIVATION_EVENT
|
||
|
SIZE_EVENT
|
||
|
MOVE_EVENT
|
||
|
KEY_EVENT
|
||
|
VKEY_EVENT
|
||
|
CHAR_EVENT
|
||
|
MOUSE_EVENT
|
||
|
|
||
|
|
||
|
FILE HISTORY:
|
||
|
beng 01-May-1991 Created
|
||
|
beng 10-May-1991 Implementations added
|
||
|
beng 14-May-1991 More implementations added;
|
||
|
GENERIC_EVENT removed
|
||
|
beng 08-Oct-1991 Win32 conversion
|
||
|
beng 05-Dec-1991 Added scroll events
|
||
|
beng 18-May-1992 Added QMOUSEACT_EVENT
|
||
|
beng 28-May-1992 All WORD2DWORD replaced with UINT
|
||
|
*/
|
||
|
|
||
|
#ifndef _BLT_HXX_
|
||
|
#error "Don't include this file directly; instead, include it through blt.hxx"
|
||
|
#endif // _BLT_HXX_
|
||
|
|
||
|
#ifndef _BLTEVENT_HXX_
|
||
|
#define _BLTEVENT_HXX_
|
||
|
|
||
|
#include "bltmisc.hxx"
|
||
|
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: EVENT
|
||
|
|
||
|
SYNOPSIS: Base class in EVENT hierarchy
|
||
|
|
||
|
INTERFACE:
|
||
|
QueryMessage() - return wMsg arg
|
||
|
QueryWParam() - return wParam arg
|
||
|
QueryLParam() - reutrn lParam arg
|
||
|
|
||
|
SendTo() - passes the event along, via SendMessage
|
||
|
PostTo() - passes the event along, via PostMessage
|
||
|
|
||
|
CAVEATS:
|
||
|
Do not use this class unless you know what you are doing.
|
||
|
Otherwise you may hose Win16-Win32 single-source compatibility.
|
||
|
|
||
|
NOTES:
|
||
|
Should these members be protected? Need to make some friends.
|
||
|
|
||
|
HISTORY:
|
||
|
beng 01-May-1991 Created
|
||
|
beng 10-May-1991 Added friend decl's
|
||
|
beng 14-May-1991 Made APP_WINDOW's dispatcher
|
||
|
a friend, too
|
||
|
Folded in GENERIC_EVENT
|
||
|
beng 08-Oct-1991 Win32 conversion
|
||
|
beng 27-May-1992 Added SendTo, PostTo
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS EVENT
|
||
|
{
|
||
|
private:
|
||
|
// C7 CODEWORK - make these "const" when we leave Glock
|
||
|
UINT _nMsg;
|
||
|
WPARAM _wParam;
|
||
|
LPARAM _lParam;
|
||
|
|
||
|
public:
|
||
|
EVENT( UINT nMsg, WPARAM wParam, LPARAM lParam )
|
||
|
: _nMsg(nMsg), _wParam(wParam), _lParam(lParam) {}
|
||
|
|
||
|
UINT QueryMessage() const { return _nMsg; }
|
||
|
WPARAM QueryWParam() const { return _wParam; }
|
||
|
LPARAM QueryLParam() const { return _lParam; }
|
||
|
|
||
|
LRESULT SendTo( HWND hwndDest ) const
|
||
|
{ return ::SendMessage( hwndDest, _nMsg, _wParam, _lParam ); }
|
||
|
|
||
|
BOOL PostTo( HWND hwndDest ) const
|
||
|
{ return ::PostMessage( hwndDest, _nMsg, _wParam, _lParam ); }
|
||
|
};
|
||
|
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: CONTROL_EVENT
|
||
|
|
||
|
SYNOPSIS: Describe a message sent by a control to its owner
|
||
|
|
||
|
INTERFACE: QueryCid() - return control ID of notifier
|
||
|
QueryCode() - return code passed by control
|
||
|
QueryHwnd() - return hwnd of sending control.
|
||
|
|
||
|
PARENT: EVENT
|
||
|
|
||
|
USES: CID
|
||
|
|
||
|
CAVEATS:
|
||
|
|
||
|
NOTES:
|
||
|
This event maps to WM_COMMAND. So if QueryHwnd is 0, it
|
||
|
actually came from a menu item, in which case the CID is
|
||
|
actually a MID.
|
||
|
|
||
|
HISTORY:
|
||
|
beng 10-May-1991 Implemented
|
||
|
beng 07-Oct-1991 Renamed QueryCid for CONTROL_WINDOW compat
|
||
|
beng 08-Oct-1991 Win32 conversion
|
||
|
beng 15-Oct-1991 Added QueryHwndSender
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS CONTROL_EVENT: public EVENT
|
||
|
{
|
||
|
public:
|
||
|
CONTROL_EVENT( UINT wMsg, WPARAM wParam, LPARAM lParam )
|
||
|
: EVENT( wMsg, wParam, lParam ) {}
|
||
|
|
||
|
// This alternate ctor lets BLT assemble a phony notification event
|
||
|
// portably.
|
||
|
|
||
|
CONTROL_EVENT( CID cid, UINT nNotification )
|
||
|
#if defined(WIN32)
|
||
|
: EVENT(WM_COMMAND, (WPARAM)MAKELONG(cid, (WORD)nNotification), (LPARAM)0) {}
|
||
|
#else
|
||
|
: EVENT(WM_COMMAND, (WPARAM)cid, (LPARAM)MAKELONG(0, nNotification)) {}
|
||
|
#endif
|
||
|
|
||
|
CID QueryCid() const
|
||
|
{
|
||
|
#if defined(WIN32)
|
||
|
return (CID)LOWORD(QueryWParam());
|
||
|
#else
|
||
|
return (CID)QueryWParam();
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
UINT QueryCode() const
|
||
|
{
|
||
|
#if defined(WIN32)
|
||
|
return (UINT)HIWORD(QueryWParam());
|
||
|
#else
|
||
|
return (UINT)HIWORD(QueryLParam());
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
HWND QueryHwnd() const
|
||
|
{
|
||
|
#if defined(WIN32)
|
||
|
return (HWND) QueryLParam();
|
||
|
#else
|
||
|
return (HWND) LOWORD(QueryLParam());
|
||
|
#endif
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
/* This is a WIN32 manifest. See wincon.h. */
|
||
|
|
||
|
#ifdef FOCUS_EVENT
|
||
|
#undef FOCUS_EVENT
|
||
|
#endif
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: FOCUS_EVENT
|
||
|
|
||
|
SYNOPSIS: Describe losing or gaining the input focus
|
||
|
|
||
|
INTERFACE: QueryOtherHwnd() - returns hwnd of window which
|
||
|
gained or lost the focus
|
||
|
|
||
|
PARENT: EVENT
|
||
|
|
||
|
CAVEATS:
|
||
|
Note that the interface returns a Windows HWND, not a WINDOW.
|
||
|
|
||
|
NOTES:
|
||
|
Too much hassle to provide a WINDOW* - will do only
|
||
|
at explicit request of clients.
|
||
|
|
||
|
This event maps to WM_SETFOCUS and WM_KILLFOCUS.
|
||
|
|
||
|
HISTORY:
|
||
|
beng 10-May-1991 Implemented
|
||
|
beng 08-Oct-1991 Win32 conversion
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS FOCUS_EVENT: public EVENT
|
||
|
{
|
||
|
public:
|
||
|
FOCUS_EVENT( UINT wMsg, WPARAM wParam, LPARAM lParam )
|
||
|
: EVENT( wMsg, wParam, lParam ) {}
|
||
|
|
||
|
HWND QueryOtherHwnd() const { return (HWND) QueryWParam(); }
|
||
|
};
|
||
|
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: SCROLL_EVENT
|
||
|
|
||
|
SYNOPSIS: Describe activity in a scrollbar
|
||
|
|
||
|
INTERFACE: QueryCommand() - returns one of
|
||
|
scmdLineDown
|
||
|
scmdLineUp
|
||
|
scmdPageDown
|
||
|
scmdPageUp
|
||
|
scmdThumbPos
|
||
|
scmdThumbTrack
|
||
|
scmdBottom
|
||
|
scmdTop
|
||
|
IsVertical() - TRUE if vertical scrollbar
|
||
|
IsHorizontal() - TRUE if horizontal scrollbar
|
||
|
|
||
|
PARENT: CONTROL_EVENT
|
||
|
|
||
|
NOTES:
|
||
|
If command is scmdThumbPos or scmdThumbTrack, then this
|
||
|
object is actually a SCROLL_THUMB_EVENT.
|
||
|
|
||
|
HISTORY:
|
||
|
beng 11-Oct-1991 Documented
|
||
|
beng 05-Dec-1991 Ported to Win32
|
||
|
beng 18-May-1992 Added IsVertical, IsHorizontal
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS SCROLL_EVENT: public CONTROL_EVENT
|
||
|
{
|
||
|
public:
|
||
|
SCROLL_EVENT( UINT wMsg, WPARAM wParam, LPARAM lParam )
|
||
|
: CONTROL_EVENT( wMsg, wParam, lParam ) {}
|
||
|
|
||
|
enum SCROLL_COMMAND
|
||
|
{
|
||
|
scmdLineDown = 0,
|
||
|
scmdLineUp,
|
||
|
scmdPageDown,
|
||
|
scmdPageUp,
|
||
|
scmdThumbPos,
|
||
|
scmdThumbTrack,
|
||
|
scmdBottom,
|
||
|
scmdTop
|
||
|
};
|
||
|
|
||
|
SCROLL_COMMAND QueryCommand() const
|
||
|
#if defined(WIN32)
|
||
|
{ return (SCROLL_COMMAND)LOWORD(QueryWParam()); }
|
||
|
#else
|
||
|
{ return (SCROLL_COMMAND)QueryWParam(); }
|
||
|
#endif
|
||
|
|
||
|
BOOL IsVertical() const
|
||
|
{ return (QueryMessage() == WM_VSCROLL); }
|
||
|
BOOL IsHorizontal() const
|
||
|
{ return (QueryMessage() == WM_HSCROLL); }
|
||
|
};
|
||
|
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: SCROLL_EVENT
|
||
|
|
||
|
SYNOPSIS: Describe thumb activity in a scrollbar
|
||
|
|
||
|
INTERFACE: QueryCommand() - returns one of
|
||
|
tcmdThumbPos
|
||
|
tcmdThumbTrack
|
||
|
|
||
|
QueryPos() - returns position within scrollbar
|
||
|
|
||
|
PARENT: SCROLL_EVENT
|
||
|
|
||
|
NOTES:
|
||
|
See also SCROLL_EVENT::IsVertical() et al.
|
||
|
|
||
|
HISTORY:
|
||
|
beng 11-Oct-1991 Documented
|
||
|
beng 05-Dec-1991 Ported to Win32
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS SCROLL_THUMB_EVENT: public SCROLL_EVENT
|
||
|
{
|
||
|
public:
|
||
|
SCROLL_THUMB_EVENT( UINT wMsg, WPARAM wParam, LPARAM lParam )
|
||
|
: SCROLL_EVENT( wMsg, wParam, lParam ) {}
|
||
|
|
||
|
enum THUMB_COMMAND
|
||
|
{
|
||
|
tcmdThumbPos=4,
|
||
|
tcmdThumbTrack
|
||
|
};
|
||
|
|
||
|
THUMB_COMMAND QueryCommand() const
|
||
|
#if defined(WIN32)
|
||
|
{ return (THUMB_COMMAND)LOWORD(QueryWParam()); }
|
||
|
#else
|
||
|
{ return (THUMB_COMMAND)QueryWParam(); }
|
||
|
#endif
|
||
|
|
||
|
UINT QueryPos() const
|
||
|
#if defined(WIN32)
|
||
|
{ return HIWORD(QueryWParam()); }
|
||
|
#else
|
||
|
{ return LOWORD(QueryLParam()); }
|
||
|
#endif
|
||
|
};
|
||
|
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: TIMER_EVENT
|
||
|
|
||
|
SYNOPSIS: Describe the detonation of a fuse
|
||
|
|
||
|
INTERFACE: QueryID() - state which timer did it
|
||
|
|
||
|
PARENT: EVENT
|
||
|
|
||
|
USES: TIMER_ID
|
||
|
|
||
|
NOTES:
|
||
|
This event maps to WM_TIMER.
|
||
|
|
||
|
HISTORY:
|
||
|
beng 07-Oct-1991 Returns TIMER_ID instead of WORD
|
||
|
beng 08-Oct-1991 Win32 conversion
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS TIMER_EVENT: public EVENT
|
||
|
{
|
||
|
public:
|
||
|
TIMER_EVENT( UINT wMsg, WPARAM wParam, LPARAM lParam )
|
||
|
: EVENT( wMsg, wParam, lParam ) {}
|
||
|
|
||
|
TIMER_ID QueryID() const { return (TIMER_ID)QueryWParam(); }
|
||
|
};
|
||
|
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: ACTIVATION_EVENT
|
||
|
|
||
|
SYNOPSIS: Describe the activation of a window
|
||
|
|
||
|
INTERFACE: IsActivating() - returns TRUE if window will be active
|
||
|
|
||
|
PARENT: EVENT
|
||
|
|
||
|
NOTES:
|
||
|
This event maps to WM_ACTIVATE.
|
||
|
|
||
|
HISTORY:
|
||
|
beng 07-Oct-1991 Added header
|
||
|
beng 08-Oct-1991 Win32 conversion
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS ACTIVATION_EVENT: public EVENT
|
||
|
{
|
||
|
public:
|
||
|
ACTIVATION_EVENT( UINT wMsg, WPARAM wParam, LPARAM lParam )
|
||
|
: EVENT( wMsg, wParam, lParam ) {}
|
||
|
|
||
|
#if defined(WIN32)
|
||
|
BOOL IsActivating() const { return (LOWORD(QueryWParam()) != 0); }
|
||
|
#else
|
||
|
BOOL IsActivating() const { return (QueryWParam() != 0); }
|
||
|
#endif
|
||
|
};
|
||
|
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: SIZE_EVENT
|
||
|
|
||
|
SYNOPSIS: Received after the window is resized
|
||
|
|
||
|
INTERFACE: IsMaximized()
|
||
|
IsMinimized()
|
||
|
IsNormal()
|
||
|
|
||
|
QueryHeight()
|
||
|
QueryWidth()
|
||
|
|
||
|
PARENT: EVENT
|
||
|
|
||
|
NOTES:
|
||
|
Maybe add a XYDIMENSION QueryDim method?
|
||
|
|
||
|
This event maps to WM_SIZE.
|
||
|
|
||
|
HISTORY:
|
||
|
beng 15-May-1991 Documented
|
||
|
beng 08-Oct-1991 Win32 conversion
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS SIZE_EVENT: public EVENT
|
||
|
{
|
||
|
public:
|
||
|
SIZE_EVENT( UINT wMsg, WPARAM wParam, LPARAM lParam )
|
||
|
: EVENT( wMsg, wParam, lParam ) {}
|
||
|
|
||
|
BOOL IsMaximized() const { return (QueryWParam() == SIZEFULLSCREEN); }
|
||
|
BOOL IsMinimized() const { return (QueryWParam() == SIZEICONIC); }
|
||
|
BOOL IsNormal() const { return (QueryWParam() == SIZENORMAL); }
|
||
|
|
||
|
UINT QueryWidth() const { return LOWORD(QueryLParam()); }
|
||
|
UINT QueryHeight() const { return HIWORD(QueryLParam()); }
|
||
|
};
|
||
|
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: MOVE_EVENT
|
||
|
|
||
|
SYNOPSIS: Received after a window is moved
|
||
|
|
||
|
INTERFACE: QueryPos()
|
||
|
|
||
|
PARENT: EVENT
|
||
|
|
||
|
USES: XYPOINT
|
||
|
|
||
|
NOTES:
|
||
|
This event maps to WM_MOVE.
|
||
|
|
||
|
HISTORY:
|
||
|
beng 15-May-1991 Changed QueryPos to return XYPOINT
|
||
|
beng 08-Oct-1991 Win32 conversion
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS MOVE_EVENT: public EVENT
|
||
|
{
|
||
|
public:
|
||
|
MOVE_EVENT( UINT wMsg, WPARAM wParam, LPARAM lParam )
|
||
|
: EVENT( wMsg, wParam, lParam ) {}
|
||
|
|
||
|
XYPOINT QueryPos() const { return XYPOINT(QueryLParam()); }
|
||
|
};
|
||
|
|
||
|
|
||
|
/* This is a WIN32 manifest. See wincon.h. */
|
||
|
|
||
|
#ifdef KEY_EVENT
|
||
|
#undef KEY_EVENT
|
||
|
#endif
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: KEY_EVENT
|
||
|
|
||
|
SYNOPSIS: Describe a keystroke (literal)
|
||
|
|
||
|
INTERFACE: QueryRepeat()
|
||
|
QueryScan()
|
||
|
IsExtended()
|
||
|
IsAltContext()
|
||
|
IsDownPreviously()
|
||
|
IsInTransition()
|
||
|
|
||
|
PARENT: EVENT
|
||
|
|
||
|
CAVEATS:
|
||
|
If these seem confusing, well, the SDK ain't no clearer.
|
||
|
|
||
|
NOTES:
|
||
|
This event maps to the common base of WM_CHAR,
|
||
|
WN_KEYUP, and WM_KEYDOWN.
|
||
|
|
||
|
HISTORY:
|
||
|
beng 07-Oct-1991 Added header
|
||
|
beng 08-Oct-1991 Win32 conversion
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS KEY_EVENT: public EVENT
|
||
|
{
|
||
|
public:
|
||
|
KEY_EVENT( UINT wMsg, WPARAM wParam, LPARAM lParam )
|
||
|
: EVENT( wMsg, wParam, lParam ) {}
|
||
|
|
||
|
UINT QueryRepeat() const { return LOWORD(QueryLParam()); }
|
||
|
BYTE QueryScan() const { return LOBYTE(HIWORD(QueryLParam())); }
|
||
|
BOOL IsExtended() const
|
||
|
{ return HIBYTE(HIWORD(QueryLParam())) & 0x1; }
|
||
|
BOOL IsAltContext() const
|
||
|
{ return HIBYTE(HIWORD(QueryLParam())) & 0x20; }
|
||
|
BOOL IsDownPreviously() const
|
||
|
{ return HIBYTE(HIWORD(QueryLParam())) & 0x40; }
|
||
|
BOOL IsInTransition() const
|
||
|
{ return HIBYTE(HIWORD(QueryLParam())) & 0x80; }
|
||
|
};
|
||
|
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: VKEY_EVENT
|
||
|
|
||
|
SYNOPSIS: Describes a translated-into-virtual-kbd keystroke
|
||
|
|
||
|
INTERFACE: QueryVKey() - returns the virtual key value
|
||
|
|
||
|
PARENT: KEY_EVENT
|
||
|
|
||
|
CAVEATS:
|
||
|
For the literal pre-translation keystroke, use the KEY_EVENT
|
||
|
within. Note that a virtual keystroke may be synthesized from
|
||
|
multiple hard keystrokes, in which case you only get the last
|
||
|
key here.
|
||
|
|
||
|
NOTES:
|
||
|
This event maps to WM_KEYUP and WM_KEYDOWN.
|
||
|
|
||
|
HISTORY:
|
||
|
beng 07-Oct-1991 Added header
|
||
|
beng 08-Oct-1991 Win32 conversion
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS VKEY_EVENT: public KEY_EVENT
|
||
|
{
|
||
|
public:
|
||
|
VKEY_EVENT( UINT wMsg, WPARAM wParam, LPARAM lParam )
|
||
|
: KEY_EVENT( wMsg, wParam, lParam ) {}
|
||
|
|
||
|
WPARAM QueryVKey() const { return QueryWParam(); }
|
||
|
};
|
||
|
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: CHAR_EVENT
|
||
|
|
||
|
SYNOPSIS: Even more translation - this time, to ANSI charset
|
||
|
|
||
|
INTERFACE: QueryChar()
|
||
|
|
||
|
PARENT: KEY_EVENT
|
||
|
|
||
|
CAVEATS:
|
||
|
See VKEY_EVENT
|
||
|
|
||
|
NOTES:
|
||
|
This event maps to WM_CHAR.
|
||
|
|
||
|
HISTORY:
|
||
|
beng 07-Oct-1991 Added header
|
||
|
beng 08-Oct-1991 Win32 conversion
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS CHAR_EVENT: public KEY_EVENT
|
||
|
{
|
||
|
public:
|
||
|
CHAR_EVENT( UINT wMsg, WPARAM wParam, LPARAM lParam )
|
||
|
: KEY_EVENT( wMsg, wParam, lParam ) {}
|
||
|
|
||
|
#if defined(WIN32)
|
||
|
TCHAR QueryChar() const
|
||
|
{
|
||
|
#if defined(UNICODE)
|
||
|
return LOWORD(QueryWParam());
|
||
|
#else
|
||
|
return LOBYTE(LOWORD(QueryWParam()));
|
||
|
#endif
|
||
|
}
|
||
|
#else
|
||
|
WCHAR QueryChar() const { return (WCHAR)QueryWParam(); }
|
||
|
#endif
|
||
|
};
|
||
|
|
||
|
|
||
|
/* This is a WIN32 manifest. See wincon.h. */
|
||
|
|
||
|
#ifdef MOUSE_EVENT
|
||
|
#undef MOUSE_EVENT
|
||
|
#endif
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: MOUSE_EVENT
|
||
|
|
||
|
SYNOPSIS: Describe mouse activity
|
||
|
|
||
|
INTERFACE:
|
||
|
QueryPos() - return position of mouse relative to window
|
||
|
IsLeftButtonDown() - return whether the mouse button was down
|
||
|
IsMiddleButtonDown()
|
||
|
IsRightButtonDown()
|
||
|
IsControlDown() - return whether the modifier-key was down
|
||
|
IsShiftDown()
|
||
|
|
||
|
PARENT: EVENT
|
||
|
|
||
|
USES: XYPOINT
|
||
|
|
||
|
NOTES:
|
||
|
This event maps to WM_MOUSEMOVE and the various
|
||
|
WM_xBUTTONyyy messages.
|
||
|
|
||
|
HISTORY:
|
||
|
beng 07-Oct-1991 Added header
|
||
|
beng 08-Oct-1991 Win32 conversion
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS MOUSE_EVENT: public EVENT
|
||
|
{
|
||
|
public:
|
||
|
MOUSE_EVENT( UINT wMsg, WPARAM wParam, LPARAM lParam )
|
||
|
: EVENT( wMsg, wParam, lParam ) {}
|
||
|
|
||
|
XYPOINT QueryPos() const
|
||
|
{ return XYPOINT(QueryLParam()); }
|
||
|
BOOL IsLeftButtonDown() const
|
||
|
{ return ((QueryWParam() & MK_LBUTTON) != 0); }
|
||
|
BOOL IsMiddleButtonDown() const
|
||
|
{ return ((QueryWParam() & MK_MBUTTON) != 0); }
|
||
|
BOOL IsRightButtonDown() const
|
||
|
{ return ((QueryWParam() & MK_RBUTTON) != 0); }
|
||
|
BOOL IsControlDown() const
|
||
|
{ return ((QueryWParam() & MK_CONTROL) != 0); }
|
||
|
BOOL IsShiftDown() const
|
||
|
{ return ((QueryWParam() & MK_SHIFT) != 0); }
|
||
|
};
|
||
|
|
||
|
|
||
|
/* This, too, is a WIN32 manifest. See wincon.h. */
|
||
|
|
||
|
#ifdef MENU_EVENT
|
||
|
#undef MENU_EVENT
|
||
|
#endif
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: MENU_EVENT
|
||
|
|
||
|
SYNOPSIS: Announce the pulldown of a menu
|
||
|
|
||
|
INTERFACE: QueryMenu() - state which menu was pulled.
|
||
|
(Not terribly useful.)
|
||
|
|
||
|
PARENT: EVENT
|
||
|
|
||
|
NOTES:
|
||
|
This event maps to WM_INITMENU.
|
||
|
|
||
|
HISTORY:
|
||
|
beng 07-Oct-1991 Added header
|
||
|
beng 08-Oct-1991 Win32 conversion
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS MENU_EVENT: public EVENT
|
||
|
{
|
||
|
public:
|
||
|
MENU_EVENT( UINT wMsg, WPARAM wParam, LPARAM lParam )
|
||
|
: EVENT( wMsg, wParam, lParam ) {}
|
||
|
|
||
|
HMENU QueryMenu() const
|
||
|
{ return (HMENU)QueryWParam(); }
|
||
|
};
|
||
|
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: MENUITEM_EVENT
|
||
|
|
||
|
SYNOPSIS: Describe activity within a menu.
|
||
|
|
||
|
This event may be used to synchronize the contents of a status
|
||
|
line with the current menu selection, a la 1-line help.
|
||
|
|
||
|
INTERFACE: QueryMID()
|
||
|
IsChecked()
|
||
|
IsBitmap()
|
||
|
IsDisabled()
|
||
|
IsGrayed()
|
||
|
IsOwnerDraw()
|
||
|
IsSystem()
|
||
|
|
||
|
PARENT: EVENT
|
||
|
|
||
|
CAVEATS:
|
||
|
This event lacks "OnMenuClose" support. Will add if needed.
|
||
|
|
||
|
NOTES:
|
||
|
This event maps to WM_MENUSELECT.
|
||
|
|
||
|
HISTORY:
|
||
|
beng 07-Oct-1991 Added header
|
||
|
beng 08-Oct-1991 Win32 conversion
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS MENUITEM_EVENT: public EVENT
|
||
|
{
|
||
|
private:
|
||
|
WORD QueryFlags() const
|
||
|
{
|
||
|
#if defined(WIN32)
|
||
|
return HIWORD(QueryWParam());
|
||
|
#else
|
||
|
return LOWORD(QueryLParam());
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
public:
|
||
|
MENUITEM_EVENT( UINT wMsg, WPARAM wParam, LPARAM lParam )
|
||
|
: EVENT( wMsg, wParam, lParam ) {}
|
||
|
|
||
|
MID QueryMID() const
|
||
|
{
|
||
|
#if defined(WIN32)
|
||
|
return (MID)LOWORD(QueryWParam());
|
||
|
#else
|
||
|
return (MID)QueryWParam();
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
BOOL IsChecked() const
|
||
|
{ return (QueryFlags() & MF_CHECKED); }
|
||
|
BOOL IsBitmap() const
|
||
|
{ return (QueryFlags() & MF_BITMAP); }
|
||
|
BOOL IsDisabled() const
|
||
|
{ return (QueryFlags() & MF_DISABLED); }
|
||
|
BOOL IsGrayed() const
|
||
|
{ return (QueryFlags() & MF_GRAYED); }
|
||
|
BOOL IsOwnerDraw() const
|
||
|
{ return (QueryFlags() & MF_OWNERDRAW); }
|
||
|
BOOL IsSystem() const
|
||
|
{ return (QueryFlags() & MF_SYSMENU); }
|
||
|
};
|
||
|
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: QMINMAX_EVENT
|
||
|
|
||
|
SYNOPSIS: Return min/max info about a window
|
||
|
|
||
|
INTERFACE:
|
||
|
QueryMaxWidth()
|
||
|
QueryMaxHeight()
|
||
|
QueryMaxPos()
|
||
|
QueryMinTrackWidth()
|
||
|
QueryMinTrackHeight()
|
||
|
QueryMaxTrackWidth()
|
||
|
QueryMaxTrackHeight()
|
||
|
SetMaxWidth()
|
||
|
SetMaxHeight()
|
||
|
SetMaxPos()
|
||
|
SetMinTrackWidth()
|
||
|
SetMinTrackHeight()
|
||
|
SetMaxTrackWidth()
|
||
|
SetMaxTrackHeight()
|
||
|
|
||
|
PARENT: EVENT
|
||
|
|
||
|
USES:
|
||
|
|
||
|
CAVEATS:
|
||
|
|
||
|
NOTES:
|
||
|
Maybe should return XYDIMENSIONs as well?
|
||
|
|
||
|
This event maps to WM_GETMINMAXINFO.
|
||
|
|
||
|
HISTORY:
|
||
|
beng 14-May-1991 Created
|
||
|
beng 08-Oct-1991 Win32 conversion
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS QMINMAX_EVENT: public EVENT
|
||
|
{
|
||
|
private:
|
||
|
POINT * CalcPoint( INT iWhich ) const
|
||
|
{ return ( ((POINT*)QueryLParam()) + iWhich ); }
|
||
|
|
||
|
public:
|
||
|
QMINMAX_EVENT( UINT wMsg, WPARAM wParam, LPARAM lParam )
|
||
|
: EVENT( wMsg, wParam, lParam ) {}
|
||
|
|
||
|
UINT QueryMaxWidth() const
|
||
|
{ return CalcPoint(1)->x; }
|
||
|
UINT QueryMaxHeight() const
|
||
|
{ return CalcPoint(1)->y; }
|
||
|
XYPOINT QueryMaxPos() const
|
||
|
{ return XYPOINT(*(CalcPoint(2))); }
|
||
|
UINT QueryMinTrackWidth() const
|
||
|
{ return CalcPoint(3)->x; }
|
||
|
UINT QueryMinTrackHeight() const
|
||
|
{ return CalcPoint(3)->y; }
|
||
|
UINT QueryMaxTrackWidth() const
|
||
|
{ return CalcPoint(4)->x; }
|
||
|
UINT QueryMaxTrackHeight() const
|
||
|
{ return CalcPoint(4)->y; }
|
||
|
|
||
|
VOID SetMaxWidth( INT dx )
|
||
|
{ CalcPoint(1)->x = dx; }
|
||
|
VOID SetMaxHeight( INT dy )
|
||
|
{ CalcPoint(1)->y = dy; }
|
||
|
VOID SetMaxPos( XYPOINT xy )
|
||
|
{ CalcPoint(2)->x = xy.QueryX();
|
||
|
CalcPoint(2)->y = xy.QueryY(); }
|
||
|
VOID SetMinTrackWidth( INT dx )
|
||
|
{ CalcPoint(3)->x = dx; }
|
||
|
VOID SetMinTrackHeight( INT dy )
|
||
|
{ CalcPoint(3)->y = dy; }
|
||
|
VOID SetMaxTrackWidth( INT dx )
|
||
|
{ CalcPoint(4)->x = dx; }
|
||
|
VOID SetMaxTrackHeight( INT dy )
|
||
|
{ CalcPoint(4)->y = dy; }
|
||
|
};
|
||
|
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: SYSCHANGE_EVENT
|
||
|
|
||
|
SYNOPSIS: Announce a system configuration change
|
||
|
|
||
|
INTERFACE: Completely unknown
|
||
|
|
||
|
PARENT: EVENT
|
||
|
|
||
|
CAVEATS:
|
||
|
This class exists as a placeholder.
|
||
|
|
||
|
HISTORY:
|
||
|
beng 07-Oct-1991 Added this useless header
|
||
|
beng 08-Oct-1991 Win32 conversion
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS SYSCHANGE_EVENT: public EVENT
|
||
|
{
|
||
|
public:
|
||
|
SYSCHANGE_EVENT( UINT wMsg, WPARAM wParam, LPARAM lParam )
|
||
|
: EVENT( wMsg, wParam, lParam ) {}
|
||
|
|
||
|
// totally unspecified for now
|
||
|
};
|
||
|
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: QMOUSEACT_EVENT
|
||
|
|
||
|
SYNOPSIS: Return whether a mousedown activates a control.
|
||
|
|
||
|
INTERFACE: QueryHitTest() - the value returned at OnQHitTest time.
|
||
|
QueryMouseMsg() - the value of the mouse message which
|
||
|
generated this event.
|
||
|
|
||
|
PARENT: EVENT
|
||
|
|
||
|
NOTES:
|
||
|
This event maps to WM_MOUSEACTIVATE.
|
||
|
|
||
|
Should this wrap QueryMouseMsg() further?
|
||
|
|
||
|
HISTORY:
|
||
|
beng 18-May-1992 Created
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS QMOUSEACT_EVENT: public EVENT
|
||
|
{
|
||
|
public:
|
||
|
QMOUSEACT_EVENT( UINT wMsg, WPARAM wParam, LPARAM lParam )
|
||
|
: EVENT( wMsg, wParam, lParam ) {}
|
||
|
|
||
|
UINT QueryMouseMsg() const
|
||
|
{ return (UINT) HIWORD(QueryLParam()); }
|
||
|
UINT QueryHitTest() const
|
||
|
{ return (UINT) LOWORD(QueryLParam()); }
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif // _BLTEVENT_HXX_ - end of file
|