windows-nt/Source/XPSP1/NT/shell/ext/brfcase/filesync/syncui/recact.h
2020-09-26 16:20:57 +08:00

225 lines
6.1 KiB
C

//
// recact.h: Declares data, defines and struct types for RecAct
// module.
//
//
#ifndef __RECACT_H__
#define __RECACT_H__
///////////////////////////////////////////////////// INCLUDES
///////////////////////////////////////////////////// DEFINES
// RecAct message ranges
//
#define RAM_FIRST (WM_USER+1)
#define RAM_LAST (WM_USER+20)
#define RN_FIRST (0U-700U)
#define RN_LAST (0U-799U)
// Window class name
//
#define WC_RECACT TEXT("RecAction")
// BOOL RecAct_Enable(HWND hwnd, BOOL fEnable);
//
#define RecAct_Enable(hwnd, fEnable) \
EnableWindow((hwnd), (fEnable))
// int RecAct_GetItemCount(HWND hwnd);
//
#define RAM_GETITEMCOUNT (RAM_FIRST + 0)
#define RecAct_GetItemCount(hwnd) \
(int)SendMessage(hwnd, RAM_GETITEMCOUNT, 0, 0L)
// Side item structure
//
#define SI_UNCHANGED 0
#define SI_CHANGED 1
#define SI_NEW 2
#define SI_NOEXIST 3
#define SI_UNAVAILABLE 4
#define SI_DELETED 5
typedef struct tagSIDE_ITEM
{
LPTSTR pszDir;
UINT uState; // One of SI_* flags
FILESTAMP fs;
UINT ichRealPath; // index to beginning of real path
} SIDEITEM, * LPSIDEITEM;
// RecAction Item structure
//
#define RAIF_ACTION 0x0001 // Mask codes
#define RAIF_NAME 0x0002
#define RAIF_STYLE 0x0004
#define RAIF_INSIDE 0x0008
#define RAIF_OUTSIDE 0x0010
#define RAIF_LPARAM 0x0020
#define RAIF_HTWIN 0x0040
#define RAIF_ALL 0x007f
typedef struct tagRA_ITEM
{
UINT mask; // One of RAIF_
int iItem;
UINT uStyle; // One of RAIS_
UINT uAction; // One of RAIA_
LPTSTR pszName;
SIDEITEM siInside;
SIDEITEM siOutside;
LPARAM lParam;
HTWIN htwin;
} RA_ITEM, * LPRA_ITEM;
// RecAct item styles
//
#define RAIS_CANMERGE 0x0001
#define RAIS_FOLDER 0x0002
// RecAct actions
//
#define RAIA_TOOUT 0 // Don't change these values without changing
#define RAIA_TOIN 1 // the order of the bitmaps in s_rgidAction
#define RAIA_SKIP 2
#define RAIA_CONFLICT 3
#define RAIA_MERGE 4
#define RAIA_SOMETHING 5 // These two require RAIS_FOLDER
#define RAIA_NOTHING 6
#define RAIA_ORPHAN 7
#define RAIA_DELETEOUT 8
#define RAIA_DELETEIN 9
#define RAIA_DONTDELETE 10
// Insert item at specified index. Item is inserted at end if
// i is greater than or equal to the number of items in the twinview.
// Returns the index of the inserted item, or -1 on error.
//
// int RecAct_InsertItem(HWND hwnd, const LPRA_ITEM pitem);
//
#define RAM_INSERTITEM (RAM_FIRST + 1)
#define RecAct_InsertItem(hwnd, pitem) \
(int)SendMessage((hwnd), RAM_INSERTITEM, 0, (LPARAM)(const LPRA_ITEM)(pitem))
// Delete an item at the specified index.
//
// int RecAct_DeleteItem(HWND hwnd, int i);
//
#define RAM_DELETEITEM (RAM_FIRST + 2)
#define RecAct_DeleteItem(hwnd, i) \
(int)SendMessage((hwnd), RAM_DELETEITEM, (WPARAM)(int)(i), 0L)
// Deletes all items in the control
//
// BOOL RecAct_DeleteAllItems(HWND hwnd);
//
#define RAM_DELETEALLITEMS (RAM_FIRST + 3)
#define RecAct_DeleteAllItems(hwnd) \
(BOOL)SendMessage((hwnd), RAM_DELETEALLITEMS, 0, 0L)
// BOOL RecAct_GetItem(HWND hwnd, LPRA_ITEM pitem);
//
#define RAM_GETITEM (RAM_FIRST + 4)
#define RecAct_GetItem(hwnd, pitem) \
(BOOL)SendMessage((hwnd), RAM_GETITEM, 0, (LPARAM)(LPRA_ITEM)(pitem))
// BOOL RecAct_SetItem(HWND hwnd, const LPRA_ITEM pitem);
//
#define RAM_SETITEM (RAM_FIRST + 5)
#define RecAct_SetItem(hwnd, pitem) \
(BOOL)SendMessage((hwnd), RAM_SETITEM, 0, (LPARAM)(const LPRA_ITEM)(pitem))
// Get the current selection by index. -1 if nothing is selected.
//
// int RecAct_GetCurSel(HWND hwnd);
//
#define RAM_GETCURSEL (RAM_FIRST + 6)
#define RecAct_GetCurSel(hwnd) \
(int)SendMessage((hwnd), RAM_GETCURSEL, (WPARAM)0, 0L)
// Set the current selection by index. -1 to deselect.
//
// int RecAct_SetCurSel(HWND hwnd, int i);
//
#define RAM_SETCURSEL (RAM_FIRST + 7)
#define RecAct_SetCurSel(hwnd, i) \
(int)SendMessage((hwnd), RAM_SETCURSEL, (WPARAM)(i), 0L)
// RecAct_FindItem flags
//
#define RAFI_NAME 0x0001
#define RAFI_LPARAM 0x0002
#define RAFI_ACTION 0x0004
typedef struct tagRA_FINDITEM
{
UINT flags; // One of RAFI_* flags
UINT uAction; // One of RAIA_* flags
LPCTSTR psz;
LPARAM lParam;
} RA_FINDITEM;
// Find an item according to RA_FINDITEM struct. iStart = -1 to
// start at beginning.
//
// int RecAct_FindItem(HWND hwnd, int iStart, const RA_FINDITEM FAR* prafi);
#define RAM_FINDITEM (RAM_FIRST + 8)
#define RecAct_FindItem(hwnd, iStart, prafi) \
(int)SendMessage((hwnd), RAM_FINDITEM, (WPARAM)(int)(iStart), (LPARAM)(const RA_FINDINFO *)(prafi))
// Refresh the control.
//
// void RecAct_Refresh(HWND hwnd);
#define RAM_REFRESH (RAM_FIRST + 9)
#define RecAct_Refresh(hwnd) \
SendMessage((hwnd), RAM_REFRESH, 0, 0L)
// Notification codes
//
#define RN_SELCHANGED (RN_FIRST-0)
#define RN_ITEMCHANGED (RN_FIRST-1)
typedef struct tagNM_RECACT
{
NMHDR hdr;
int iItem;
UINT mask; // One of RAIF_*
UINT uAction; // One of RAIA_*
UINT uActionOld; // One of RAIA_*
LPARAM lParam;
} NM_RECACT;
// Window styles
#define RAS_SINGLEITEM 0x0001L
///////////////////////////////////////////////////// EXPORTED DATA
///////////////////////////////////////////////////// PUBLIC PROTOTYPES
BOOL PUBLIC RecAct_Init (HINSTANCE hinst);
void PUBLIC RecAct_Term(HINSTANCE hinst);
HRESULT PUBLIC RAI_Create(LPRA_ITEM * ppitem, LPCTSTR pszBrfPath, LPCTSTR pszPath, PRECLIST prl, PFOLDERTWINLIST pftl);
HRESULT PUBLIC RAI_CreateFromRecItem(LPRA_ITEM * ppitem, LPCTSTR pszBrfPath, PRECITEM pri);
HRESULT PUBLIC RAI_Free(LPRA_ITEM pitem);
#endif // __RECACT_H__