/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the w64 mingw-runtime package.
 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
 */
#ifndef _INC_WFEXT
#define _INC_WFEXT

#ifdef __cplusplus
extern "C" {
#endif

#define MENU_TEXT_LEN 40

#define FMMENU_FIRST 1
#define FMMENU_LAST 99

#define FMEVENT_LOAD 100
#define FMEVENT_UNLOAD 101
#define FMEVENT_INITMENU 102
#define FMEVENT_USER_REFRESH 103
#define FMEVENT_SELCHANGE 104
#define FMEVENT_TOOLBARLOAD 105
#define FMEVENT_HELPSTRING 106
#define FMEVENT_HELPMENUITEM 107

#define FMFOCUS_DIR 1
#define FMFOCUS_TREE 2
#define FMFOCUS_DRIVES 3
#define FMFOCUS_SEARCH 4

#define FM_GETFOCUS (WM_USER + 0x0200)
#define FM_GETSELCOUNT (WM_USER + 0x0202)
#define FM_GETSELCOUNTLFN (WM_USER + 0x0203)
#define FM_REFRESH_WINDOWS (WM_USER + 0x0206)
#define FM_RELOAD_EXTENSIONS (WM_USER + 0x0207)

#define FM_GETDRIVEINFOA (WM_USER + 0x0201)
#define FM_GETFILESELA (WM_USER + 0x0204)
#define FM_GETFILESELLFNA (WM_USER + 0x0205)

#define FM_GETDRIVEINFOW (WM_USER + 0x0211)
#define FM_GETFILESELW (WM_USER + 0x0214)
#define FM_GETFILESELLFNW (WM_USER + 0x0215)

#ifdef UNICODE
#define FM_GETDRIVEINFO FM_GETDRIVEINFOW
#define FM_GETFILESEL FM_GETFILESELW
#define FM_GETFILESELLFN FM_GETFILESELLFNW
#else
#define FM_GETDRIVEINFO FM_GETDRIVEINFOA
#define FM_GETFILESEL FM_GETFILESELA
#define FM_GETFILESELLFN FM_GETFILESELLFNA
#endif

  typedef struct _FMS_GETFILESELA {
    FILETIME ftTime;
    DWORD dwSize;
    BYTE bAttr;
    CHAR szName[260];
  } FMS_GETFILESELA,*LPFMS_GETFILESELA;

  typedef struct _FMS_GETFILESELW {
    FILETIME ftTime;
    DWORD dwSize;
    BYTE bAttr;
    WCHAR szName[260];
  } FMS_GETFILESELW,*LPFMS_GETFILESELW;

#ifdef UNICODE
#define FMS_GETFILESEL FMS_GETFILESELW
#define LPFMS_GETFILESEL LPFMS_GETFILESELW
#else
#define FMS_GETFILESEL FMS_GETFILESELA
#define LPFMS_GETFILESEL LPFMS_GETFILESELA
#endif

  typedef struct _FMS_GETDRIVEINFOA {
    DWORD dwTotalSpace;
    DWORD dwFreeSpace;
    CHAR szPath[260];
    CHAR szVolume[14];
    CHAR szShare[128];
  } FMS_GETDRIVEINFOA,*LPFMS_GETDRIVEINFOA;

  typedef struct _FMS_GETDRIVEINFOW {
    DWORD dwTotalSpace;
    DWORD dwFreeSpace;
    WCHAR szPath[260];
    WCHAR szVolume[14];
    WCHAR szShare[128];
  } FMS_GETDRIVEINFOW,*LPFMS_GETDRIVEINFOW;

#ifdef UNICODE
#define FMS_GETDRIVEINFO FMS_GETDRIVEINFOW
#define LPFMS_GETDRIVEINFO LPFMS_GETDRIVEINFOW
#else
#define FMS_GETDRIVEINFO FMS_GETDRIVEINFOA
#define LPFMS_GETDRIVEINFO LPFMS_GETDRIVEINFOA
#endif

  typedef struct _FMS_LOADA {
    DWORD dwSize;
    CHAR szMenuName[MENU_TEXT_LEN];
    HMENU hMenu;
    UINT wMenuDelta;
  } FMS_LOADA,*LPFMS_LOADA;

  typedef struct _FMS_LOADW {
    DWORD dwSize;
    WCHAR szMenuName[MENU_TEXT_LEN];
    HMENU hMenu;
    UINT wMenuDelta;
  } FMS_LOADW,*LPFMS_LOADW;

#ifdef UNICODE
#define FMS_LOAD FMS_LOADW
#define LPFMS_LOAD LPFMS_LOADW
#else
#define FMS_LOAD FMS_LOADA
#define LPFMS_LOAD LPFMS_LOADA
#endif

  typedef struct tagEXT_BUTTON {
    WORD idCommand;
    WORD idsHelp;
    WORD fsStyle;
  } EXT_BUTTON,*LPEXT_BUTTON;

  typedef struct tagFMS_TOOLBARLOAD {
    DWORD dwSize;
    LPEXT_BUTTON lpButtons;
    WORD cButtons;
    WORD cBitmaps;
    WORD idBitmap;
    HBITMAP hBitmap;
  } FMS_TOOLBARLOAD,*LPFMS_TOOLBARLOAD;

  typedef struct tagFMS_HELPSTRINGA {
    INT idCommand;
    HMENU hMenu;
    CHAR szHelp[128];
  } FMS_HELPSTRINGA,*LPFMS_HELPSTRINGA;

  typedef struct tagFMS_HELPSTRINGW {
    INT idCommand;
    HMENU hMenu;
    WCHAR szHelp[128];
  } FMS_HELPSTRINGW,*LPFMS_HELPSTRINGW;

#ifdef UNICODE
#define FMS_HELPSTRING FMS_HELPSTRINGW
#define LPFMS_HELPSTRING LPFMS_HELPSTRINGW
#else
#define FMS_HELPSTRING FMS_HELPSTRINGA
#define LPFMS_HELPSTRING LPFMS_HELPSTRINGA
#endif

  typedef DWORD (WINAPI *FM_EXT_PROC)(HWND,WORD,LONG);
  typedef DWORD (WINAPI *FM_UNDELETE_PROC)(HWND,LPTSTR);

#ifdef UNICODE
  LONG WINAPI FMExtensionProcW(HWND hwnd,WORD wEvent,LONG lParam);
#else
  LONG WINAPI FMExtensionProc(HWND hwnd,WORD wEvent,LONG lParam);
#endif

#ifdef __cplusplus
}
#endif
#endif
