home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / dbmsg / mapi / checkers.frm / form.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-04-11  |  3.1 KB  |  116 lines

  1. HRESULT HrStartOleAndRegisterClassFactory(void);
  2. HRESULT HrStopForms(void);
  3.  
  4. #define NOTPURE
  5. #define MAX_ADVISE 48
  6.  
  7. /*
  8.  *  Types
  9.  */
  10.  
  11. // ----- class factory
  12. class FRMFAC : public IClassFactory
  13. {
  14.   protected:
  15.     ULONG       cRef;
  16.     CLSID       clsid;
  17.  
  18.     ~FRMFAC(void);
  19.  
  20.   public:
  21.     FRMFAC();
  22.  
  23.     // *** IUnknown methods
  24.     STDMETHOD(QueryInterface)   (THIS_ REFIID riid, LPVOID FAR* ppvObj);
  25.     STDMETHOD_(ULONG,AddRef)    (THIS);
  26.     STDMETHOD_(ULONG,Release)   (THIS);
  27.  
  28.     // *** IClassFactory methods
  29.     STDMETHOD(CreateInstance)   (THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID FAR* ppvObject);
  30.     STDMETHOD(LockServer)       (THIS_ BOOL fLock);
  31. };
  32.  
  33. class FRMFMR : public FRMFAC
  34. {
  35.   public:
  36.     FRMFMR();
  37. };
  38.  
  39. // ----- The minimal interface a form can support
  40. class FRM : public IPersistMessage, public IMAPIForm
  41. {
  42.   protected:
  43.     ULONG                   cRef;               // Reference count
  44.     CLSID                   clsid;
  45.  
  46.     BOOL                    fDirty;             // Is our message dirty?
  47.     BOOL                    fNoScribble;        // Are we in no-scribble mode?
  48.     BOOL                    fSentMessage;       // Are we reading a sent message?
  49.  
  50.     // advise handling
  51.  
  52.     BOOL                    afAdvisee[MAX_ADVISE];
  53.     LPMAPIVIEWADVISESINK    aAdvisePtrs[MAX_ADVISE];
  54.  
  55.     // data
  56.  
  57.     SQUARE                  b[SQRS_MAX];        // The board
  58.     int                     turn;               // Who's turn it is
  59.     long                    movenum;
  60.     long                    score;
  61.  
  62.     ~FRM(void);
  63.  
  64.   public:
  65.     LPMESSAGE               pMessage;
  66.     LPMAPIMESSAGESITE       pMessageSite;
  67.     LPMAPISESSION           pSession;
  68.  
  69.     LPMAPIFORMMGR           pFormMgr;
  70.     LPMAPIFORMINFO          pFormInfo;
  71.  
  72.     FRM(REFCLSID clsid);
  73.  
  74.     MAPI_IUNKNOWN_METHODS(NOTPURE)
  75.     MAPI_GETLASTERROR_METHOD(NOTPURE)
  76.     MAPI_IPERSISTMESSAGE_METHODS(NOTPURE)
  77.     MAPI_IMAPIFORM_METHODS(NOTPURE)
  78.  
  79.     HRESULT ShowCurrentMessage(ULONG ulhwndParent);
  80.     HRESULT LaunchReplyMessage(ULONG ulhwndParent);
  81.     VOID FRM::GetCheckersData(SQUARE* out_b, int* out_turn, long* out_movenum, long* out_score);
  82.     VOID FRM::SetCheckersData(SQUARE* in_b, int in_turn, long in_movenumber, long in_score);
  83.     HRESULT FRM::Remember(LPMAPIMESSAGESITE pmsite, LPMESSAGE pmsg);
  84.     HRESULT FRM::Forget(VOID);
  85.     HRESULT SendForm(VOID);
  86.     HRESULT FRM::AddressForm(HWND hwnd, BOOL fDontShowIfRecipsExist);
  87.     SCODE FRM::ScGetRecipientAdrlist(LPMESSAGE pmsg, LPADRLIST * ppal);
  88.  
  89. };
  90.  
  91. /*
  92.  *  Macros
  93.  */
  94.  
  95. #define ADVISE(X)                        \
  96.    for (LONG i = 0; i < MAX_ADVISE; i++) \
  97.       if (afAdvisee[i])                  \
  98.          aAdvisePtrs[i]->X
  99.  
  100. #define ReleaseObj(_pobj) \
  101.         if (_pobj) \
  102.                 (_pobj)->Release()
  103.  
  104. /*
  105.  *  Dependencies specific to this form
  106.  */
  107.  
  108. #define CHKR_FORM
  109. extern HWND hMainWnd;
  110.  
  111. #define PR_BOARD        PROP_TAG( PT_BINARY,    0x6800)
  112. #define PR_TURN         PROP_TAG( PT_LONG,      0x6801)
  113. #define PR_MOVENUMBER   PROP_TAG( PT_LONG,      0x6802)
  114. #define PR_SCORINGFUNC  PROP_TAG( PT_LONG,      0x6803)
  115.  
  116.