home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / vile-src.zip / vile-8.1 / w32ole.h < prev    next >
C/C++ Source or Header  |  1998-08-27  |  3KB  |  116 lines

  1. /*
  2.  * w32ole.h:      Winvile's OLE definitions (the editor currently
  3.  *                supports only OLE Automation).
  4.  *
  5.  * Preconditions: include <windows.h> and <ole2.h> prior to including this file.
  6.  *
  7.  * Note:          a great deal of the code included in this file was copied
  8.  *                from the Microsoft platform sdk samples directory,
  9.  *                specifically from:
  10.  *
  11.  *                samples\com\oleaut\hello\hello .
  12.  *
  13.  * $Header: /usr/build/vile/vile/RCS/w32ole.h,v 1.2 1998/08/27 11:07:24 cmorgan Exp $
  14.  */
  15.  
  16. #ifndef W32OLE_H
  17. #define W32OLE_H
  18.  
  19. #if defined(_UNICODE) || defined(UNICODE)
  20.     #define FROM_OLE_STRING(str) str
  21.     #define TO_OLE_STRING(str) str
  22. #else
  23.     #define FROM_OLE_STRING(str) ConvertToAnsi(str)
  24.     char* ConvertToAnsi(OLECHAR *szW);
  25.     #define TO_OLE_STRING(str) ConvertToUnicode(str)
  26.     OLECHAR* ConvertToUnicode(char *szA);
  27. #endif
  28.  
  29. #include "winviletlb.h"
  30.  
  31. extern HRESULT LoadTypeInfo(ITypeInfo **pptinfo, REFCLSID clsid);
  32.  
  33. class vile_oa : public IVileAuto    // oa -> ole automation
  34. {
  35. public:
  36.     // IUnknown methods
  37.     STDMETHOD(QueryInterface)(REFIID riid, LPVOID * ppvObj);
  38.     STDMETHOD_(ULONG, AddRef)(void);
  39.     STDMETHOD_(ULONG, Release)(void);
  40.  
  41.     // IDispatch methods
  42.     STDMETHOD(GetTypeInfoCount)(UINT * pctinfo);
  43.     STDMETHOD(GetTypeInfo)(
  44.       UINT itinfo,
  45.       LCID lcid,
  46.       ITypeInfo * * pptinfo);
  47.     STDMETHOD(GetIDsOfNames)(
  48.       REFIID riid,
  49.       OLECHAR * * rgszNames,
  50.       UINT cNames,
  51.       LCID lcid,
  52.       DISPID * rgdispid);
  53.     STDMETHOD(Invoke)(
  54.       DISPID dispidMember,
  55.       REFIID riid,
  56.       LCID lcid,
  57.       WORD wFlags,
  58.       DISPPARAMS * pdispparams,
  59.       VARIANT * pvarResult,
  60.       EXCEPINFO * pexcepinfo,
  61.       UINT * puArgErr);
  62.  
  63.     // IVileAuto methods
  64.     STDMETHOD(get_Application)(IVileAuto **ppvile);
  65.     STDMETHOD(get_FullName)(BSTR *pbstr);
  66.     STDMETHOD(get_InsertMode)(VARIANT_BOOL *pbool);
  67.     STDMETHOD(get_IsMinimized)(VARIANT_BOOL *pbool);
  68.     STDMETHOD(get_Name)(BSTR *pbstr);
  69.     STDMETHOD(get_Parent)(IVileAuto **ppvile);
  70.     STDMETHOD(put_Visible)(VARIANT_BOOL bVisible);
  71.     STDMETHOD(get_Visible)(VARIANT_BOOL *pbool);
  72.     STDMETHOD(ForegroundWindow)();
  73.     STDMETHOD(Minimize)();
  74.     STDMETHOD(Quit)();
  75.     STDMETHOD(Restore)();
  76.     STDMETHOD(VileKeys)(BSTR keys);
  77.  
  78.  
  79.     // vile_oa methods
  80.     static HRESULT Create(vile_oa **ppvile, BOOL visible);
  81.                                     // Creates and intializes Vile object
  82.     vile_oa();
  83.     ~vile_oa();
  84.  
  85. public:
  86.     BSTR m_bstrName;               // Name of application.
  87.  
  88. private:
  89.     LPTYPEINFO m_ptinfo;           // Vile application type information
  90.     BSTR m_bstrFullName;           // Full name of application.
  91.     VARIANT_BOOL m_bVisible;       // Editor visible?
  92.     ULONG m_cRef;                  // Reference count
  93.     HWND m_hwnd;                   // Winvile's window handle.
  94. };
  95.  
  96. class vile_oa_cf : public IClassFactory
  97. {
  98. public:
  99.     // IUnknown methods
  100.     STDMETHOD(QueryInterface)(REFIID riid, LPVOID * ppvObj);
  101.     STDMETHOD_(ULONG, AddRef)(void);
  102.     STDMETHOD_(ULONG, Release)(void);
  103.  
  104.     // IClassFactory methods
  105.     STDMETHOD(CreateInstance)(IUnknown * punkOuter, REFIID riid,
  106.                               void * * ppv);
  107.     STDMETHOD(LockServer)(BOOL fLock);
  108.  
  109.     vile_oa_cf();
  110.  
  111. private:
  112.     ULONG m_cRef;                   // Reference count
  113. };
  114.  
  115. #endif
  116.