diff src/GvimExt/gvimext.h @ 10:4e2284e71352

updated for version 7.0002
author vimboss
date Thu, 24 Jun 2004 15:53:16 +0000
parents
children 0f9f4761ad9c
line wrap: on
line diff
new file mode 100644
--- /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