#ifndef _UNDOLIST_H_ #define _UNDOLIST_H_ #define UL_SUCCESS 0 #define UL_NOUNDO -1 #define UL_NOREDO -1 #define UL_NOMEMORY -2 #define UL_INVPARAM -3 #define UL_LISTEMPTY -4 // Free function declaration typedef L_VOID (*UL_FREEFUNCTION) (L_VOID *, L_UINT); typedef struct tagUNDOLISTNODE { struct tagUNDOLISTNODE * prev; // Internal Use: Previous Node struct tagUNDOLISTNODE * next; // Internal Use. Next node. L_BOOL bIsActive; // Internal Use. Is an active L_UINT uUserInfo; // User flags that might use L_VOID * pNodeData; // User pointer to his created data structure } UNDOLISTNODE, * LPUNDOLISTNODE; typedef struct tagUNDOLIST { LPUNDOLISTNODE firstNode; // Should be NULL in initializtion UL_FREEFUNCTION FreeNode; L_UINT uMaxEntries; } UNDOLIST, * LPUNDOLIST; L_VOID FreeFun (LPVOID, UINT); L_INT L_UndoList_DestroyList (HWND hWndChild); L_BOOL L_UndoList_RedoExists (HWND hWndChild); L_BOOL L_UndoList_UndoExists (HWND hWndChild); L_VOID L_UndoList_Undo (HWND hWndChild); L_VOID L_UndoList_Redo (HWND hWndChild); L_VOID L_UndoList_AddBitmap (HWND hWndChild); L_VOID L_UndoList_Init (HWND hWndChild, UL_FREEFUNCTION FreeFun, L_UINT uMaxEntries); L_VOID MemorizeAndCopyBitmap (HWND hWndChild, pBITMAPHANDLE pDlgBitmap); L_VOID FreeMemorizedBitmap (HWND hWndChild); L_VOID MemorizeBitmap (HWND hWndChild); #endif //_UNDOLIST_H_