/****************************************************************************** * * * Tut_Mngr.hpp : declaration of the TUT_CTutorialManager class * * * * This class can take the control of all windows of the application * * to create a tutorial or an automatic test * * * * Author : Alexis Vaisse * * * ******************************************************************************/ #ifndef _TUT_MNGR_HPP_ #define _TUT_MNGR_HPP_ #pragma once #include //--------------------------- error codes ------------------------------------- #define TUT_C_iNoError 0 #define TUT_C_iError_FileNotFound 1 #define TUT_C_iError_UnknownCommand 2 #define TUT_C_iError_TooManyParameters 3 #define TUT_C_iError_ParameterRequired 4 #define TUT_C_iError_UnknownButton 5 #define TUT_C_iError_ButtonRequired 6 #define TUT_C_iError_InvalidCoordinates 7 #define TUT_C_iError_NoWindowToWriteText 8 #define TUT_C_iError_InvalidNumber 9 #define TUT_C_iError_UnknownTextEdit 10 #define TUT_C_iError_TextEditRequired 11 #define TUT_C_iError_UnknownWindow 12 #define TUT_C_iError_UnknownComboBox 13 #define TUT_C_iError_ListOrComboRequired 14 #define TUT_C_iError_UnknownMdiWindow 15 #define TUT_C_iError_MdiWindowRequired 16 #define TUT_C_iError_UnknownColor 17 #define TUT_C_iError_UnknownControl 18 #define TUT_C_iError_SelectCtrlRequired 19 #define TUT_C_iError_InvalidTextAlignment 20 #define TUT_C_iError_UnknownTreeBox 21 #define TUT_C_iError_TreeBoxRequired 22 #define TUT_C_iError_FunctionNotCompiled 23 #define TUT_C_iError_Unknown3dObject 24 #define TUT_C_iError_NoMenuAvailable 25 #define TUT_C_iError_UnknownMenuName 26 #define TUT_C_iError_NotASubMenu 27 #define TUT_C_iError_EndLoopWithoutLoop 28 #define TUT_C_iError_TestOperatorRequired 29 #define TUT_C_iError_OrIfWithoutAnIf 30 #define TUT_C_iError_ElseWithoutAnIf 31 #define TUT_C_iError_ElseInTheWrongPlace 32 #define TUT_C_iError_EndIfWithoutAnIf 33 #define TUT_C_iError_DebugWndAlreadyOpen 34 #define TUT_C_iError_DebugWndNotOpen 35 #define TUT_C_iError_InvalidMdiHandle 36 #define TUT_C_iError_InvalidParentMdiHandle 37 #define TUT_C_iError_InvalidListBoxHandle 38 #define TUT_C_iError_InvalidComboBoxHandle 39 #define TUT_C_iError_InvalidTreeBoxHandle 40 #define TUT_C_iError_InvalidMenuHandle 41 #define TUT_C_iError_InvalidMenuWndHandle 42 #define TUT_C_iError_InvalidButtonHandle 43 #define TUT_C_iError_InvalidTextEditHandle 44 #define TUT_C_iError_WindowOrMdiRequired 45 #define TUT_C_iError_InvalidWndOrMdiHandle 46 #define TUT_C_iError_CtrlWithTextRequired 47 #define TUT_C_iError_InvalidHandle 48 #define TUT_C_iError_BooleanValueRequired 49 #define TUT_C_iError_ItemNotFoundInTree 50 #define TUT_C_iError_ItemHasNoChild 51 #define TUT_C_iError_InvalidChildNumber 52 #define TUT_C_iError_NotANumericVariable 53 #define TUT_C_iError_DivisionByZero 54 #define TUT_C_iError_EmptyVariable 55 #define TUT_C_iError_LogFileAlreadyOpen 56 #define TUT_C_iError_UnableToOpenLogFile 57 #define TUT_C_iError_LogFileNotOpen 58 #define TUT_C_iError_InvalidXBorder 59 #define TUT_C_iError_InvalidYBorder 60 #define TUT_C_iError_InvalidNumberOrPercent 61 #define TUT_C_iError_InvalidListCtrlHandle 62 #define TUT_C_iError_LabelsWithSameName 63 #define TUT_C_iError_LabelNotFound 64 #define TUT_C_iError_ModelNotFound 65 #define TUT_C_iError_DragAtTheWrongPlace 66 #define TUT_C_iError_DropAtTheWrongPlace 67 #define TUT_C_iError_InvisibleControl 68 #define TUT_C_iError_DisabledControl 69 #define TUT_C_iError_NoMultipleSelection 70 #define TUT_C_iError_UnknownListBox 71 #define TUT_C_iError_ListBoxRequired 72 #define TUT_C_iError_UnknownObject 73 #define TUT_C_iError_UnknownVariable 74 #define TUT_C_iError_CountCtrlRequired 75 #define TUT_C_iError_UnknownMessageBoxCtrl 76 #define TUT_C_iError_MessageBoxCtrlNotFound 77 #define TUT_C_iError_NoReturnValue 78 #define TUT_C_iError_UnknownKey 79 #define TUT_C_iError_MultiLineRequired 80 #define TUT_C_iError_InvalidLineNumber 81 #define TUT_C_iError_LocalVariableExist 82 #define TUT_C_iError_GlobalVariableExist 83 #define TUT_C_iError_ListViewRequired 84 #define TUT_C_iError_UncoherentSelectionLimits 85 #define TUT_C_iQuitImmediately 255 //----------- error codes for the GetLastError variable ----------------------- #define TUT_C_iError_ListBoxItemNotFound 1 #define TUT_C_iError_ComboBoxItemNotFound 2 #define TUT_C_iError_ListCtrlItemNotFound 3 #define TUT_C_iError_ListBoxInvalidLine 4 #define TUT_C_iError_ComboBoxInvalidLine 5 #define TUT_C_iError_ListCtrlInvalidLine 6 #define TUT_C_iError_TreeCtrlItemNotFound 7 #define TUT_C_iError_SoundError 8 #define TUT_C_iError_UnregisteredWindow 9 //--------------------------- action names ------------------------------------ // tutorial text windows #define TUT_C_szOpenWindow "OpenWindow" #define TUT_C_szCloseWindow "CloseWindow" #define TUT_C_szSelectWindow "SelectWindow" #define TUT_C_szSetText "SetText" #define TUT_C_szWriteText "Write" // debug and log file #define TUT_C_szOpenDebugWindow "OpenDebugWindow" #define TUT_C_szCloseDebugWindow "CloseDebugWindow" #define TUT_C_szOpenLogFile "OpenLogFile" #define TUT_C_szCloseLogFile "CloseLogFile" #define TUT_C_szClearLogFile "ClearLogFile" #define TUT_C_szOpenDebugLogFile "OpenDebugLogFile" #define TUT_C_szClearDebugLogFile "ClearDebugLogFile" #define TUT_C_szCloseDebugLogFile "CloseDebugLogFile" // context #define TUT_C_szSaveContext "SaveContext" #define TUT_C_szRestoreContext "RestoreContext" // miscellaneous #define TUT_C_szPause "Pause" #define TUT_C_szSetMouseSpeed "SetMouseSpeed" #define TUT_C_szSetKeySpeed "SetKeySpeed" #define TUT_C_szListAllControl "ListAllControl" // Used for debugging #define TUT_C_szExit "Exit" // Quit the current file #define TUT_C_szHalt "Halt" // Stop the current process #define TUT_C_szMessageBox "MessageBox" // To clic into a message box #define TUT_C_szBeep "Beep" #define TUT_C_szPlay "Play" // special actions #define TUT_C_szRightButton "RightButton" // Tell to use the right button for the next action #define TUT_C_szDoubleClic "DoubleClic" // Tell to use a double clic for the next action #define TUT_C_szPosition "Position" // To clic on a specific position of a control #define TUT_C_szDrag "Drag" // To begin a drag and drop #define TUT_C_szDrop "Drop" // To end a drag and drop // buttons #define TUT_C_szIsChecked "IsChecked" // all controls #define TUT_C_szSetFocus "SetFocus" #define TUT_C_szIsExisting "IsExisting" #define TUT_C_szIsVisible "IsVisible" #define TUT_C_szIsEnabled "IsEnabled" #define TUT_C_szClic "Clic" #define TUT_C_szGetFocusWindow "GetFocusWindow" #define TUT_C_szHasFocus "HasFocus" // variables #define TUT_C_szVar "Var" // to declare a local variable #define TUT_C_szGlobalVar "GlobalVar" // to declare a global variable #define TUT_C_szSet "Set" #define TUT_C_szFree "Free" // delete a variable // windows #define TUT_C_szGetTitle "GetTitle" #define TUT_C_szMinimizeWindow "MinimizeWindow" // mdi windows only #define TUT_C_szMaximizeWindow "MaximizeWindow" // mdi windows only #define TUT_C_szRestoreWindow "RestoreWindow" // mdi windows only // controls with selection (list, combo, tree) #define TUT_C_szGetSelection "GetSelection" #define TUT_C_szSelectLine "SelectLine" // only for lists and combo #define TUT_C_szSelect "Select" #define TUT_C_szUnselect "Unselect" #define TUT_C_szGetCount "GetCount" // only for lists and combo and text edit #define TUT_C_szIsSelected "IsSelected" #define TUT_C_szIsInList "IsInList" // only for lists and combo #define TUT_C_szAddSelect "AddSelect" // only for multiple select list #define TUT_C_szAddSelectLine "AddSelectLine" // only for multiple select list // trees #define TUT_C_szExpand "Expand" #define TUT_C_szCollapse "Collapse" #define TUT_C_szGetNumberOfChildren "GetNumberOfChildren" #define TUT_C_szGetChild "GetChild" #define TUT_C_szGetParent "GetParent" // text edits #define TUT_C_szGetText "GetText" // for text edit and button #define TUT_C_szSetEditText "SetEditText" #define TUT_C_szSelectText "SelectText" // menu #define TUT_C_szMenu "Menu" #define TUT_C_szPopupMenu "PopupMenu" #define TUT_C_szGetMenuItem "GetMenuItem" #define TUT_C_szGetPopupMenuItem "GetPopupMenuItem" // loop #define TUT_C_szLoop "Loop" #define TUT_C_szEndLoop "EndLoop" // test #define TUT_C_szIf "If" #define TUT_C_szOrIf "OrIf" #define TUT_C_szElse "Else" #define TUT_C_szEndIf "EndIf" // keys #define TUT_C_szKey "Key" #define TUT_C_szPress "Press" #define TUT_C_szRelease "Release" // string #define TUT_C_szGetLength "GetLength" #define TUT_C_szFindString "FindString" #define TUT_C_szExtractString "ExtractString" // arithmetic operations #define TUT_C_szAdd "Add" #define TUT_C_szSub "Sub" #define TUT_C_szMul "Mul" #define TUT_C_szDiv "Div" // functions #define TUT_C_szCall "Call" #define TUT_C_szGetParameters "GetParameters" #define TUT_C_szSetResult "SetResult" #define TUT_C_szGetResult "GetResult" // jumps #define TUT_C_szLabel "Label" #define TUT_C_szGoto "Goto" // 3d view (specific) #define TUT_C_sz3DGetPosition "GetPosition" #define TUT_C_sz3DClic3dView "Clic3dView" #define TUT_C_sz3DIsProtected "IsProtected" // To know if a super object is protected or not #define TUT_C_sz3DMove3d "Move3d" #define TUT_C_sz3DSelectModel "SelectModel" // To select a model into the model window #define TUT_C_sz3DGetModel "GetModel" // Get the selected model #define TUT_C_sz3DGetNumberOfModels "GetNumberOfModels" #define TUT_C_sz3DIsAvailable "IsAvailable" // Return if a object is available or not #define TUT_C_sz3DGetPrefix "GetPrefix" // Return the prefix of the user #define TUT_C_sz3DIsExistingModel "IsExistingModel" #define TUT_C_sz3DGetStatusBarText "GetStatusBarText" //----------------------------color names ------------------------------------- typedef struct TUT_stColorDefinition_ { char * szColorName; COLORREF xColor; } TUT_tdstColorDefinition; const TUT_tdstColorDefinition g_a_stColorDefinition [] = { { "Black" , RGB ( 0 , 0 , 0) } , { "Red" , RGB (128 , 0 , 0) } , { "Green" , RGB ( 0 , 128 , 0) } , { "Blue" , RGB ( 0 , 0 , 128) } , { "Brown" , RGB (128 , 128 , 0) } , { "Magenta" , RGB (128 , 0 , 128) } , { "Cyan" , RGB ( 0 , 128 , 128) } , { "Gray" , RGB (128 , 128 , 128) } , { "LightRed" , RGB (255 , 0 , 0) } , { "LightGreen" , RGB ( 0 , 255 , 0) } , { "LightBlue" , RGB ( 0 , 0 , 255) } , { "Yellow" , RGB (255 , 255 , 0) } , { "LightMagenta", RGB (255 , 0 , 255) } , { "LightCyan" , RGB ( 0 , 255 , 255) } , { "White" , RGB (255 , 255 , 255) } , { NULL , 0 } }; // End of array : do not remove #define TUT_C_szOk "Ok" #define TUT_C_szCancel "Cancel" #define TUT_C_szAbort "Abort" #define TUT_C_szRetry "Retry" #define TUT_C_szIgnore "Ignore" #define TUT_C_szYes "Yes" #define TUT_C_szNo "No" //----------------------------------------------------------------------------- #define TUT_C_cBeginningOfVariable '@' #define TUT_C_cDeclarationOfVariable '!' #define TUT_C_cControl '^' #define TUT_C_cAlt '&' #define TUT_C_cShift '#' #define TUT_C_szTextAlignment_Left "Left" #define TUT_C_szTextAlignment_Right "Right" #define TUT_C_szTextAlignment_Center "Center" #define TUT_C_szTrue "TRUE" #define TUT_C_szFalse "FALSE" #define TUT_C_szBorderLeft "Left" #define TUT_C_szBorderRight "Right" #define TUT_C_szBorderTop "Top" #define TUT_C_szBorderBottom "Bottom" #define TUT_C_szGetLastError "GetLastError" #define TUT_C_szGetLastErrorMessage "GetLastErrorMessage" #define TUT_C_iErrorNotANumber ((int) 2020202020 ) #define TUT_C_dErrorNotANumber ((double) 2020202020.0) //----------------------------------------------------------------------------- #define TUT_C_xPauseIntervall ((clock_t)(CLOCKS_PER_SEC / 10)) //----------------------------------------------------------------------------- typedef enum TUT_eWndType_ { TUT_eWindow , TUT_eMdiWindow , TUT_eButton , TUT_eTextEdit , TUT_eListBox , TUT_eComboBox , TUT_eTreeCtrl , TUT_eListCtrl , TUT_eSpin , TUT_eSlider , TUT_eScrollBar , TUT_eUserWindow, TUT_e3DView } TUT_tdeWndType; typedef struct TUT_stWndDefinition_ { HWND hWnd; CString csName; TUT_tdeWndType eType; } TUT_tdstWndDefinition; typedef struct TUT_stMenuDefinition_ { HMENU hMenu; HWND hWindow; int iX , iY; } TUT_tdstMenuDefinition; typedef struct TUT_stVariableDefinition_ { CString csName; CString csValue; int iContextNumber; } TUT_tdstVariableDefinition; typedef struct TUT_stLoopDefinition_ { TUT_tdstVariableDefinition * p_stVariable; long lCurrentValue; // Current value of the loop variable long lEndValue; // End value of the loop variable long lStep; // Step of the loop variable fpos_t xPosInFile; // Position of the first command inside the loop in the file } TUT_tdstLoopDefinition; typedef enum TUT_ePositionInTest_ { TUT_eAfterIf , TUT_eBeforeElse , TUT_eAfterElse } TUT_tdePositionInTest; typedef struct TUT_stTestDefinition_ { TUT_tdePositionInTest ePositionInTest; BOOL bTestVerified; int iNumberOfSkippedTest; // Number of tests which are inside a not executed block of a test } TUT_tdstTestDefinition; typedef struct TUT_stLabelDefinition_ { CString csName; // Name of the label fpos_t xPosInFile; // Position of the first command after the label in the file int iContextNumber; // Number of the context (= file) where the label is declared } TUT_tdstLabelDefinition; typedef struct TUT_stContextDefinition_ { CString csFileName; // Name of the executed file int iLineNumber; } TUT_tdstContextDefinition; typedef struct TUT_stLogFileDefinition_ { BOOL bOpen; // Is Log File Opened CString csName; // Name of Log File FILE * pFile; // FILE pointer } TUT_tdstLogFileDefinition; typedef enum TUT_eArithmeticOperation { TUT_eAdd , TUT_eSub , TUT_eMul , TUT_eDiv } TUT_tdeArithmeticOperation; typedef enum TUT_eDragDropType { TUT_eNone , TUT_eMove3d , TUT_eSelectModel } TUT_tdeDragDropType; typedef CArray TUT_td_CArrayOfWnd; typedef CList TUT_td_CListOfVariable; typedef CList TUT_td_CListOfLoop; typedef CList TUT_td_CListOfTest; typedef CList TUT_td_CListOfLabel; typedef CList TUT_td_CListOfContext; //----------------------------------------------------------------------------- class TUT_CTutorialManager { // ***** public functions (Tut_Mngr.cpp) ***** public: TUT_CTutorialManager (); // Constructor ~TUT_CTutorialManager (); // Destructor void m_fn_vRegisterWnd (HWND _hWnd , const CString _csName , TUT_tdeWndType _eType); BOOL m_fn_bUnregisterWnd (HWND _hWnd); void m_fn_vRegisterMenu (HWND _hWnd , HMENU _hMenu , int _iX , int _iY); void m_fn_vLaunchScript (const CString _csFileName); // Call this function to execute a script file int m_fn_iExecuteScript (const CString _csFileName); // and not this one void m_fn_vSetBackGroundActive (BOOL _bActive); void m_fn_vSetRunMode (BOOL _bRun); BOOL m_fn_bNotInBackGround (void); BOOL m_fn_bIsRunning (void); //////////////////////// void m_fn_vStartRecord (HMODULE _hModule, DWORD _dThreadID); void m_fn_vStopRecord (HMODULE _hModule, DWORD _dThreadID, LPCTSTR _szFileName); BOOL m_fn_bHookMsgProc (HWND hwnd, UINT uiMessage, WPARAM wParam, LPARAM lParam); BOOL m_fn_bHookWndProc (HWND hwnd, UINT uiMessage, WPARAM wParam, LPARAM lParam); BOOL m_fn_bHookWndProcRet (HWND hwnd, UINT uiMessage, WPARAM wParam, LPARAM lParam); // ***** private functions : execution of a command (Tut_Mngr.cpp) ***** private: int m_fn_iExecuteScriptAction (char * _szLine , FILE * pFile); int m_fn_iExecuteClic (char * _szParameter); int m_fn_iExecuteOpenWindow (char * _szParameter); int m_fn_iExecuteWriteText (char * _szParameter); int m_fn_iExecutePause (char * _szParameter); int m_fn_iExecuteSetEditText (char * _szParameter); int m_fn_iExecuteCloseWindow (char * _szParameter); int m_fn_iExecuteSetFocus (char * _szParameter); int m_fn_iExecuteSelectWindow (char * _szParameter); int m_fn_iExecuteSelectLine (char * _szParameter , BOOL _bAddToSelection); int m_fn_iExecuteChangeWindowState (char * _szParameter , char * _szAction); int m_fn_iExecuteSetMouseSpeed (char * _szParameter); int m_fn_iExecuteSetText (char * _szParameter); int m_fn_iExecuteSet (char * _szParameter); int m_fn_iExecuteGetSelection (char * _szParameter); int m_fn_iExecuteSelect (char * _szParameter , BOOL _bAddToSelection); int m_fn_iExecuteCall (char * _szParameter); int m_fn_iExecuteExpandOrCollapse (char * _szParameter , BOOL _bExpand); int m_fn_iExecuteListAllControl (char * _szParameter); int m_fn_iExecuteMenu (char * _szParameter , BOOL _bPopupMenu); int m_fn_iExecuteLoop (char * _szParameter , FILE * _pFile); int m_fn_iExecuteEndLoop (char * _szParameter , FILE * _pFile); int m_fn_iExecuteIf (char * _szParameter); int m_fn_iExecuteOrIf (char * _szParameter); int m_fn_iExecuteElse (char * _szParameter); int m_fn_iExecuteEndIf (char * _szParameter); int m_fn_iExecuteRightButton (char * _szParameter); int m_fn_iExecuteDoubleClic (char * _szParameter); int m_fn_iExecuteOpenDebugWindow (char * _szParameter); int m_fn_iExecuteCloseDebugWindow (char * _szParameter); int m_fn_iExecuteGetTitle (char * _szParameter); int m_fn_iExecuteGetText (char * _szParameter); int m_fn_iExecuteIsVisible (char * _szParameter); int m_fn_iExecuteExit (char * _szParameter , FILE * _pFile); int m_fn_iExecuteHalt (char * _szParameter); int m_fn_iExecuteGetNumberOfChildren (char * _szParameter); int m_fn_iExecuteGetChild (char * _szParameter); int m_fn_iExecuteGetParent (char * _szParameter); int m_fn_iExecuteArithmeticOperation (char * _szParameter , TUT_tdeArithmeticOperation _eOperation); int m_fn_iExecuteGetParameters (char * _szParameter); int m_fn_iExecuteOpenLogFile (char * _szParameter , TUT_tdstLogFileDefinition * _p_stLogFile); int m_fn_iExecuteCloseLogFile (char * _szParameter , TUT_tdstLogFileDefinition * _p_stLogFile); int m_fn_iExecuteClearLogFile (char * _szParameter , TUT_tdstLogFileDefinition * _p_stLogFile); int m_fn_iExecutePosition (char * _szParameter); int m_fn_iExecuteLabel (char * _szParameter , FILE * _pFile); int m_fn_iExecuteGoto (char * _szParameter , FILE * _pFile); int m_fn_iExecuteIsChecked (char * _szParameter); int m_fn_iExecuteIsEnabled (char * _szParameter); int m_fn_iExecuteDrag (char * _szParameter); int m_fn_iExecuteDrop (char * _szParameter); int m_fn_iExecuteUnselect (char * _szParameter); int m_fn_iExecuteGetMenuItem (char * _szParameter , BOOL _bPopupMenu); int m_fn_iExecuteFree (char * _szParameter); int m_fn_iExecuteGetCount (char * _szParameter); int m_fn_iExecuteMessageBox (char * _szParameter); int m_fn_iExecuteSetResult (char * _szParameter); int m_fn_iExecuteGetResult (char * _szParameter); int m_fn_iExecuteKey (char * _szParameter); int m_fn_iExecutePressOrRelease (char * _szParameter , BOOL _bKeyPressed); int m_fn_iExecuteSetKeySpeed (char * _szParameter); int m_fn_iExecuteIsExisting (char * _szParameter); int m_fn_iExecuteGetLength (char * _szParameter); int m_fn_iExecuteFindString (char * _szParameter); int m_fn_iExecuteExtractString (char * _szParameter); int m_fn_iExecuteBeep (char * _szParameter); int m_fn_iExecutePlay (char * _szParameter); int m_fn_iExecuteIsSelected (char * _szParameter); int m_fn_iExecuteVar (char * _szParameter); int m_fn_iExecuteGlobalVar (char * _szParameter); int m_fn_iExecuteIsInList (char * _szParameter); int m_fn_iExecuteSaveContext (char * _szParameter); int m_fn_iExecuteRestoreContext (char * _szParameter); int m_fn_iExecuteGetFocusWindow (char * _szParameter); int m_fn_iExecuteHasFocus (char * _szParameter); int m_fn_iExecuteSelectText (char * _szParameter); // 3d view specific int m_fn_iExecute3dGetPosition (char * _szParameter); int m_fn_iExecute3dClic3dView (char * _szParameter); int m_fn_iExecute3dIsProtected (char * _szParameter); int m_fn_iExecute3dMove3d (char * _szParameter); int m_fn_iExecute3dSelectModel (char * _szParameter); int m_fn_iExecute3dGetModel (char * _szParameter); int m_fn_iExecute3dGetNumberOfModels (char * _szParameter); int m_fn_iExecute3dIsAvailable (char * _szParameter); int m_fn_iExecute3dGetPrefix (char * _szParameter); int m_fn_iExecute3dIsExistingModel (char * _szParameter); int m_fn_iExecute3dGetStatusBarText (char * _szParameter); // ***** private variables ***** private: TUT_td_CArrayOfWnd m_oArrayOfWnd; TUT_td_CListOfVariable m_oListOfVariable; TUT_td_CListOfLoop m_oListOfLoop; TUT_td_CListOfTest m_oListOfTest; TUT_td_CListOfLabel m_oListOfLabel; TUT_td_CListOfContext m_oListOfContext; TUT_tdstWndDefinition * m_p_stCurrentUserWindow; // Parameters for the mouse move int m_lCurrentMaxDuration; int m_lCurrentMinSpeed; int m_lCurrentAcceleration; // Parameter for the keyboard int m_iDurationBetweenKeys; BOOL m_bUseShift; BOOL m_bUseAlt; BOOL m_bUseControl; // Parameters for the text attributes COLORREF m_xCurrentColor; long m_lCurrentHeight; long m_lCurrentAlignment; // Parameters for the selection BOOL m_bUseRightButton; BOOL m_bUseDoubleClic; BOOL m_bUseDrag; BOOL m_bUseDrop; BOOL m_bUsePosition; int m_iXPosition; int m_iYPosition; BOOL m_bRightBorder; BOOL m_bBottomBorder; BOOL m_bPercentForX; BOOL m_bPercentForY; // Paramater for the menu TUT_tdstMenuDefinition m_stCurrentPopupMenu; // The debug window HWND m_hDebugWnd; // The timer UINT m_uiTimerNumber; BOOL m_bBackGroundActive; // The ID of the main thread UINT m_uiMainThreadID; BOOL m_bRunMode; // The parameters (used by "Call") and the result int m_iNumberOfParameter; CString m_a_csParameter [9]; int m_iNumberOfResult; CString m_a_csResult [9]; // The log file TUT_tdstLogFileDefinition m_stLogFile; // The Debug Log File TUT_tdstLogFileDefinition m_stDebugLogFile; // The jumps BOOL m_bInsideAGoto; CString m_csLabelToFind; // The record of script CStringList m_oListOfCommands; BOOL m_bInPause; clock_t m_xLastCommandTime; long m_lDragDrop; CString m_csDragDropElement; TUT_tdeDragDropType m_eDragDropType; // ***** private functions : low level functions (Tut_Mngr.inc) private: CString m_fn_csGetTreeCtrlItemText(HWND _hTreeCtrl , HTREEITEM _hItem); // Get the text of one item of a tree ctrl UINT m_fn_uiGetTreeCtrlState (HWND _hTreeCtrl , HTREEITEM _hItem , UINT _uiFlag); // Get the state of one item of a tree ctrl HTREEITEM m_fn_hFindStringInTree (HWND _hTreeCtrl , HTREEITEM _hRootItem , CString _csText); // Search a string into a tree (recursiv function) BOOL m_fn_bIsItemVisibleInTree (HWND _hTreeCtrl , HTREEITEM _hItem); BOOL m_fn_bSearchWndDefinition (const CString _csName , int * _p_iIndex = NULL); BOOL m_fn_bSearchWndDefinition (HWND _hWnd , int * _p_iIndex = NULL); TUT_tdstWndDefinition * m_fnp_stFindWndDefinition (const CString _csName); // Search a window name into the list public: // This function must be public, because it is called by the callback timer function TUT_tdstWndDefinition * m_fnp_stFindWndDefinition (HWND _hWnd); // Search a window handle into the list private: TUT_tdstLabelDefinition * m_fnp_stFindLabel (char * _szName); // Search a label name into the list void m_fn_vSetValueToVariable (TUT_tdstVariableDefinition * , long); void m_fn_vSetGetLastError (long _lErrorNumber); int m_fn_iConvertToInt (char * _szString); // Convert a string into a integer. // Return TUT_C_iErrorNotANumber if error double m_fn_dConvertToDouble (char * _szString); // Convert a string into a double // Return TUT_C_dErrorNotANumber if error BOOL m_fn_bAreParametersEqual (char * _szParameter1 , char * _szParameter2); BOOL m_fn_bIsParameter1LessThanParameter2 (char * _szParameter1 , char * _szParameter2); BOOL m_fn_bIsParameterTrue (char * _szParameter , int * _p_iReturnValue); BOOL m_fn_bIsTestVerified (char * _szTestOperator , char * _szParameter1 , char * _szParameter2 , int * _p_iReturnValue); BOOL m_fn_bMustActionBeExecuted (); // Return if the current action must be executed void m_fn_vAddAnActionForTheTest (); // Called each time an action is executed void m_fn_vTestRightButtonDoubleClicAndPosition (); BOOL m_fn_vPreprocessString (char * & _szString); char * m_fn_szStrtok (char * _szString , char _cDelimiter); int m_fn_iGetParameters (char * , int _iMinNumberOfParameter , int _iMaxNumberOfParameter , int * _p_iNumberOfParameter , ...); void m_fn_vShowError (int _iErrorCode , const CString _csFileName , int _iLineNumber , char * _szLine); void m_fn_vPumpMessage (); void m_fn_vSleep (int _iDuration); void m_fn_vActivateWindow (HWND _hWnd); HWND m_fn_hOpenUserWindow (char * _szWindowName , int _iLeft , int _iTop , int _iRight , int _iBottom); void m_fn_vCloseUserWindow (int _iIndex); void m_fn_vDeleteLocalLabelAndVariable (); void m_fn_vCloseLogFile (TUT_tdstLogFileDefinition * _p_stLogFile); public: // These functions must be public because they are called by the TUT_fn_dwBeginThread function void m_fn_vClearAllList (BOOL _bUnregisterControl); void m_fn_vCloseAllUserWindow (); void m_fn_vCloseAllLogFiles (); // This function must be public because it is called by the callback timer function TUT_tdstVariableDefinition * m_fnp_stFindVariable (char * _szName); // Search a variable name into the list char * m_fn_szGetWndNameType (TUT_tdeWndType _eType); HWND m_fn_hGetDebugWindowHandle() { return m_hDebugWnd; } private: TUT_tdstVariableDefinition * m_fnp_stFindOrCreateVariable (char * _szName); BOOL m_fn_bFindColor (char * _szColorName , COLORREF * _p_xColor); int m_fn_iFindVirtualKeyCode (char * _szVirtualKeyCode); int m_fn_iFindIdForMessageBox (char * _szControlName); void m_fn_vMoveMouseCursor (CPoint _stDestination , HWND _hWnd = NULL); void m_fn_vMoveMouseCursor (HWND _hWnd); void m_fn_vClickOnControl (HWND _hButton); // Simulate a click on a button void m_fn_vSetTextInEdit (HWND _hTextEdit , const CString); // Simulate an edition of text, void m_fn_vSelectLineInComboBox (HWND _hComboBox , int _iLineNumber); void m_fn_vSelectLineInListBox (HWND _hListBox , int _iLineNumber , BOOL _bAddToSelection = FALSE ); void m_fn_vSelectLineInListCtrl (HWND _hListCtrl , int _iLineNumber); void m_fn_vEnsureVisibleInTree (HWND _hTreeCtrl , HTREEITEM _hItem , BOOL _bEnsureVisible = TRUE); BOOL m_fn_bSelectItemInTreeBox (HWND _hTreeCtrl , CString _csTextToSelect); void m_fn_vWriteText (HWND _hEditView , CString _csText); void m_fn_vSendKey (int _iVirtualKeyCode , BOOL _bKeyPressed); char *m_fn_szHandleQuote (char * _szString); //////////////////////// BOOL m_fn_bStartStopHook (HMODULE _hModule, DWORD _dThreadID, BOOL _bStart); BOOL m_fn_bCommandMsgProc (int iHookType, HWND hwnd, UINT uiMessage, WPARAM wParam, LPARAM lParam); BOOL m_fn_bLButtonMsgProc (int iHookType, HWND hwnd, UINT uiMessage, WPARAM wParam, LPARAM lParam); BOOL m_fn_bRButtonMsgProc (int iHookType, HWND hwnd, UINT uiMessage, WPARAM wParam, LPARAM lParam); BOOL m_fn_bFocusMsgProc (int iHookType, HWND hwnd, UINT uiMessage, WPARAM wParam, LPARAM lParam); BOOL m_fn_bNotifyMsgProc (int iHookType, HWND hwnd, UINT uiMessage, WPARAM wParam, LPARAM lParam); BOOL m_fn_bMenuMsgProc (int iHookType, HWND hwnd, UINT uiMessage, WPARAM wParam, LPARAM lParam); BOOL m_fn_bMouseMsgProc (int iHookType, HWND hwnd, UINT uiMessage, WPARAM wParam, LPARAM lParam); // Record List void m_fn_vHandlePause (void); void m_fn_vAddCommand (CString csCommand); void m_fn_vInsertAfterPause (CString csCommand); void m_fn_vAddPause (void); void m_fn_vRemoveToPause (void); BOOL m_fn_bHaveSomethingAfterPause (void); void m_fn_vDeleteLastCommand (void); // 3DView specific BOOL m_fn_bIsModelView (HWND _hWnd); BOOL m_fn_bLButtonUp3DViewProc (int iHookType, HWND hwnd, UINT uiMessage, WPARAM wParam, LPARAM lParam); BOOL m_fn_bLButtonDown3DViewProc (int iHookType, HWND hwnd, UINT uiMessage, WPARAM wParam, LPARAM lParam); BOOL m_fn_bLButtonUpModelViewProc (int iHookType, HWND hwnd, UINT uiMessage, WPARAM wParam, LPARAM lParam); BOOL m_fn_bLButtonDownModelViewProc (int iHookType, HWND hwnd, UINT uiMessage, WPARAM wParam, LPARAM lParam); }; //----------------------------------------------------------------------------- extern TUT_CTutorialManager TUT_g_oTutorialManager; #endif // #ifndef _TUT_MNGR_HPP_