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

Windows编程

开发平台:

Visual C++

  1. /*+==========================================================================
  2.   File:      ICARS.H
  3.   Summary:   This is the common include file for the Car-related COM
  4.              Interfaces.  The Interface abstract base classes are
  5.              declared.
  6.              This file is global to all the Tutorial Code Samples (kept in
  7.              the ..INC directory).  It is a good practice to factor out
  8.              Interface and GUID specifications to reduce the possibility
  9.              of GUID or interface conflicts.
  10.   Classes:   ICar, IUtilityCar, ICruiseCar, ISample.
  11.   Functions: none
  12.   Origin:    10-7-95: atrent - Factored out of COMOBJ and DLLSERVE.
  13. ----------------------------------------------------------------------------
  14.   This file is part of the Microsoft COM Tutorial Code Samples.
  15.   Copyright (C) Microsoft Corporation, 1997.  All rights reserved.
  16.   This source code is intended only as a supplement to Microsoft
  17.   Development Tools and/or on-line documentation.  See these other
  18.   materials for detailed information regarding Microsoft code samples.
  19.   THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
  20.   KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  21.   IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  22.   PARTICULAR PURPOSE.
  23. ==========================================================================+*/
  24. #if !defined(ICARS_H)
  25. #define ICARS_H
  26. #if !defined(RC_INCLUDE)
  27. /*I+I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I
  28.   Interface: ICar
  29.   Summary:   Basic Interface that can add propulsion, steering, etc, for
  30.              Car-like COM Objects.
  31.   Methods:   Shift
  32.                Shift the main transmission gears.
  33.              Clutch
  34.                Engage/disengage the clutch.
  35.              Speed
  36.                Accelerate/brake the car to a specified speed.
  37.              Steer
  38.                Steer the car.
  39. I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I-I*/
  40. DECLARE_INTERFACE_(ICar, IUnknown)
  41. {
  42.   // IUnknown methods.
  43.   STDMETHOD(QueryInterface) (THIS_ REFIID, PPVOID) PURE;
  44.   STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  45.   STDMETHOD_(ULONG,Release) (THIS) PURE;
  46.   // ICar methods.
  47.   STDMETHOD(Shift)   (THIS_ short) PURE;
  48.   STDMETHOD(Clutch)  (THIS_ short) PURE;
  49.   STDMETHOD(Speed)   (THIS_ short) PURE;
  50.   STDMETHOD(Steer)   (THIS_ short) PURE;
  51. };
  52. /*I+I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I
  53.   Interface: IUtility
  54.   Summary:   Interface that can add sport-utility offroad systems features
  55.              for Car-like COM Objects.
  56.   Methods:   Offroad
  57.                Shift the transfer case for specified 4-wheel drive mode.
  58.              Winch
  59.                Turn front-mounted Winch on/off.
  60. I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I-I*/
  61. DECLARE_INTERFACE_(IUtility, IUnknown)
  62. {
  63.   // IUnknown methods.
  64.   STDMETHOD(QueryInterface) (THIS_ REFIID, PPVOID) PURE;
  65.   STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  66.   STDMETHOD_(ULONG,Release) (THIS) PURE;
  67.   // IUtility methods.
  68.   STDMETHOD(Offroad)   (THIS_ short) PURE;
  69.   STDMETHOD(Winch)     (THIS_ short) PURE;
  70. };
  71. /*I+I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I
  72.   Interface: ICruise
  73.   Summary:   Interface that can add cruise control features for
  74.              Car-like COM Objects.
  75.   Methods:   Engage
  76.                Turns the cruise control system on/off.
  77.              Adjust
  78.                Adjusts the cruise speed up or down by 3 Mph increments.
  79. I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I-I*/
  80. DECLARE_INTERFACE_(ICruise, IUnknown)
  81. {
  82.   // IUnknown methods.
  83.   STDMETHOD(QueryInterface) (THIS_ REFIID, PPVOID) PURE;
  84.   STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  85.   STDMETHOD_(ULONG,Release) (THIS) PURE;
  86.   // ICruise methods.
  87.   STDMETHOD(Engage) (THIS_ BOOL) PURE;
  88.   STDMETHOD(Adjust) (THIS_ BOOL) PURE;
  89. };
  90. /*I+I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I+++I
  91.   Interface: ISample
  92.   Summary:   Utility Interface for Code Sample servers.
  93.   Methods:   Init
  94.                Initializes the Server as a code sample (eg, to log server
  95.                activity to the Client's trace log facility).
  96.              AboutBox
  97.                Commands Server to show it's about box dialog.
  98. I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I---I-I*/
  99. DECLARE_INTERFACE_(ISample, IUnknown)
  100. {
  101.   // IUnknown methods.
  102.   STDMETHOD(QueryInterface) (THIS_ REFIID, PPVOID) PURE;
  103.   STDMETHOD_(ULONG,AddRef)  (THIS) PURE;
  104.   STDMETHOD_(ULONG,Release) (THIS) PURE;
  105.   // ISample methods.
  106.   STDMETHOD(Init)     (THIS_ HWND, PVOID) PURE;
  107.   STDMETHOD(AboutBox) (THIS_ HWND) PURE;
  108. };
  109. #endif // RC_INCLUDE
  110. #endif // ICARS_H