CONNECT.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:

Windows编程

开发平台:

Visual C++

  1. /*
  2.  * CONNECT.H
  3.  * Connectable Object Sample, Chapter 4
  4.  *
  5.  * Definitions, classes, and prototypes
  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. #ifndef _QUERY_H_
  14. #define _QUERY_H_
  15. #define CHAPTER4
  16. #define INC_CONTROLS
  17. #include <inole.h>
  18. #ifndef RC_INVOKED
  19. #include "interfac.h"
  20. #include "object.h"
  21. #endif
  22. //Menu Resource ID and Commands
  23. #define IDR_MENU                    1
  24. #define IDM_OBJECTCREATE            100
  25. #define IDM_OBJECTRELEASE           101
  26. #define IDM_OBJECTSINK1CONNECT      102
  27. #define IDM_OBJECTSINK1DISCONNECT   103
  28. #define IDM_OBJECTSINK2CONNECT      104
  29. #define IDM_OBJECTSINK2DISCONNECT   105
  30. #define IDM_OBJECTEXIT              106
  31. #define IDM_TRIGGERQUACK            200
  32. #define IDM_TRIGGERFLAP             201
  33. #define IDM_TRIGGERPADDLE           202
  34. //CONNECT.CPP
  35. LRESULT APIENTRY ConnectWndProc(HWND, UINT, WPARAM, LPARAM);
  36. class CDuckEvents;
  37. typedef CDuckEvents *PCDuckEvents;
  38. //Identifiers for sinks, indices into m_rgpSink below
  39. enum
  40.     {
  41.     SINK1=0,
  42.     SINK2
  43.     };
  44. class CApp
  45.     {
  46.     friend LRESULT APIENTRY ConnectWndProc(HWND, UINT, WPARAM, LPARAM);
  47.     protected:
  48.         HINSTANCE       m_hInst;            //WinMain parameters
  49.         HINSTANCE       m_hInstPrev;
  50.         UINT            m_nCmdShow;
  51.         HWND            m_hWnd;             //Main window handle
  52.         PCDuckEvents    m_rgpSink[2];       //Sinks to connect
  53.         /*
  54.          * We need to have a pointer to the full object in
  55.          * this somewhat contrived example because we have to
  56.          * tell it when to fire notifications.  Usually there
  57.          * will be something else besides a menu as used in
  58.          * this sample to trigger those firings.
  59.          */
  60.         PCConnObject    m_pObj;             //Source object
  61.     protected:
  62.         void              Connect(UINT);
  63.         void              Disconnect(UINT);
  64.         IConnectionPoint *GetConnectionPoint(void);
  65.     public:
  66.         CApp(HINSTANCE, HINSTANCE, UINT);
  67.         ~CApp(void);
  68.         BOOL        Init(void);
  69.         void        Message(LPTSTR);
  70.     };
  71. typedef CApp *PAPP;
  72. #define CBWNDEXTRA          sizeof(PAPP)
  73. #define CONNECTWL_STRUCTURE 0
  74. class CDuckEvents : public IDuckEvents
  75.     {
  76.     private:
  77.         ULONG       m_cRef;     //Reference count
  78.         PAPP        m_pApp;     //For calling Message
  79.         UINT        m_uID;      //Sink identifier
  80.     public:
  81.         //Connection key, public for CApp's usage
  82.         DWORD       m_dwCookie;
  83.     public:
  84.         CDuckEvents(PAPP, UINT);
  85.         ~CDuckEvents(void);
  86.         //IUnknown members
  87.         STDMETHODIMP         QueryInterface(REFIID, PPVOID);
  88.         STDMETHODIMP_(DWORD) AddRef(void);
  89.         STDMETHODIMP_(DWORD) Release(void);
  90.         //IDuckEvents members
  91.         STDMETHODIMP Quack(void);
  92.         STDMETHODIMP Flap(void);
  93.         STDMETHODIMP Paddle(void);
  94.     };
  95. #endif //_CONNECT_H_