[VFD] Import the VFD project (Virtual Floppy Drive) which allows creating virtual
[reactos.git] / modules / rosapps / lib / vfdlib / vfdshext.h
diff --git a/modules/rosapps/lib/vfdlib/vfdshext.h b/modules/rosapps/lib/vfdlib/vfdshext.h
new file mode 100644 (file)
index 0000000..7379cb5
--- /dev/null
@@ -0,0 +1,99 @@
+/*
+       vfdshext.h
+
+       Virtual Floppy Drive for Windows
+       Driver control library
+       shell extension COM class header
+
+       Copyright (c) 2003-2005 Ken Kato
+*/
+
+#ifndef _VFDSHEXT_H_
+#define _VFDSHEXT_H_
+
+//
+// CVfdShExt
+// COM Shell extension class
+//
+class CVfdShExt : public       IContextMenu,
+                                                       IShellExtInit,
+                                                       IShellPropSheetExt
+//                                                     IQueryInfo
+{
+protected:
+       ULONG                   m_cRefCnt;                              //      reference count
+       LPDATAOBJECT    m_pDataObj;                             //      IDataObject pointer
+       ULONG                   m_nDevice;                              //      VFD device number
+       CHAR                    m_sTarget[MAX_PATH];    //      target path
+       BOOL                    m_bDragDrop;
+
+public:
+       //      constructor / destructor
+       CVfdShExt();
+       ~CVfdShExt();
+
+       //      perform VFD operations
+       DWORD DoVfdOpen(HWND hParent);
+       DWORD DoVfdNew(HWND hParent);
+       DWORD DoVfdClose(HWND hParent);
+       DWORD DoVfdSave(HWND hParent);
+       DWORD DoVfdProtect(HWND hParent);
+       DWORD DoVfdDrop(HWND hParent);
+
+       //      get current attributes
+       ULONG   GetDevice()     { return m_nDevice; }
+       PCSTR   GetTarget()     { return m_sTarget; }
+
+       //      IUnknown inheritance
+       STDMETHODIMP QueryInterface(REFIID, LPVOID *);
+       STDMETHODIMP_(ULONG) AddRef();
+       STDMETHODIMP_(ULONG) Release();
+
+       //      IShellExtInit inheritance
+       STDMETHODIMP Initialize(
+               LPCITEMIDLIST   pIDFolder,
+               LPDATAOBJECT    pDataObj,
+               HKEY                    hKeyID);
+
+       //      IContextMenu inheritance
+       STDMETHODIMP QueryContextMenu(
+               HMENU                   hMenu,
+               UINT                    indexMenu,
+               UINT                    idCmdFirst,
+               UINT                    idCmdLast,
+               UINT                    uFlags);
+
+       STDMETHODIMP InvokeCommand(
+               LPCMINVOKECOMMANDINFO lpcmi);
+
+       STDMETHODIMP GetCommandString(
+               UINT                    idCmd,
+               UINT                    uFlags,
+               UINT                    *reserved,
+               LPSTR                   pszName,
+               UINT                    cchMax);
+
+       //      IShellPropSheetExt inheritance
+       STDMETHODIMP AddPages(
+               LPFNADDPROPSHEETPAGE lpfnAddPage,
+               LPARAM                  lParam);
+
+       STDMETHODIMP ReplacePage(
+               UINT                    uPageID,
+               LPFNADDPROPSHEETPAGE lpfnReplaceWith,
+               LPARAM                  lParam);
+/*
+       //      IQueryInfo inheritance
+
+       STDMETHODIMP GetInfoFlags(
+               DWORD *pdwFlags);
+
+       STDMETHODIMP GetInfoTip(
+               DWORD dwFlags,
+               LPWSTR *ppwszTip);
+*/
+};
+
+typedef CVfdShExt *LPCVFDSHEXT;
+
+#endif // _VFDSHEXT_H_