0000: 0d 0a 23 69 6e 63 6c 75 64 65 20 22 73 74 64 61 ..#include "stda
0010: 66 78 2e 68 22 0d 0a 23 69 6e 63 6c 75 64 65 20 fx.h"..#include
0020: 22 43 74 72 6c 45 76 65 6e 74 73 2e 68 22 0d 0a "CtrlEvents.h"..
0030: 0d 0a 43 43 74 72 6c 45 76 65 6e 74 4d 61 6e 61 ..CCtrlEventMana
0040: 67 65 72 3a 3a 43 43 74 72 6c 45 76 65 6e 74 4d ger::CCtrlEventM
0050: 61 6e 61 67 65 72 28 29 0d 0a 7b 0d 0a 7d 0d 0a anager()..{..}..
0060: 0d 0a 43 43 74 72 6c 45 76 65 6e 74 4d 61 6e 61 ..CCtrlEventMana
0070: 67 65 72 3a 3a 7e 43 43 74 72 6c 45 76 65 6e 74 ger::~CCtrlEvent
0080: 4d 61 6e 61 67 65 72 28 29 0d 0a 7b 0d 0a 7d 0d Manager()..{..}.
0090: 0a 0d 0a 76 6f 69 64 20 43 43 74 72 6c 45 76 65 ...void CCtrlEve
00a0: 6e 74 4d 61 6e 61 67 65 72 3a 3a 53 65 74 45 76 ntManager::SetEv
00b0: 65 6e 74 73 28 73 74 43 74 72 6c 45 76 65 6e 74 ents(stCtrlEvent
00c0: 73 2a 20 70 43 74 72 6c 45 76 65 6e 74 73 2c 20 s* pCtrlEvents,
00d0: 69 6e 74 20 6e 43 6f 75 6e 74 2c 0d 0a 20 20 20 int nCount,..
00e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c
0100: 6f 6e 73 74 20 63 68 61 72 2a 20 73 7a 43 6f 64 onst char* szCod
0110: 65 4e 61 6d 65 2c 20 43 42 4c 4d 6f 64 75 6c 65 eName, CBLModule
0120: 2a 20 70 46 6f 72 6d 4d 6f 64 75 6c 65 2c 20 43 * pFormModule, C
0130: 42 4c 43 6f 6e 74 65 78 74 2a 20 70 43 74 72 6c BLContext* pCtrl
0140: 4f 62 6a 65 63 74 2c 0d 0a 20 20 20 20 20 20 20 Object,..
0150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0160: 20 20 20 20 20 20 20 20 20 20 20 43 42 4c 43 6f CBLCo
0170: 6e 74 65 78 74 2a 20 70 44 65 72 69 76 65 64 4f ntext* pDerivedO
0180: 62 6a 65 63 74 29 0d 0a 7b 0d 0a 09 6d 5f 70 43 bject)..{...m_pC
0190: 74 72 6c 45 76 65 6e 74 73 20 3d 20 70 43 74 72 trlEvents = pCtr
01a0: 6c 45 76 65 6e 74 73 3b 0d 0a 09 6d 5f 70 4d 6f lEvents;...m_pMo
01b0: 64 75 6c 65 20 3d 20 70 46 6f 72 6d 4d 6f 64 75 dule = pFormModu
01c0: 6c 65 3b 0d 0a 09 6d 5f 70 43 74 72 6c 4f 62 6a le;...m_pCtrlObj
01d0: 65 63 74 20 3d 20 70 43 74 72 6c 4f 62 6a 65 63 ect = pCtrlObjec
01e0: 74 3b 0d 0a 09 6d 5f 70 44 65 72 69 76 65 64 4f t;...m_pDerivedO
01f0: 62 6a 65 63 74 20 3d 20 70 44 65 72 69 76 65 64 bject = pDerived
0200: 4f 62 6a 65 63 74 3b 0d 0a 0d 0a 09 43 42 4c 50 Object;.....CBLP
0210: 72 6f 63 49 6e 66 6f 20 42 4c 50 72 6f 63 49 6e rocInfo BLProcIn
0220: 66 6f 3b 0d 0a 09 73 74 45 76 65 6e 74 20 65 76 fo;...stEvent ev
0230: 65 6e 74 3b 0d 0a 09 42 4f 4f 4c 20 62 53 75 63 ent;...BOOL bSuc
0240: 63 65 73 73 20 3d 20 54 52 55 45 3b 0d 0a 0d 0a cess = TRUE;....
0250: 09 66 6f 72 20 28 3b 20 6e 43 6f 75 6e 74 20 3e .for (; nCount >
0260: 20 30 3b 20 6e 43 6f 75 6e 74 2d 2d 2c 20 70 43 0; nCount--, pC
0270: 74 72 6c 45 76 65 6e 74 73 2b 2b 29 0d 0a 09 7b trlEvents++)...{
0280: 0d 0a 09 09 43 53 74 72 69 6e 67 20 73 74 72 50 ....CString strP
0290: 72 6f 63 4e 61 6d 65 3b 0d 0a 09 09 69 66 20 28 rocName;....if (
02a0: 73 7a 43 6f 64 65 4e 61 6d 65 29 0d 0a 09 09 09 szCodeName).....
02b0: 73 74 72 50 72 6f 63 4e 61 6d 65 20 3d 20 73 7a strProcName = sz
02c0: 43 6f 64 65 4e 61 6d 65 3b 0d 0a 09 09 73 74 72 CodeName;....str
02d0: 50 72 6f 63 4e 61 6d 65 20 2b 3d 20 70 43 74 72 ProcName += pCtr
02e0: 6c 45 76 65 6e 74 73 2d 3e 73 7a 52 75 73 4e 61 lEvents->szRusNa
02f0: 6d 65 3b 0d 0a 09 09 65 76 65 6e 74 2e 6e 46 6f me;....event.nFo
0300: 72 6d 45 76 65 6e 74 20 3d 20 6d 5f 70 4d 6f 64 rmEvent = m_pMod
0310: 75 6c 65 2d 3e 46 69 6e 64 50 72 6f 63 28 73 74 ule->FindProc(st
0320: 72 50 72 6f 63 4e 61 6d 65 2c 20 30 29 3b 0d 0a rProcName, 0);..
0330: 09 09 69 66 20 28 65 76 65 6e 74 2e 6e 46 6f 72 ..if (event.nFor
0340: 6d 45 76 65 6e 74 20 21 3d 20 2d 31 29 0d 0a 09 mEvent != -1)...
0350: 09 7b 0d 0a 09 09 09 6d 5f 70 4d 6f 64 75 6c 65 .{.....m_pModule
0360: 2d 3e 47 65 74 50 72 6f 63 49 6e 66 6f 28 65 76 ->GetProcInfo(ev
0370: 65 6e 74 2e 6e 46 6f 72 6d 45 76 65 6e 74 2c 42 ent.nFormEvent,B
0380: 4c 50 72 6f 63 49 6e 66 6f 29 3b 0d 0a 09 09 09 LProcInfo);.....
0390: 69 66 20 28 42 4c 50 72 6f 63 49 6e 66 6f 2e 47 if (BLProcInfo.G
03a0: 65 74 4e 50 61 72 61 6d 73 28 29 20 3e 20 70 43 etNParams() > pC
03b0: 74 72 6c 45 76 65 6e 74 73 2d 3e 6e 50 61 72 61 trlEvents->nPara
03c0: 6d 43 6f 75 6e 74 2b 31 29 0d 0a 09 09 09 7b 0d mCount+1).....{.
03d0: 0a 09 09 09 09 43 53 74 72 69 6e 67 20 73 74 72 .....CString str
03e0: 3b 0d 0a 09 09 09 09 73 74 72 2e 46 6f 72 6d 61 ;......str.Forma
03f0: 74 28 22 ca ee eb e8 f7 e5 f1 f2 e2 ee 20 ef e0 t(".......... ..
0400: f0 e0 ec e5 f2 f0 ee e2 20 e2 20 f1 ee e1 fb f2 ........ . .....
0410: e8 e8 20 27 25 73 27 20 e4 ee eb e6 ed ee 20 e1 .. '%s' ...... .
0420: fb f2 fc 20 ec e5 ed fc f8 e5 20 e8 eb e8 20 f0 ... ...... ... .
0430: e0 e2 ed ee 20 25 75 2e 22 2c 0d 0a 09 09 09 09 .... %u.",......
0440: 09 73 74 72 50 72 6f 63 4e 61 6d 65 2c 20 70 43 .strProcName, pC
0450: 74 72 6c 45 76 65 6e 74 73 2d 3e 6e 50 61 72 61 trlEvents->nPara
0460: 6d 43 6f 75 6e 74 2b 31 29 3b 0d 0a 09 09 09 09 mCount+1);......
0470: 70 42 6b 45 6e 64 55 49 2d 3e 44 6f 4d 65 73 73 pBkEndUI->DoMess
0480: 61 67 65 4c 69 6e 65 28 73 74 72 2c 20 6d 6d 42 ageLine(str, mmB
0490: 6c 61 63 6b 45 72 72 29 3b 0d 0a 09 09 09 09 62 lackErr);......b
04a0: 53 75 63 63 65 73 73 20 3d 20 46 41 4c 53 45 3b Success = FALSE;
04b0: 0d 0a 09 09 09 7d 0d 0a 09 09 7d 0d 0a 09 09 65 .....}....}....e
04c0: 6c 73 65 0d 0a 09 09 7b 0d 0a 09 09 09 69 66 20 lse....{.....if
04d0: 28 73 7a 43 6f 64 65 4e 61 6d 65 29 0d 0a 09 09 (szCodeName)....
04e0: 09 09 73 74 72 50 72 6f 63 4e 61 6d 65 20 3d 20 ..strProcName =
04f0: 73 7a 43 6f 64 65 4e 61 6d 65 3b 0d 0a 09 09 09 szCodeName;.....
0500: 73 74 72 50 72 6f 63 4e 61 6d 65 20 2b 3d 20 70 strProcName += p
0510: 43 74 72 6c 45 76 65 6e 74 73 2d 3e 73 7a 45 6e CtrlEvents->szEn
0520: 67 4e 61 6d 65 3b 0d 0a 09 09 09 65 76 65 6e 74 gName;.....event
0530: 2e 6e 46 6f 72 6d 45 76 65 6e 74 20 3d 20 6d 5f .nFormEvent = m_
0540: 70 4d 6f 64 75 6c 65 2d 3e 46 69 6e 64 50 72 6f pModule->FindPro
0550: 63 28 73 74 72 50 72 6f 63 4e 61 6d 65 2c 20 30 c(strProcName, 0
0560: 29 3b 0d 0a 09 09 09 69 66 20 28 65 76 65 6e 74 );.....if (event
0570: 2e 6e 46 6f 72 6d 45 76 65 6e 74 20 21 3d 20 2d .nFormEvent != -
0580: 31 29 0d 0a 09 09 09 7b 0d 0a 09 09 09 09 6d 5f 1).....{......m_
0590: 70 4d 6f 64 75 6c 65 2d 3e 47 65 74 50 72 6f 63 pModule->GetProc
05a0: 49 6e 66 6f 28 65 76 65 6e 74 2e 6e 46 6f 72 6d Info(event.nForm
05b0: 45 76 65 6e 74 2c 42 4c 50 72 6f 63 49 6e 66 6f Event,BLProcInfo
05c0: 29 3b 0d 0a 09 09 09 09 69 66 20 28 42 4c 50 72 );......if (BLPr
05d0: 6f 63 49 6e 66 6f 2e 47 65 74 4e 50 61 72 61 6d ocInfo.GetNParam
05e0: 73 28 29 20 3e 20 70 43 74 72 6c 45 76 65 6e 74 s() > pCtrlEvent
05f0: 73 2d 3e 6e 50 61 72 61 6d 43 6f 75 6e 74 2b 31 s->nParamCount+1
0600: 29 0d 0a 09 09 09 09 7b 0d 0a 09 09 09 09 09 43 )......{.......C
0610: 53 74 72 69 6e 67 20 73 74 72 3b 0d 0a 09 09 09 String str;.....
0620: 09 09 73 74 72 2e 46 6f 72 6d 61 74 28 22 ca ee ..str.Format("..
0630: eb e8 f7 e5 f1 f2 e2 ee 20 ef e0 f0 e0 ec e5 f2 ........ .......
0640: f0 ee e2 20 e2 20 f1 ee e1 fb f2 e8 e8 20 27 25 ... . ....... '%
0650: 73 27 20 e4 ee eb e6 ed ee 20 e1 fb f2 fc 20 ec s' ...... .... .
0660: e5 ed fc f8 e5 20 e8 eb e8 20 f0 e0 e2 ed ee 20 ..... ... .....
0670: 25 75 2e 22 2c 0d 0a 09 09 09 09 09 09 73 74 72 %u.",........str
0680: 50 72 6f 63 4e 61 6d 65 2c 20 70 43 74 72 6c 45 ProcName, pCtrlE
0690: 76 65 6e 74 73 2d 3e 6e 50 61 72 61 6d 43 6f 75 vents->nParamCou
06a0: 6e 74 2b 31 29 3b 0d 0a 09 09 09 09 09 70 42 6b nt+1);.......pBk
06b0: 45 6e 64 55 49 2d 3e 44 6f 4d 65 73 73 61 67 65 EndUI->DoMessage
06c0: 4c 69 6e 65 28 73 74 72 2c 20 6d 6d 42 6c 61 63 Line(str, mmBlac
06d0: 6b 45 72 72 29 3b 0d 0a 09 09 09 09 09 62 53 75 kErr);.......bSu
06e0: 63 63 65 73 73 20 3d 20 46 41 4c 53 45 3b 0d 0a ccess = FALSE;..
06f0: 09 09 09 09 7d 0d 0a 09 09 09 7d 0d 0a 09 09 7d ....}.....}....}
0700: 0d 0a 0d 0a 09 09 69 66 20 28 70 44 65 72 69 76 ......if (pDeriv
0710: 65 64 4f 62 6a 65 63 74 29 0d 0a 09 09 7b 0d 0a edObject)....{..
0720: 09 09 09 65 76 65 6e 74 2e 6e 4f 62 6a 45 76 65 ...event.nObjEve
0730: 6e 74 20 3d 20 70 44 65 72 69 76 65 64 4f 62 6a nt = pDerivedObj
0740: 65 63 74 2d 3e 46 69 6e 64 4d 65 74 68 6f 64 28 ect->FindMethod(
0750: 70 43 74 72 6c 45 76 65 6e 74 73 2d 3e 73 7a 52 pCtrlEvents->szR
0760: 75 73 4e 61 6d 65 29 3b 0d 0a 09 09 09 69 66 20 usName);.....if
0770: 28 65 76 65 6e 74 2e 6e 4f 62 6a 45 76 65 6e 74 (event.nObjEvent
0780: 20 21 3d 20 2d 31 29 0d 0a 09 09 09 7b 0d 0a 09 != -1).....{...
0790: 09 09 09 69 66 20 28 70 44 65 72 69 76 65 64 4f ...if (pDerivedO
07a0: 62 6a 65 63 74 2d 3e 47 65 74 4e 50 61 72 61 6d bject->GetNParam
07b0: 73 28 65 76 65 6e 74 2e 6e 4f 62 6a 45 76 65 6e s(event.nObjEven
07c0: 74 29 20 3e 20 70 43 74 72 6c 45 76 65 6e 74 73 t) > pCtrlEvents
07d0: 2d 3e 6e 50 61 72 61 6d 43 6f 75 6e 74 29 0d 0a ->nParamCount)..
07e0: 09 09 09 09 7b 0d 0a 09 09 09 09 09 43 53 74 72 ....{.......CStr
07f0: 69 6e 67 20 73 74 72 3b 0d 0a 09 09 09 09 09 73 ing str;.......s
0800: 74 72 2e 46 6f 72 6d 61 74 28 22 ca ee eb e8 f7 tr.Format(".....
0810: e5 f1 f2 e2 ee 20 ef e0 f0 e0 ec e5 f2 f0 ee e2 ..... ..........
0820: 20 e2 20 f1 ee e1 fb f2 e8 e8 20 27 25 73 3a 3a . ....... '%s::
0830: 25 73 27 20 20 e4 ee eb e6 ed ee 20 e1 fb f2 fc %s' ...... ....
0840: 20 ec e5 ed fc f8 e5 20 e8 eb e8 20 f0 e0 e2 ed ...... ... ....
0850: ee 20 25 75 2e 22 2c 0d 0a 09 09 09 09 09 09 70 . %u.",........p
0860: 44 65 72 69 76 65 64 4f 62 6a 65 63 74 2d 3e 47 DerivedObject->G
0870: 65 74 54 79 70 65 53 74 72 69 6e 67 28 29 2c 20 etTypeString(),
0880: 70 43 74 72 6c 45 76 65 6e 74 73 2d 3e 73 7a 52 pCtrlEvents->szR
0890: 75 73 4e 61 6d 65 2c 20 70 43 74 72 6c 45 76 65 usName, pCtrlEve
08a0: 6e 74 73 2d 3e 6e 50 61 72 61 6d 43 6f 75 6e 74 nts->nParamCount
08b0: 29 3b 0d 0a 09 09 09 09 09 70 42 6b 45 6e 64 55 );.......pBkEndU
08c0: 49 2d 3e 44 6f 4d 65 73 73 61 67 65 4c 69 6e 65 I->DoMessageLine
08d0: 28 73 74 72 2c 20 6d 6d 42 6c 61 63 6b 45 72 72 (str, mmBlackErr
08e0: 29 3b 0d 0a 09 09 09 09 09 62 53 75 63 63 65 73 );.......bSucces
08f0: 73 20 3d 20 46 41 4c 53 45 3b 0d 0a 09 09 09 09 s = FALSE;......
0900: 7d 0d 0a 09 09 09 7d 0d 0a 09 09 09 65 6c 73 65 }.....}.....else
0910: 0d 0a 09 09 09 7b 0d 0a 09 09 09 09 65 76 65 6e .....{......even
0920: 74 2e 6e 4f 62 6a 45 76 65 6e 74 20 3d 20 70 44 t.nObjEvent = pD
0930: 65 72 69 76 65 64 4f 62 6a 65 63 74 2d 3e 46 69 erivedObject->Fi
0940: 6e 64 4d 65 74 68 6f 64 28 70 43 74 72 6c 45 76 ndMethod(pCtrlEv
0950: 65 6e 74 73 2d 3e 73 7a 45 6e 67 4e 61 6d 65 29 ents->szEngName)
0960: 3b 0d 0a 09 09 09 09 69 66 20 28 65 76 65 6e 74 ;......if (event
0970: 2e 6e 4f 62 6a 45 76 65 6e 74 20 21 3d 20 2d 31 .nObjEvent != -1
0980: 29 0d 0a 09 09 09 09 7b 0d 0a 09 09 09 09 09 69 )......{.......i
0990: 66 20 28 70 44 65 72 69 76 65 64 4f 62 6a 65 63 f (pDerivedObjec
09a0: 74 2d 3e 47 65 74 4e 50 61 72 61 6d 73 28 65 76 t->GetNParams(ev
09b0: 65 6e 74 2e 6e 4f 62 6a 45 76 65 6e 74 29 20 3e ent.nObjEvent) >
09c0: 20 70 43 74 72 6c 45 76 65 6e 74 73 2d 3e 6e 50 pCtrlEvents->nP
09d0: 61 72 61 6d 43 6f 75 6e 74 29 0d 0a 09 09 09 09 aramCount)......
09e0: 09 7b 0d 0a 09 09 09 09 09 09 43 53 74 72 69 6e .{........CStrin
09f0: 67 20 73 74 72 3b 0d 0a 09 09 09 09 09 09 73 74 g str;........st
0a00: 72 2e 46 6f 72 6d 61 74 28 22 ca ee eb e8 f7 e5 r.Format("......
0a10: f1 f2 e2 ee 20 ef e0 f0 e0 ec e5 f2 f0 ee e2 20 .... ..........
0a20: e2 20 f1 ee e1 fb f2 e8 e8 20 27 25 73 3a 3a 25 . ....... '%s::%
0a30: 73 27 20 20 e4 ee eb e6 ed ee 20 e1 fb f2 fc 20 s' ...... ....
0a40: ec e5 ed fc f8 e5 20 e8 eb e8 20 f0 e0 e2 ed ee ...... ... .....
0a50: 20 25 75 2e 22 2c 0d 0a 09 09 09 09 09 09 09 70 %u.",.........p
0a60: 44 65 72 69 76 65 64 4f 62 6a 65 63 74 2d 3e 47 DerivedObject->G
0a70: 65 74 54 79 70 65 53 74 72 69 6e 67 28 29 2c 20 etTypeString(),
0a80: 70 43 74 72 6c 45 76 65 6e 74 73 2d 3e 73 7a 45 pCtrlEvents->szE
0a90: 6e 67 4e 61 6d 65 2c 20 70 43 74 72 6c 45 76 65 ngName, pCtrlEve
0aa0: 6e 74 73 2d 3e 6e 50 61 72 61 6d 43 6f 75 6e 74 nts->nParamCount
0ab0: 29 3b 0d 0a 09 09 09 09 09 09 70 42 6b 45 6e 64 );........pBkEnd
0ac0: 55 49 2d 3e 44 6f 4d 65 73 73 61 67 65 4c 69 6e UI->DoMessageLin
0ad0: 65 28 73 74 72 2c 20 6d 6d 42 6c 61 63 6b 45 72 e(str, mmBlackEr
0ae0: 72 29 3b 0d 0a 09 09 09 09 09 09 62 53 75 63 63 r);........bSucc
0af0: 65 73 73 20 3d 20 46 41 4c 53 45 3b 0d 0a 09 09 ess = FALSE;....
0b00: 09 09 09 7d 0d 0a 09 09 09 09 7d 0d 0a 09 09 09 ...}......}.....
0b10: 7d 0d 0a 09 09 7d 0d 0a 09 09 65 6c 73 65 0d 0a }....}....else..
0b20: 09 09 09 65 76 65 6e 74 2e 6e 4f 62 6a 45 76 65 ...event.nObjEve
0b30: 6e 74 20 3d 20 2d 31 3b 0d 0a 0d 0a 09 09 6d 5f nt = -1;......m_
0b40: 65 76 65 6e 74 73 2e 41 64 64 28 65 76 65 6e 74 events.Add(event
0b50: 29 3b 0d 0a 0d 0a 09 7d 0d 0a 0d 0a 09 69 66 20 );.....}.....if
0b60: 28 21 62 53 75 63 63 65 73 73 29 0d 0a 09 09 43 (!bSuccess)....C
0b70: 42 4c 4d 6f 64 75 6c 65 3a 3a 52 61 69 73 65 45 BLModule::RaiseE
0b80: 78 74 52 75 6e 74 69 6d 65 45 72 72 6f 72 28 22 xtRuntimeError("
0b90: ce f8 e8 e1 ea e0 20 ef ee e4 ea eb fe f7 e5 ed ...... .........
0ba0: e8 ff 20 f1 ee e1 fb f2 e8 e9 22 2c 20 6d 6d 52 .. .......", mmR
0bb0: 65 64 45 72 72 29 3b 0d 0a 7d 0d 0a 0d 0a 42 4f edErr);..}....BO
0bc0: 4f 4c 20 43 43 74 72 6c 45 76 65 6e 74 4d 61 6e OL CCtrlEventMan
0bd0: 61 67 65 72 3a 3a 49 73 41 70 70 6f 69 6e 74 65 ager::IsAppointe
0be0: 64 28 69 6e 74 20 6e 45 76 65 6e 74 49 6e 64 65 d(int nEventInde
0bf0: 78 29 0d 0a 7b 0d 0a 09 73 74 45 76 65 6e 74 26 x)..{...stEvent&
0c00: 20 65 76 65 6e 74 20 3d 20 6d 5f 65 76 65 6e 74 event = m_event
0c10: 73 5b 6e 45 76 65 6e 74 49 6e 64 65 78 5d 3b 0d s[nEventIndex];.
0c20: 0a 09 72 65 74 75 72 6e 20 65 76 65 6e 74 2e 6e ..return event.n
0c30: 46 6f 72 6d 45 76 65 6e 74 20 21 3d 20 2d 31 20 FormEvent != -1
0c40: 7c 7c 20 65 76 65 6e 74 2e 6e 4f 62 6a 45 76 65 || event.nObjEve
0c50: 6e 74 20 21 3d 20 2d 31 3b 0d 0a 7d 0d 0a 0d 0a nt != -1;..}....
0c60: 42 4f 4f 4c 20 43 43 74 72 6c 45 76 65 6e 74 4d BOOL CCtrlEventM
0c70: 61 6e 61 67 65 72 3a 3a 49 6e 76 6f 6b 65 28 69 anager::Invoke(i
0c80: 6e 74 20 6e 45 76 65 6e 74 49 6e 64 65 78 2c 20 nt nEventIndex,
0c90: 2e 2e 2e 29 0d 0a 7b 0d 0a 20 20 20 20 43 54 79 ...)..{.. CTy
0ca0: 70 65 64 50 74 72 41 72 72 61 79 3c 43 50 74 72 pedPtrArray<CPtr
0cb0: 41 72 72 61 79 2c 20 43 56 61 6c 75 65 2a 3e 20 Array, CValue*>
0cc0: 70 61 72 61 6d 73 3b 0d 0a 20 20 20 20 43 56 61 params;.. CVa
0cd0: 6c 75 65 20 76 43 74 72 6c 3b 0d 0a 20 20 20 20 lue vCtrl;..
0ce0: 76 43 74 72 6c 2e 41 73 73 69 67 6e 43 6f 6e 74 vCtrl.AssignCont
0cf0: 65 78 74 28 6d 5f 70 43 74 72 6c 4f 62 6a 65 63 ext(m_pCtrlObjec
0d00: 74 29 3b 0d 0a 20 20 20 20 70 61 72 61 6d 73 2e t);.. params.
0d10: 41 64 64 28 26 76 43 74 72 6c 29 3b 0d 0a 0d 0a Add(&vCtrl);....
0d20: 20 20 20 20 76 61 5f 6c 69 73 74 20 70 61 72 5f va_list par_
0d30: 69 74 3b 0d 0a 20 20 20 20 76 61 5f 73 74 61 72 it;.. va_star
0d40: 74 28 70 61 72 5f 69 74 2c 20 6e 45 76 65 6e 74 t(par_it, nEvent
0d50: 49 6e 64 65 78 29 3b 0d 0a 20 20 20 20 66 6f 72 Index);.. for
0d60: 20 28 69 6e 74 20 69 20 3d 20 30 3b 20 69 20 3c (int i = 0; i <
0d70: 20 6d 5f 70 43 74 72 6c 45 76 65 6e 74 73 5b 6e m_pCtrlEvents[n
0d80: 45 76 65 6e 74 49 6e 64 65 78 5d 2e 6e 50 61 72 EventIndex].nPar
0d90: 61 6d 43 6f 75 6e 74 3b 20 69 2b 2b 29 0d 0a 20 amCount; i++)..
0da0: 20 20 20 20 20 20 20 70 61 72 61 6d 73 2e 41 64 params.Ad
0db0: 64 28 76 61 5f 61 72 67 28 70 61 72 5f 69 74 2c d(va_arg(par_it,
0dc0: 20 43 56 61 6c 75 65 2a 29 29 3b 0d 0a 20 20 20 CValue*));..
0dd0: 20 76 61 5f 65 6e 64 28 70 61 72 5f 69 74 29 3b va_end(par_it);
0de0: 0d 0a 0d 0a 20 20 20 20 72 65 74 75 72 6e 20 49 .... return I
0df0: 6e 76 6f 6b 65 45 76 65 6e 74 28 6e 45 76 65 6e nvokeEvent(nEven
0e00: 74 49 6e 64 65 78 2c 20 28 43 56 61 6c 75 65 2a tIndex, (CValue*
0e10: 2a 29 28 70 61 72 61 6d 73 2e 47 65 74 44 61 74 *)(params.GetDat
0e20: 61 28 29 29 29 3b 0d 0a 7d 0d 0a 0d 0a 42 4f 4f a()));..}....BOO
0e30: 4c 20 43 43 74 72 6c 45 76 65 6e 74 4d 61 6e 61 L CCtrlEventMana
0e40: 67 65 72 3a 3a 49 6e 76 6f 6b 65 30 28 69 6e 74 ger::Invoke0(int
0e50: 20 6e 45 76 65 6e 74 49 6e 64 65 78 29 0d 0a 7b nEventIndex)..{
0e60: 0d 0a 09 43 56 61 6c 75 65 20 76 43 74 72 6c 3b ...CValue vCtrl;
0e70: 0d 0a 20 20 20 20 76 43 74 72 6c 2e 41 73 73 69 .. vCtrl.Assi
0e80: 67 6e 43 6f 6e 74 65 78 74 28 6d 5f 70 43 74 72 gnContext(m_pCtr
0e90: 6c 4f 62 6a 65 63 74 29 3b 0d 0a 20 20 20 20 43 lObject);.. C
0ea0: 56 61 6c 75 65 2a 20 70 56 61 6c 75 65 20 3d 20 Value* pValue =
0eb0: 26 76 43 74 72 6c 3b 0d 0a 20 20 20 20 72 65 74 &vCtrl;.. ret
0ec0: 75 72 6e 20 49 6e 76 6f 6b 65 45 76 65 6e 74 28 urn InvokeEvent(
0ed0: 6e 45 76 65 6e 74 49 6e 64 65 78 2c 20 26 70 56 nEventIndex, &pV
0ee0: 61 6c 75 65 29 3b 0d 0a 7d 0d 0a 0d 0a 42 4f 4f alue);..}....BOO
0ef0: 4c 20 43 43 74 72 6c 45 76 65 6e 74 4d 61 6e 61 L CCtrlEventMana
0f00: 67 65 72 3a 3a 49 6e 76 6f 6b 65 31 28 69 6e 74 ger::Invoke1(int
0f10: 20 6e 45 76 65 6e 74 49 6e 64 65 78 2c 20 43 56 nEventIndex, CV
0f20: 61 6c 75 65 26 20 76 50 31 29 0d 0a 7b 0d 0a 20 alue& vP1)..{..
0f30: 20 20 20 43 56 61 6c 75 65 20 76 43 74 72 6c 3b CValue vCtrl;
0f40: 0d 0a 20 20 20 20 76 43 74 72 6c 2e 41 73 73 69 .. vCtrl.Assi
0f50: 67 6e 43 6f 6e 74 65 78 74 28 6d 5f 70 43 74 72 gnContext(m_pCtr
0f60: 6c 4f 62 6a 65 63 74 29 3b 0d 0a 20 20 20 20 43 lObject);.. C
0f70: 56 61 6c 75 65 2a 20 70 70 56 61 6c 75 65 73 5b Value* ppValues[
0f80: 5d 20 3d 20 7b 26 76 43 74 72 6c 2c 20 26 76 50 ] = {&vCtrl, &vP
0f90: 31 7d 3b 0d 0a 20 20 20 20 72 65 74 75 72 6e 20 1};.. return
0fa0: 49 6e 76 6f 6b 65 45 76 65 6e 74 28 6e 45 76 65 InvokeEvent(nEve
0fb0: 6e 74 49 6e 64 65 78 2c 20 70 70 56 61 6c 75 65 ntIndex, ppValue
0fc0: 73 29 3b 0d 0a 7d 0d 0a 0d 0a 42 4f 4f 4c 20 43 s);..}....BOOL C
0fd0: 43 74 72 6c 45 76 65 6e 74 4d 61 6e 61 67 65 72 CtrlEventManager
0fe0: 3a 3a 49 6e 76 6f 6b 65 32 28 69 6e 74 20 6e 45 ::Invoke2(int nE
0ff0: 76 65 6e 74 49 6e 64 65 78 2c 20 43 56 61 6c 75 ventIndex, CValu
1000: 65 26 20 76 50 31 2c 20 43 56 61 6c 75 65 26 20 e& vP1, CValue&
1010: 76 50 32 29 0d 0a 7b 0d 0a 20 20 20 20 43 56 61 vP2)..{.. CVa
1020: 6c 75 65 20 76 43 74 72 6c 3b 0d 0a 20 20 20 20 lue vCtrl;..
1030: 76 43 74 72 6c 2e 41 73 73 69 67 6e 43 6f 6e 74 vCtrl.AssignCont
1040: 65 78 74 28 6d 5f 70 43 74 72 6c 4f 62 6a 65 63 ext(m_pCtrlObjec
1050: 74 29 3b 0d 0a 20 20 20 20 43 56 61 6c 75 65 2a t);.. CValue*
1060: 20 70 70 56 61 6c 75 65 73 5b 5d 20 3d 20 7b 26 ppValues[] = {&
1070: 76 43 74 72 6c 2c 20 26 76 50 31 2c 20 26 76 50 vCtrl, &vP1, &vP
1080: 32 7d 3b 0d 0a 20 20 20 20 72 65 74 75 72 6e 20 2};.. return
1090: 49 6e 76 6f 6b 65 45 76 65 6e 74 28 6e 45 76 65 InvokeEvent(nEve
10a0: 6e 74 49 6e 64 65 78 2c 20 70 70 56 61 6c 75 65 ntIndex, ppValue
10b0: 73 29 3b 0d 0a 7d 0d 0a 0d 0a 42 4f 4f 4c 20 43 s);..}....BOOL C
10c0: 43 74 72 6c 45 76 65 6e 74 4d 61 6e 61 67 65 72 CtrlEventManager
10d0: 3a 3a 49 6e 76 6f 6b 65 33 28 69 6e 74 20 6e 45 ::Invoke3(int nE
10e0: 76 65 6e 74 49 6e 64 65 78 2c 20 43 56 61 6c 75 ventIndex, CValu
10f0: 65 26 20 76 50 31 2c 20 43 56 61 6c 75 65 26 20 e& vP1, CValue&
1100: 76 50 32 2c 20 43 56 61 6c 75 65 26 20 76 50 33 vP2, CValue& vP3
1110: 29 0d 0a 7b 0d 0a 20 20 20 20 43 56 61 6c 75 65 )..{.. CValue
1120: 20 76 43 74 72 6c 3b 0d 0a 20 20 20 20 76 43 74 vCtrl;.. vCt
1130: 72 6c 2e 41 73 73 69 67 6e 43 6f 6e 74 65 78 74 rl.AssignContext
1140: 28 6d 5f 70 43 74 72 6c 4f 62 6a 65 63 74 29 3b (m_pCtrlObject);
1150: 0d 0a 20 20 20 20 43 56 61 6c 75 65 2a 20 70 70 .. CValue* pp
1160: 56 61 6c 75 65 73 5b 5d 20 3d 20 7b 26 76 43 74 Values[] = {&vCt
1170: 72 6c 2c 20 26 76 50 31 2c 20 26 76 50 32 2c 20 rl, &vP1, &vP2,
1180: 26 76 50 33 7d 3b 0d 0a 20 20 20 20 72 65 74 75 &vP3};.. retu
1190: 72 6e 20 49 6e 76 6f 6b 65 45 76 65 6e 74 28 6e rn InvokeEvent(n
11a0: 45 76 65 6e 74 49 6e 64 65 78 2c 20 70 70 56 61 EventIndex, ppVa
11b0: 6c 75 65 73 29 3b 0d 0a 7d 0d 0a 0d 0a 42 4f 4f lues);..}....BOO
11c0: 4c 20 43 43 74 72 6c 45 76 65 6e 74 4d 61 6e 61 L CCtrlEventMana
11d0: 67 65 72 3a 3a 49 6e 76 6f 6b 65 34 28 69 6e 74 ger::Invoke4(int
11e0: 20 6e 45 76 65 6e 74 49 6e 64 65 78 2c 20 43 56 nEventIndex, CV
11f0: 61 6c 75 65 26 20 76 50 31 2c 20 43 56 61 6c 75 alue& vP1, CValu
1200: 65 26 20 76 50 32 2c 20 43 56 61 6c 75 65 26 20 e& vP2, CValue&
1210: 76 50 33 2c 20 43 56 61 6c 75 65 26 20 76 50 34 vP3, CValue& vP4
1220: 29 0d 0a 7b 0d 0a 20 20 20 20 43 56 61 6c 75 65 )..{.. CValue
1230: 20 76 43 74 72 6c 3b 0d 0a 20 20 20 20 76 43 74 vCtrl;.. vCt
1240: 72 6c 2e 41 73 73 69 67 6e 43 6f 6e 74 65 78 74 rl.AssignContext
1250: 28 6d 5f 70 43 74 72 6c 4f 62 6a 65 63 74 29 3b (m_pCtrlObject);
1260: 0d 0a 20 20 20 20 43 56 61 6c 75 65 2a 20 70 70 .. CValue* pp
1270: 56 61 6c 75 65 73 5b 5d 20 3d 20 7b 26 76 43 74 Values[] = {&vCt
1280: 72 6c 2c 20 26 76 50 31 2c 20 26 76 50 32 2c 20 rl, &vP1, &vP2,
1290: 26 76 50 33 2c 20 26 76 50 34 7d 3b 0d 0a 20 20 &vP3, &vP4};..
12a0: 20 20 72 65 74 75 72 6e 20 49 6e 76 6f 6b 65 45 return InvokeE
12b0: 76 65 6e 74 28 6e 45 76 65 6e 74 49 6e 64 65 78 vent(nEventIndex
12c0: 2c 20 70 70 56 61 6c 75 65 73 29 3b 0d 0a 7d 0d , ppValues);..}.
12d0: 0a 0d 0a 42 4f 4f 4c 20 43 43 74 72 6c 45 76 65 ...BOOL CCtrlEve
12e0: 6e 74 4d 61 6e 61 67 65 72 3a 3a 49 6e 76 6f 6b ntManager::Invok
12f0: 65 35 28 69 6e 74 20 6e 45 76 65 6e 74 49 6e 64 e5(int nEventInd
1300: 65 78 2c 20 43 56 61 6c 75 65 26 20 76 50 31 2c ex, CValue& vP1,
1310: 20 43 56 61 6c 75 65 26 20 76 50 32 2c 20 43 56 CValue& vP2, CV
1320: 61 6c 75 65 26 20 76 50 33 2c 20 43 56 61 6c 75 alue& vP3, CValu
1330: 65 26 20 76 50 34 2c 20 43 56 61 6c 75 65 26 20 e& vP4, CValue&
1340: 76 50 35 29 0d 0a 7b 0d 0a 20 20 20 20 43 56 61 vP5)..{.. CVa
1350: 6c 75 65 20 76 43 74 72 6c 3b 0d 0a 20 20 20 20 lue vCtrl;..
1360: 76 43 74 72 6c 2e 41 73 73 69 67 6e 43 6f 6e 74 vCtrl.AssignCont
1370: 65 78 74 28 6d 5f 70 43 74 72 6c 4f 62 6a 65 63 ext(m_pCtrlObjec
1380: 74 29 3b 0d 0a 20 20 20 20 43 56 61 6c 75 65 2a t);.. CValue*
1390: 20 70 70 56 61 6c 75 65 73 5b 5d 20 3d 20 7b 26 ppValues[] = {&
13a0: 76 43 74 72 6c 2c 20 26 76 50 31 2c 20 26 76 50 vCtrl, &vP1, &vP
13b0: 32 2c 20 26 76 50 33 2c 20 26 76 50 34 2c 20 26 2, &vP3, &vP4, &
13c0: 76 50 35 7d 3b 0d 0a 20 20 20 20 72 65 74 75 72 vP5};.. retur
13d0: 6e 20 49 6e 76 6f 6b 65 45 76 65 6e 74 28 6e 45 n InvokeEvent(nE
13e0: 76 65 6e 74 49 6e 64 65 78 2c 20 70 70 56 61 6c ventIndex, ppVal
13f0: 75 65 73 29 3b 0d 0a 7d 0d 0a 0d 0a 42 4f 4f 4c ues);..}....BOOL
1400: 20 43 43 74 72 6c 45 76 65 6e 74 4d 61 6e 61 67 CCtrlEventManag
1410: 65 72 3a 3a 49 6e 76 6f 6b 65 36 28 69 6e 74 20 er::Invoke6(int
1420: 6e 45 76 65 6e 74 49 6e 64 65 78 2c 20 43 56 61 nEventIndex, CVa
1430: 6c 75 65 26 20 76 50 31 2c 20 43 56 61 6c 75 65 lue& vP1, CValue
1440: 26 20 76 50 32 2c 20 43 56 61 6c 75 65 26 20 76 & vP2, CValue& v
1450: 50 33 2c 20 43 56 61 6c 75 65 26 20 76 50 34 2c P3, CValue& vP4,
1460: 20 43 56 61 6c 75 65 26 20 76 50 35 2c 20 43 56 CValue& vP5, CV
1470: 61 6c 75 65 26 20 76 50 36 29 0d 0a 7b 0d 0a 20 alue& vP6)..{..
1480: 20 20 20 43 56 61 6c 75 65 20 76 43 74 72 6c 3b CValue vCtrl;
1490: 0d 0a 20 20 20 20 76 43 74 72 6c 2e 41 73 73 69 .. vCtrl.Assi
14a0: 67 6e 43 6f 6e 74 65 78 74 28 6d 5f 70 43 74 72 gnContext(m_pCtr
14b0: 6c 4f 62 6a 65 63 74 29 3b 0d 0a 20 20 20 20 43 lObject);.. C
14c0: 56 61 6c 75 65 2a 20 70 70 56 61 6c 75 65 73 5b Value* ppValues[
14d0: 5d 20 3d 20 7b 26 76 43 74 72 6c 2c 20 26 76 50 ] = {&vCtrl, &vP
14e0: 31 2c 20 26 76 50 32 2c 20 26 76 50 33 2c 20 26 1, &vP2, &vP3, &
14f0: 76 50 34 2c 20 26 76 50 35 2c 20 26 76 50 36 7d vP4, &vP5, &vP6}
1500: 3b 0d 0a 20 20 20 20 72 65 74 75 72 6e 20 49 6e ;.. return In
1510: 76 6f 6b 65 45 76 65 6e 74 28 6e 45 76 65 6e 74 vokeEvent(nEvent
1520: 49 6e 64 65 78 2c 20 70 70 56 61 6c 75 65 73 29 Index, ppValues)
1530: 3b 0d 0a 7d 0d 0a 0d 0a 43 42 4c 43 6f 6e 74 65 ;..}....CBLConte
1540: 78 74 2a 20 43 43 74 72 6c 45 76 65 6e 74 4d 61 xt* CCtrlEventMa
1550: 6e 61 67 65 72 3a 3a 47 65 74 43 74 72 6c 4f 62 nager::GetCtrlOb
1560: 6a 65 63 74 28 29 20 63 6f 6e 73 74 0d 0a 7b 0d ject() const..{.
1570: 0a 20 20 20 20 72 65 74 75 72 6e 20 6d 5f 70 43 . return m_pC
1580: 74 72 6c 4f 62 6a 65 63 74 3b 0d 0a 7d 0d 0a 0d trlObject;..}...
1590: 0a 76 6f 69 64 20 43 43 74 72 6c 45 76 65 6e 74 .void CCtrlEvent
15a0: 4d 61 6e 61 67 65 72 3a 3a 53 65 74 43 74 72 6c Manager::SetCtrl
15b0: 4f 62 6a 65 63 74 28 43 42 4c 43 6f 6e 74 65 78 Object(CBLContex
15c0: 74 2a 20 70 43 74 72 6c 4f 62 6a 65 63 74 29 0d t* pCtrlObject).
15d0: 0a 7b 0d 0a 20 20 20 20 6d 5f 70 43 74 72 6c 4f .{.. m_pCtrlO
15e0: 62 6a 65 63 74 20 3d 20 70 43 74 72 6c 4f 62 6a bject = pCtrlObj
15f0: 65 63 74 3b 0d 0a 7d 0d 0a 0d 0a 43 42 4c 43 6f ect;..}....CBLCo
1600: 6e 74 65 78 74 2a 20 43 43 74 72 6c 45 76 65 6e ntext* CCtrlEven
1610: 74 4d 61 6e 61 67 65 72 3a 3a 47 65 74 44 65 72 tManager::GetDer
1620: 69 76 65 64 4f 62 6a 65 63 74 28 29 20 63 6f 6e ivedObject() con
1630: 73 74 0d 0a 7b 0d 0a 20 20 20 20 72 65 74 75 72 st..{.. retur
1640: 6e 20 6d 5f 70 44 65 72 69 76 65 64 4f 62 6a 65 n m_pDerivedObje
1650: 63 74 3b 0d 0a 7d 0d 0a 0d 0a 42 4f 4f 4c 20 43 ct;..}....BOOL C
1660: 43 74 72 6c 45 76 65 6e 74 4d 61 6e 61 67 65 72 CtrlEventManager
1670: 3a 3a 49 6e 76 6f 6b 65 45 76 65 6e 74 28 69 6e ::InvokeEvent(in
1680: 74 20 6e 45 76 65 6e 74 49 6e 64 65 78 2c 20 43 t nEventIndex, C
1690: 56 61 6c 75 65 2a 2a 20 70 70 56 61 6c 75 65 73 Value** ppValues
16a0: 50 61 72 61 6d 73 29 0d 0a 7b 0d 0a 20 20 20 20 Params)..{..
16b0: 42 4f 4f 4c 20 62 53 75 63 63 65 73 73 20 3d 20 BOOL bSuccess =
16c0: 54 52 55 45 3b 0d 0a 20 20 20 20 73 74 45 76 65 TRUE;.. stEve
16d0: 6e 74 26 20 65 76 65 6e 74 20 3d 20 6d 5f 65 76 nt& event = m_ev
16e0: 65 6e 74 73 5b 6e 45 76 65 6e 74 49 6e 64 65 78 ents[nEventIndex
16f0: 5d 3b 0d 0a 0d 0a 09 69 66 20 28 65 76 65 6e 74 ];.....if (event
1700: 2e 6e 4f 62 6a 45 76 65 6e 74 20 21 3d 20 2d 31 .nObjEvent != -1
1710: 29 0d 0a 09 09 62 53 75 63 63 65 73 73 20 3d 20 )....bSuccess =
1720: 6d 5f 70 44 65 72 69 76 65 64 4f 62 6a 65 63 74 m_pDerivedObject
1730: 2d 3e 43 61 6c 6c 41 73 50 72 6f 63 28 65 76 65 ->CallAsProc(eve
1740: 6e 74 2e 6e 4f 62 6a 45 76 65 6e 74 2c 20 70 70 nt.nObjEvent, pp
1750: 56 61 6c 75 65 73 50 61 72 61 6d 73 20 2b 20 31 ValuesParams + 1
1760: 29 3b 0d 0a 0d 0a 09 69 66 20 28 62 53 75 63 63 );.....if (bSucc
1770: 65 73 73 20 26 26 20 65 76 65 6e 74 2e 6e 46 6f ess && event.nFo
1780: 72 6d 45 76 65 6e 74 20 21 3d 20 2d 31 29 0d 0a rmEvent != -1)..
1790: 09 09 6d 5f 70 4d 6f 64 75 6c 65 2d 3e 43 61 6c ..m_pModule->Cal
17a0: 6c 41 73 50 72 6f 63 28 65 76 65 6e 74 2e 6e 46 lAsProc(event.nF
17b0: 6f 72 6d 45 76 65 6e 74 2c 20 6d 5f 70 43 74 72 ormEvent, m_pCtr
17c0: 6c 45 76 65 6e 74 73 5b 6e 45 76 65 6e 74 49 6e lEvents[nEventIn
17d0: 64 65 78 5d 2e 6e 50 61 72 61 6d 43 6f 75 6e 74 dex].nParamCount
17e0: 20 2b 20 31 2c 20 70 70 56 61 6c 75 65 73 50 61 + 1, ppValuesPa
17f0: 72 61 6d 73 29 3b 0d 0a 20 20 20 20 0d 0a 20 20 rams);.. ..
1800: 20 20 72 65 74 75 72 6e 20 62 53 75 63 63 65 73 return bSucces
1810: 73 3b 0d 0a 7d 0d 0a s;..}..