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

Windows编程

开发平台:

Visual C++

  1. CONSERVE - Connectable COM objects in an in-process server
  2. SUMMARY
  3. =======
  4. The CONSERVE sample shows how to construct a connectable COM object,
  5. COBall, in a thread-safe in-process server. To expose connectable object
  6. features, COBall implements the standard COM interface,
  7. IConnectionPointContainer. COBall also implements the custom interface,
  8. IBall, that was introduced in the FRESERVE sample.
  9. The principal focus of CONSERVE is the connectable object support in
  10. COBall and how connected clients are notified of ball events. CONSERVE
  11. works with the CONCLIEN client code sample.
  12. CONSERVE's COBall implements a virtual moving ball similar to the one
  13. coded in the FRESERVE sample. However, rather than FRESERVE's
  14. free-threaded COM object, CONSERVE houses COBall in an apartment model
  15. server. COBall defines the internal logic of a moving ball that exists
  16. within a specified two-dimensional bounding rectangle. COBall provides
  17. only a description of a ball. It is up to the client to create a graphical
  18. representation based on the data managed in COBall.
  19. Clients move the virtual ball using its IBall interface. COBall's internal
  20. logic will bounce the ball when it collides with a boundary. The client
  21. can obtain the ball's current position, size, and color to permit display
  22. of the ball's moving image. The client can also use the connection
  23. facilities of COBall to receive notifications of ball bounce events. The
  24. CONCLIEN sample will use these connection facilities to produce various
  25. sounds when the ball bounces.
  26. CONSERVE uses the CThreaded facility in APPUTIL for thread safety, as in
  27. the FRESERVE sample. COBall objects are derived from the CThreaded class
  28. and inherit its OwnThis and UnOwnThis methods. These methods allow only
  29. one thread at a time to have access to the CONSERVE server and to COBall
  30. objects managed by the server.
  31. For functional descriptions and a tutorial code tour of CONSERVE, see the
  32. Code Tour section in CONSERVE.HTM. For details on setting up the
  33. programmatic usage of CONSERVE, see the Usage section in CONSERVE.HTM. To
  34. read CONSERVE.HTM, run TUTORIAL.EXE in the main tutorial directory and
  35. click the CONSERVE lesson in the table of lessons. You can also achieve
  36. the same thing by clicking the CONSERVE.HTM file after locating the main
  37. tutorial directory in the Windows Explorer. See also CONCLIEN.HTM in the
  38. main tutorial directory for more details on the CONCLIEN client
  39. application and how it works with CONSERVE.DLL. You must build
  40. CONSERVE.DLL before building or running CONCLIEN.
  41. CONSERVE's makefile automatically registers the DllSndBall component in
  42. the registry. This component must be registered before CONSERVE is
  43. available to outside clients as a server for that component. This
  44. self-registration is done using the REGISTER.EXE utility built in the
  45. REGISTER lesson. To build or run CONSERVE, you should build the REGISTER
  46. code sample first.
  47. For details on setting up your system to build and test the code samples
  48. in this COM Tutorial series, see TUTORIAL.HTM. The supplied MAKEFILE is
  49. Microsoft NMAKE-compatible. To create a debug build, issue the NMAKE
  50. command in the Command Prompt window.
  51. Usage
  52. -----
  53. To use CONSERVE, a client program does not need to include CONSERVE.H or
  54. link to CONSERVE.LIB. A client of CONSERVE obtains access solely through
  55. its object's CLSID and COM services. For CONSERVE, that CLSID is
  56. CLSID_DllSndBall (defined in BALLGUID.H in the INC sibling directory).
  57. The CONCLIEN code sample shows how the client obtains this access.
  58. CONSERVE is a DLL that is intended primarily as an in-process server.
  59. Although it can be implicitly loaded by linking to its associated .LIB
  60. file, it is normally used after an explicit LoadLibrary call, usually from
  61. within COM's CoGetClassObject function. CONSERVE is a self-registering
  62. in-process server.
  63. The makefile that builds this sample automatically registers the server in
  64. the registry. You can manually initiate its self-registration by issuing
  65. the following command at the command prompt in the CONSERVE directory:
  66.   nmake register
  67. You can also directly invoke the REGISTER.EXE command at the command prompt
  68. while in the CONSERVE directory.
  69.   ..registerregister.exe conserve.dll
  70. These registration commands require a prior build of the REGISTER sample
  71. in this series, as well as a prior build of CONSERVE.DLL.
  72. In this series, the makefiles use the REGISTER.EXE utility from the
  73. REGISTER sample. Recent releases of the Win32 Platform SDK and Visual C++
  74. include a utility, REGSVR32.EXE, which can be used in a similar fashion to
  75. register in-process servers and marshaling DLLs.
  76. FILES
  77. =====
  78. Files         Description
  79. CONSERVE.TXT  This file.
  80. MAKEFILE      The generic makefile for building the CONSERVE.DLL
  81.               code sample of this lesson.
  82. CONSERVE.H    The include file for declaring as imported or defining as
  83.               exported the service functions in CONSERVE.DLL.
  84. CONSERVE.CPP  The main implementation file for CONSERVE.DLL. Has DllMain
  85.               and the COM server functions (for example, DllGetClassObject).
  86. CONSERVE.DEF  The module definition file. Exports server housing functions.
  87. CONSERVE.RC   The DLL resource definition file for the executable.
  88. CONSERVE.ICO  The icon resource for the executable.
  89. SERVER.H      The include file for the server control C++ object.
  90. SERVER.CPP    The implementation file for the server control object.
  91. FACTORY.H     The include file for the server's class factory COM objects.
  92. FACTORY.CPP   The implementation file for the server's class factories.
  93. CONNECT.H     The include file for the connection point enumerator,
  94.               connection point, and connection enumerator classes.
  95. CONNECT.CPP   The implementation file for the connection point enumerator,
  96.               connection point, and connection enumerators objects.
  97. BALL.H        The include file for the COBall object class.
  98. BALL.CPP      The implementation file for the COBall object class
  99.               and the connection points.