OBJUSER2.H

/* 
* OBJUSER2.H
* Koala Client #2 Chapter 6
*
* Definitions and structures.
*
* Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
*
* Kraig Brockschmidt, Microsoft
* Internet : kraigb@microsoft.com
* Compuserve: >INTERNET:kraigb@microsoft.com
*/


#ifndef _OBJUSER2_H_
#define _OBJUSER2_H_

#define CHAPTER6
#define INC_OLEUI
#include <inole.h>

//Menu Resource ID and Commands
#define IDR_MENU 1


#define IDM_OBJECTCREATE 100
#define IDM_OBJECTGETCLASSID 101
#define IDM_OBJECTRELEASE 102
#define IDM_OBJECTEXIT 103



//OBJUSER.CPP
LRESULT APIENTRY ObjectUserWndProc(HWND, UINT, WPARAM, LPARAM);

class CMessageFilter;
typedef CMessageFilter *PCMessageFilter;

class CApp
{
friend LRESULT APIENTRY ObjectUserWndProc(HWND, UINT, WPARAM
, LPARAM);
friend class CMessageFilter;

protected:
HINSTANCE m_hInst; //WinMain parameters
HINSTANCE m_hInstPrev;
UINT m_nCmdShow;

HWND m_hWnd; //Main window handle

LPUNKNOWN m_pIUnknown; //IUnknown interface
BOOL m_fInitialized; //Did CoInitialize work?

PCMessageFilter m_pMsgFilter; //Our message filter

public:
CApp(HINSTANCE, HINSTANCE, UINT);
~CApp(void);

BOOL Init(void);
void Message(LPTSTR);
};

typedef CApp *PAPP;

#define CBWNDEXTRA sizeof(PAPP)
#define OBJUSERWL_STRUCTURE 0


//Message Filter Object

class CMessageFilter : public IMessageFilter
{
protected:
ULONG m_cRef; //Object reference count
PAPP m_pApp;
HWND m_hDlg; //Dialog handle

private:
UINT DisplayBusyDialog(HTASK, DWORD);

public:
CMessageFilter(PAPP);
~CMessageFilter(void);

STDMETHODIMP QueryInterface(REFIID, LPVOID *);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);

STDMETHODIMP_(DWORD) HandleInComingCall(DWORD, HTASK
#ifdef WIN32
, DWORD, LPINTERFACEINFO);
#else
, DWORD, DWORD);
#endif
STDMETHODIMP_(DWORD) RetryRejectedCall(HTASK, DWORD, DWORD);
STDMETHODIMP_(DWORD) MessagePending(HTASK, DWORD, DWORD);
};



#endif //_OBJUSER2_H_