#ifndef _COMMON_VECTORHANDLER_HPP_ #define _COMMON_VECTORHANDLER_HPP_ #ifndef _COMMON_CALLBACK_HPP_ #include #endif #ifndef _COMMON_BLOCK_HPP_ #include #endif class VectorHandler { public: enum CallOrder{FirstHandler,NormalHandler}; enum HandlerType {NCCreateHandler,CreateHandler,InitDialogHandler,SizeHandler,PaintHandler, EraseBackgroundHandler,CommandHandler,TimerHandler,CompactingHandler,WinIniChangeHandler, SetFontHandler,SysColorChangeHandler,LeftButtonDoubleHandler,SetFocusHandler,KillFocusHandler, KeyUpHandler,KeyDownHandler,SysKeyDownHandler,SysKeyUpHandler,MinMaxHandler,EnterIdleHandler, MenuSelectHandler,DrawItemHandler,CloseHandler,CharHandler,LeftButtonDownHandler,LeftButtonUpHandler, RightButtonDoubleHandler,RightButtonDownHandler,RightButtonUpHandler,NCLeftButtonDownHandler, NCLeftButtonUpHandler,NCRightButtonDownHandler,NCRightButtonUpHandler,MouseMoveHandler, ControlColorHandler,DDEInitiateHandler,DDEAckHandler,DDERequestHandler,DDETerminateHandler, DDEDataHandler,MMOpenHandler,MMCloseHandler,MMDoneHandler,NCDestroyHandler,DestroyHandler, NotifyHandler,DialogCodeHandler,MeasureItemHandler,HorizontalScrollHandler,VerticalScrollHandler, DropFilesHandler,PaletteChangedHandler,MDIActivateHandler,MDIDestroyHandler,QueryEndSessionHandler, UserHandler,ChangeCBChainHandler,DrawClipboardHandler,ActivateAppHandler,DisplayChangeHandler, ShowWindowHandler,CaptureChangedHandler,DeviceChangeHandler}; VectorHandler(void); virtual ~VectorHandler(); WORD insertHandler(HandlerType handlerType,PureCallback *lpCallback,CallOrder callOrder=NormalHandler); void removeHandler(HandlerType handlerType,PureCallback *lpCallback); CallbackData::ReturnType callHandlers(HandlerType handlerType,CallbackData someCallbackData); protected: WORD isValidHandler(HandlerType handlerType,int vectorIndex)const; WORD installedHandlers(HandlerType handlerType)const; private: CallbackData::ReturnType callHandler(Block &someCallbackVector,CallbackData &someCallbackData); void removeHandler(Block &someCallbackVector,CallbackPointer &locatePointer); WORD handlers(Block &someCallbackVector)const; WORD insert(Block &someHandlerBlock,PureCallback *lpCallback,CallOrder callOrder); Block mNCCreateVector; Block mCreateVector; Block mInitDialogVector; Block mSizeVector; Block mPaintVector; Block mCommandVector; Block mCompactingVector; Block mWinIniChangeVector; Block mSysColorChangeVector; Block mLeftButtonDoubleVector; Block mLeftButtonDownVector; Block mLeftButtonUpVector; Block mNCLeftButtonDownVector; Block mNCLeftButtonUpVector; Block mNCRightButtonDownVector; Block mNCRightButtonUpVector; Block mRightButtonDoubleVector; Block mRightButtonDownVector; Block mRightButtonUpVector; Block mTimerVector; Block mSetFocusVector; Block mKillFocusVector; Block mKeyUpVector; Block mKeyDownVector; Block mSysKeyDownVector; Block mSysKeyUpVector; Block mMinMaxVector; Block mEnterIdleVector; Block mMenuSelectVector; Block mDrawItemVector; Block mCloseVector; Block mCharVector; Block mMouseMoveVector; Block mNCDestroyVector; Block mDestroyVector; Block mControlColorVector; Block mNotifyVector; Block mDDEInitiateVector; Block mDDEAckVector; Block mDDERequestVector; Block mDDETerminateVector; Block mDDEDataVector; Block mMMOpenVector; Block mMMCloseVector; Block mMMDoneVector; Block mDialogCodeVector; Block mSetFontVector; Block mMeasureItemVector; Block mVerticalScrollVector; Block mHorizontalScrollVector; Block mEraseBackgroundVector; Block mDropFilesVector; Block mPaletteChangedVector; Block mMDIActivateVector; Block mMDIDestroyVector; Block mQueryEndSessionVector; Block mUserVector; Block mChangeCBChainVector; Block mDrawClipboardVector; Block mActivateAppVector; Block mDisplayChangeVector; Block mShowWindowVector; Block mCaptureChangedVector; Block mDeviceChangeVector; }; inline VectorHandler::VectorHandler(void) { } inline VectorHandler::~VectorHandler() { } inline WORD VectorHandler::handlers(Block &someCallbackVector)const { return (WORD)someCallbackVector.size(); } inline WORD VectorHandler::isValidHandler(HandlerType handlerType,int vectorIndex)const { return (vectorIndex