EKOALA2.H
/* 
 * EKOALA2.H 
 * Koala Object EXE Self-Registering Server Chapter 5 
 * 
 * Definitions, classes, and prototypes for an application that 
 * provides Koala objects to any other object user. 
 * 
 * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved 
 * 
 * Kraig Brockschmidt, Microsoft 
 * Internet  :  kraigb@microsoft.com 
 * Compuserve:  >INTERNET:kraigb@microsoft.com 
 */ 
 
 
#ifndef _EKOALA2_H_ 
#define _EKOALA2_H_ 
 
 
//Get the object definitions 
#include "koala.h" 
 
 
//EKOALA2.CPP 
LRESULT APIENTRY KoalaWndProc(HWND, UINT, WPARAM, LPARAM); 
 
class CApp 
    { 
    friend LRESULT APIENTRY KoalaWndProc(HWND, UINT, WPARAM, LPARAM); 
 
    protected: 
        HINSTANCE       m_hInst;            //WinMain parameters 
        HINSTANCE       m_hInstPrev; 
        LPSTR           m_pszCmdLine; 
        UINT            m_nCmdShow; 
 
        HWND            m_hWnd;             //Main window handle 
 
        BOOL            m_fInitialized;     //Did CoInitialize work? 
        LPCLASSFACTORY  m_pIClassFactory;   //Our class factory 
        DWORD           m_dwRegCO;          //Registration key 
 
    private: 
        BOOL SetKeyAndValue(LPTSTR, LPTSTR, LPTSTR); 
 
    public: 
        CApp(HINSTANCE, HINSTANCE, LPSTR, UINT); 
        ~CApp(void); 
        BOOL Init(void); 
        void RegisterServer(void); 
        void UnregisterServer(void); 
    }; 
 
typedef CApp *PAPP; 
 
#define CBWNDEXTRA              sizeof(PAPP) 
#define KOALAWL_STRUCTURE       0 
 
 
void ObjectDestroyed(void); 
 
 
//This class factory object creates Koala objects. 
 
class CKoalaClassFactory : public IClassFactory 
    { 
    protected: 
        ULONG           m_cRef; 
 
    public: 
        CKoalaClassFactory(void); 
        ~CKoalaClassFactory(void); 
 
        //IUnknown members 
        STDMETHODIMP QueryInterface(REFIID, PPVOID); 
        STDMETHODIMP_(ULONG) AddRef(void); 
        STDMETHODIMP_(ULONG) Release(void); 
 
        //IClassFactory members 
        STDMETHODIMP CreateInstance(LPUNKNOWN, REFIID, PPVOID); 
        STDMETHODIMP LockServer(BOOL); 
    }; 
 
typedef CKoalaClassFactory *PCKoalaClassFactory; 
 
#endif //_EKOALA2_H_