apart.h

来自「COM技术内幕源码 ,随书原码」· C头文件 代码 · 共 89 行

H
89
字号
#ifndef __CSimpleApartment_h__#define __CSimpleApartment_h__/////////////////////////////////////////////////////////////// CSimpleApartment//   - A simple C++ class that encapsulates creating a//     component on an apartment thread.//class CSimpleApartment {public:	// Constructor	CSimpleApartment() ;	// Destructor	virtual ~CSimpleApartment()  ;	// Create and start the thread.	BOOL StartThread(DWORD WaitTime = 500) ;	// Stop the thread.	void StopThread() ;	// Current thread status	BOOL IsThreadStarted() ;	// Signal other thread to create the component.	HRESULT CreateComponent(const CLSID& clsid,	                        const IID& iid,	                        IUnknown** ppI) ;// Pure virtual functionsprotected:	// Create the component on this thread.	virtual HRESULT CreateComponentOnThread(const CLSID& clsid,                                                const IID& iid,                                                IUnknown** ppI) = 0 ;	// Function for doing background processing	virtual void WorkerFunction() = 0 ;// Member variablesprotected:	// ID of thread	DWORD m_ThreadId ;	// Handle to thread	HANDLE m_hThread ;	// Event tells apartment thread to create a component.	HANDLE m_hCreateComponentEvent ;	// Event signals main thread to continue.	HANDLE m_hComponentReadyEvent ;	// Pointer to the stream for marshaling the interface	IStream* m_pIStream ;	// HRESULT returned when creating component	HRESULT m_hr ;	// Pointer to CLSID to create	const CLSID* m_pclsid ;	// Pointer to IID of interface to get	const IID* m_piid ;	// Time to wait before calling WorkerFunction	DWORD m_WaitTime ;// Internal helper functionsprivate:	// Thread procedure	static DWORD WINAPI RealThreadProc(void* pv) ;	// Member thread procedure	DWORD ClassThreadProc() ;	// Helper function to simplify CreateComponentOnThread	void CreateComponentOnThread() ;	// Wait for an event, but process window messages.	BOOL WaitWithMessageLoop(HANDLE hEvent) ;} ;#endif __CSimpleApartment_h__

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?