home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / com / inole2 / chap16 / autocli2 / autocli2.h < prev    next >
C/C++ Source or Header  |  1995-05-03  |  4KB  |  139 lines

  1. /*
  2.  * AUTOCLI2.H
  3.  * Automation Client with Property Pages Chapter 16
  4.  *
  5.  * Definitions and structures.
  6.  *
  7.  * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
  8.  *
  9.  * Kraig Brockschmidt, Microsoft
  10.  * Internet  :  kraigb@microsoft.com
  11.  * Compuserve:  >INTERNET:kraigb@microsoft.com
  12.  */
  13.  
  14. #ifndef _AUTOCLI2_H_
  15. #define _AUTOCLI2_H_
  16.  
  17. #define INC_AUTOMATION
  18. //CHAPTER16MOD
  19. #define INC_CONTROLS
  20. #define CHAPTER16
  21. //End CHAPTER16MOD
  22. #include <inole.h>
  23. #include <shellapi.h>
  24. #include <malloc.h>
  25.  
  26. //Menu Resource ID and Commands
  27. #define IDR_MENU                    1
  28.  
  29. #define IDM_GETSOUND                0x0001
  30. #define IDM_BEEP                    0x0002
  31. #define IDM_EXIT                    0x0003
  32.  
  33. //CHAPTER16MOD
  34. #define IDM_PROPERTIES              0x0004
  35. #define IDM_ENFORCEREADONLY         0x0005
  36. //End CHAPTER16MOD
  37.  
  38. //These match MB_* identifiers for MessageBeep
  39. #define IDM_SETSOUNDDEFAULT         0x0008
  40. #define IDM_SETSOUNDHAND            0x0010
  41. #define IDM_SETSOUNDQUESTION        0x0020
  42. #define IDM_SETSOUNDEXCLAMATION     0x0030
  43. #define IDM_SETSOUNDASTERISK        0x0040
  44.  
  45. #define IDM_SETSOUNDBOGUS           0x0555
  46.  
  47.  
  48. //Stringtable IDs
  49. #define CCHSTRINGMAX                80
  50. #define IDS_MESSAGEEXCEPTION        0
  51. #define IDS_MESSAGEEXCEPTIONSCODE   1
  52. #define IDS_MESSAGEUNKNOWNEXCEPTION 2
  53.  
  54. //CHAPTER16MOD
  55. class CPropertyNotifySink;
  56. typedef CPropertyNotifySink *PCPropertyNotifySink;
  57. //End CHAPTER16MOD
  58.  
  59. //AUTOCLI2.CPP
  60. LRESULT APIENTRY AutoClientWndProc(HWND, UINT, WPARAM, LPARAM);
  61. void HelpDirFromCLSID(CLSID, LPTSTR);
  62.  
  63. class CApp
  64.     {
  65.     friend LRESULT APIENTRY AutoClientWndProc(HWND, UINT, WPARAM
  66.         , LPARAM);
  67.  
  68.     //CHAPTER16MOD
  69.     friend CPropertyNotifySink;
  70.     //End CHAPTER16MOD
  71.  
  72.     protected:
  73.         HINSTANCE       m_hInst;            //WinMain parameters
  74.         HINSTANCE       m_hInstPrev;
  75.         UINT            m_nCmdShow;
  76.  
  77.         HWND            m_hWnd;             //Main window handle
  78.         BOOL            m_fInitialized;     //Did CoInitialize work?
  79.         LCID            m_lcid;             //User locale
  80.         TCHAR           m_szHelpDir[256];   //Object's help directory
  81.         IDispatch      *m_pIDispatch;       //Object in use
  82.  
  83.         //CHAPTER16MOD
  84.         BOOL                 m_fReadOnly;   //RequestEdit control
  85.         IPropertyNotifySink *m_pSink;       //Our sink
  86.         IConnectionPoint    *m_pIConnPt;    //Object's connection point
  87.         DWORD                m_dwConn;      //Sink connection
  88.         //End CHAPTER16MOD
  89.  
  90.     public:
  91.         CApp(HINSTANCE, HINSTANCE, UINT);
  92.         ~CApp(void);
  93.  
  94.         BOOL    Init(void);
  95.         HRESULT NameToID(OLECHAR *, DISPID *);
  96.         HRESULT Invoke(DISPID, WORD, DISPPARAMS *, VARIANT *
  97.                     , EXCEPINFO *, UINT *);
  98.         void    Message(LPTSTR);
  99.         UINT    Message(LPTSTR, UINT);
  100.  
  101.         //CHAPTER16MOD
  102.         void    ShowProperties(void);
  103.         //End CHAPTER16MOD
  104.     };
  105.  
  106.  
  107. typedef CApp *PCApp;
  108.  
  109. #define CBWNDEXTRA              sizeof(PCApp)
  110. #define AUTOCLI2WL_STRUCTURE    0
  111.  
  112.  
  113. //CHAPTER16MOD
  114.  
  115. class CPropertyNotifySink : public IPropertyNotifySink
  116.     {
  117.     protected:
  118.         ULONG           m_cRef;      //Reference count
  119.         PCApp           m_pApp;      //Backpointer to the app
  120.  
  121.     public:
  122.         CPropertyNotifySink(PCApp);
  123.         ~CPropertyNotifySink(void);
  124.  
  125.         //IPropertyNotifySink interface members
  126.         STDMETHODIMP QueryInterface(REFIID, LPVOID *);
  127.         STDMETHODIMP_(ULONG) AddRef(void);
  128.         STDMETHODIMP_(ULONG) Release(void);
  129.  
  130.         STDMETHODIMP OnChanged(DISPID);
  131.         STDMETHODIMP OnRequestEdit(DISPID);
  132.     };
  133.  
  134.  
  135. //End CHAPTER16MOD
  136.  
  137.  
  138. #endif //_AUTOCLI2_H_
  139.