diff --git a/src/GvimExt/gvimext.h b/src/GvimExt/gvimext.h
new file mode 100644
index 0000000..5eb5004
--- /dev/null
+++ b/src/GvimExt/gvimext.h
@@ -0,0 +1,164 @@
+/* vi:set ts=8 sts=4 sw=4:
+ *
+ * VIM - Vi IMproved	gvimext by Tianmiao Hu
+ *
+ * Do ":help uganda"  in Vim to read copying and usage conditions.
+ * Do ":help credits" in Vim to see a list of people who contributed.
+ */
+
+/*
+ * If you have any questions or any suggestions concerning gvimext, please
+ * contact Tianmiao Hu: tianmiao@acm.org.
+ */
+
+#if !defined(AFX_STDAFX_H__3389658B_AD83_11D3_9C1E_0090278BBD99__INCLUDED_)
+#define AFX_STDAFX_H__3389658B_AD83_11D3_9C1E_0090278BBD99__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+// Insert your headers here
+// #define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
+
+//--------------------------------------------------------------
+// common user interface routines
+//
+//
+//--------------------------------------------------------------
+
+#ifndef STRICT
+#define STRICT
+#endif
+
+#define INC_OLE2	// WIN32, get ole2 from windows.h
+
+#include <windows.h>
+#include <windowsx.h>
+#include <shlobj.h>
+
+#define ResultFromShort(i)  ResultFromScode(MAKE_SCODE(SEVERITY_SUCCESS, 0, (USHORT)(i)))
+
+// Initialize GUIDs (should be done only and at-least once per DLL/EXE)
+//
+#pragma data_seg(".text")
+#define INITGUID
+#include <initguid.h>
+#include <shlguid.h>
+
+//
+// The class ID of this Shell extension class.
+//
+// class id:  {51EEE242-AD87-11d3-9C1E-0090278BBD99}
+//
+//
+// NOTE!!!  If you use this shell extension as a starting point,
+//	    you MUST change the GUID below.  Simply run UUIDGEN.EXE
+//	    to generate a new GUID.
+//
+
+// {51EEE242-AD87-11d3-9C1E-0090278BBD99}
+// static const GUID <<name>> =
+// { 0x51eee242, 0xad87, 0x11d3, { 0x9c, 0x1e, 0x0, 0x90, 0x27, 0x8b, 0xbd, 0x99 } };
+//
+//
+
+// {51EEE242-AD87-11d3-9C1E-0090278BBD99}
+// IMPLEMENT_OLECREATE(<<class>>, <<external_name>>,
+// 0x51eee242, 0xad87, 0x11d3, 0x9c, 0x1e, 0x0, 0x90, 0x27, 0x8b, 0xbd, 0x99);
+//
+
+// {51EEE242-AD87-11d3-9C1E-0090278BBD99}  -- this is the registry format
+DEFINE_GUID(CLSID_ShellExtension, 0x51eee242, 0xad87, 0x11d3, 0x9c, 0x1e, 0x0, 0x90, 0x27, 0x8b, 0xbd, 0x99);
+
+// this class factory object creates context menu handlers for windows 32 shell
+class CShellExtClassFactory : public IClassFactory
+{
+protected:
+	ULONG	m_cRef;
+
+public:
+	CShellExtClassFactory();
+	~CShellExtClassFactory();
+
+	//IUnknown members
+	STDMETHODIMP			QueryInterface(REFIID, LPVOID FAR *);
+	STDMETHODIMP_(ULONG)	AddRef();
+	STDMETHODIMP_(ULONG)	Release();
+
+	//IClassFactory members
+	STDMETHODIMP		CreateInstance(LPUNKNOWN, REFIID, LPVOID FAR *);
+	STDMETHODIMP		LockServer(BOOL);
+
+};
+typedef CShellExtClassFactory *LPCSHELLEXTCLASSFACTORY;
+#define MAX_HWND 100
+
+// this is the actual OLE Shell context menu handler
+class CShellExt : public IContextMenu,
+			 IShellExtInit
+{
+protected:
+    ULONG	 m_cRef;
+    LPDATAOBJECT m_pDataObj;
+    UINT	 m_edit_existing_off;
+
+    // For some reason, this callback must be static
+    static BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam);
+
+    STDMETHODIMP PushToWindow(HWND hParent,
+	    LPCSTR pszWorkingDir,
+	    LPCSTR pszCmd,
+	    LPCSTR pszParam,
+	    int iShowCmd,
+	    int idHWnd);
+
+    STDMETHODIMP InvokeGvim(HWND hParent,
+	    LPCSTR pszWorkingDir,
+	    LPCSTR pszCmd,
+	    LPCSTR pszParam,
+	    int iShowCmd);
+
+    STDMETHODIMP InvokeSingleGvim(HWND hParent,
+	    LPCSTR pszWorkingDir,
+	    LPCSTR pszCmd,
+	    LPCSTR pszParam,
+	    int iShowCmd,
+	    int useDiff);
+
+public:
+    int		 m_cntOfHWnd;
+    HWND	 m_hWnd[MAX_HWND];
+    CShellExt();
+    ~CShellExt();
+
+    //IUnknown members
+    STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *);
+    STDMETHODIMP_(ULONG) AddRef();
+    STDMETHODIMP_(ULONG) Release();
+
+    //IShell members
+    STDMETHODIMP QueryContextMenu(HMENU hMenu,
+	    UINT indexMenu,
+	    UINT idCmdFirst,
+	    UINT idCmdLast,
+	    UINT uFlags);
+
+    STDMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi);
+
+    STDMETHODIMP GetCommandString(UINT idCmd,
+	    UINT uFlags,
+	    UINT FAR *reserved,
+	    LPSTR pszName,
+	    UINT cchMax);
+
+    //IShellExtInit methods
+    STDMETHODIMP Initialize(LPCITEMIDLIST pIDFolder,
+	    LPDATAOBJECT pDataObj,
+	    HKEY hKeyID);
+};
+
+typedef CShellExt *LPCSHELLEXT;
+#pragma data_seg()
+
+#endif
