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 / chap10 / datauser / datauser.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-05-03  |  3.6 KB  |  128 lines

  1. /*
  2.  * DATAUSER.H
  3.  * Data Object User Chapter 10
  4.  *
  5.  * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
  6.  *
  7.  * Kraig Brockschmidt, Microsoft
  8.  * Internet  :  kraigb@microsoft.com
  9.  * Compuserve:  >INTERNET:kraigb@microsoft.com
  10.  */
  11.  
  12.  
  13. #ifndef _DATAUSER_H_
  14. #define _DATAUSER_H_
  15.  
  16. #define INC_OLE2
  17. #define CHAPTER10
  18. #include <inole.h>
  19.  
  20. //Menu Resource ID and Commands
  21. #define IDR_MENU                    1
  22.  
  23.  
  24. #define IDM_OBJECTUSEDLL                100
  25. #define IDM_OBJECTUSEEXE                101
  26. #define IDM_OBJECTDATASIZESMALL         102
  27. #define IDM_OBJECTDATASIZEMEDIUM        103
  28. #define IDM_OBJECTDATASIZELARGE         104
  29. #define IDM_OBJECTQUERYGETDATA          105
  30. #define IDM_OBJECTGETDATATEXT           106
  31. #define IDM_OBJECTGETDATABITMAP         107
  32. #define IDM_OBJECTGETDATAMETAFILEPICT   108
  33. #define IDM_OBJECTEXIT                  109
  34.  
  35. #define IDM_ADVISEMIN                   200
  36. #define IDM_ADVISETEXT                  (IDM_ADVISEMIN+CF_TEXT)
  37. #define IDM_ADVISEBITMAP                (IDM_ADVISEMIN+CF_BITMAP)
  38. #define IDM_ADVISEMETAFILEPICT          (IDM_ADVISEMIN+CF_METAFILEPICT)
  39. #define IDM_ADVISEGETDATA               300
  40. #define IDM_ADVISEREPAINT               301
  41.  
  42.  
  43. //DATAUSER.CPP
  44. LRESULT APIENTRY DataUserWndProc(HWND, UINT, WPARAM, LPARAM);
  45.  
  46.  
  47. class CAdviseSink;
  48. typedef class CAdviseSink *PCAdviseSink;
  49.  
  50.  
  51. /*
  52.  * Application-defined classes and types.
  53.  */
  54.  
  55. class CApp
  56.     {
  57.     friend LRESULT APIENTRY DataUserWndProc(HWND, UINT, WPARAM
  58.         , LPARAM);
  59.  
  60.     friend class CAdviseSink;
  61.  
  62.     protected:
  63.         HINSTANCE       m_hInst;            //WinMain parameters
  64.         HINSTANCE       m_hInstPrev;
  65.         UINT            m_nCmdShow;
  66.  
  67.         HWND            m_hWnd;             //Main window handle
  68.         BOOL            m_fEXE;             //For tracking menu
  69.  
  70.         PCAdviseSink    m_pIAdviseSink;
  71.  
  72.         DWORD           m_dwConn;           //Advise connection
  73.         UINT            m_cfAdvise;         //Advise format
  74.         BOOL            m_fGetData;         //GetData on data change?
  75.         BOOL            m_fRepaint;         //Repaint on data change?
  76.  
  77.         LPDATAOBJECT    m_pIDataSmall;
  78.         LPDATAOBJECT    m_pIDataMedium;
  79.         LPDATAOBJECT    m_pIDataLarge;
  80.  
  81.         LPDATAOBJECT    m_pIDataObject;     //Current selection
  82.         UINT            m_cf;
  83.         STGMEDIUM       m_stm;              //Current rendering
  84.  
  85.         BOOL            m_fInitialized;     //Did CoInitialize work?
  86.  
  87.     public:
  88.         CApp(HINSTANCE, HINSTANCE, UINT);
  89.         ~CApp(void);
  90.         BOOL Init(void);
  91.         BOOL FReloadDataObjects(BOOL);
  92.         void TryQueryGetData(LPFORMATETC, UINT, BOOL, UINT);
  93.         void Paint(void);
  94.     };
  95.  
  96.  
  97. typedef CApp *PAPP;
  98.  
  99. #define CBWNDEXTRA               sizeof(PAPP)
  100. #define DATAUSERWL_STRUCTURE     0
  101.  
  102.  
  103. //This lives with the app to get OnDataChange notifications.
  104.  
  105. class CAdviseSink : public IAdviseSink
  106.     {
  107.     protected:
  108.         ULONG               m_cRef;
  109.         PAPP                m_pApp;
  110.  
  111.     public:
  112.         CAdviseSink(PAPP);
  113.         ~CAdviseSink(void);
  114.  
  115.         STDMETHODIMP QueryInterface(REFIID, PPVOID);
  116.         STDMETHODIMP_(ULONG) AddRef(void);
  117.         STDMETHODIMP_(ULONG) Release(void);
  118.  
  119.         //We only implement OnDataChange for now.
  120.         STDMETHODIMP_(void)  OnDataChange(LPFORMATETC, LPSTGMEDIUM);
  121.         STDMETHODIMP_(void)  OnViewChange(DWORD, LONG);
  122.         STDMETHODIMP_(void)  OnRename(LPMONIKER);
  123.         STDMETHODIMP_(void)  OnSave(void);
  124.         STDMETHODIMP_(void)  OnClose(void);
  125.     };
  126.  
  127. #endif //_DATAUSER_H_
  128.