KumaBarBand.h


#pragma once
#include "ToolbarKuma.h"
#include "resource.h"
#include <comsvcs.h>


// CKumaBarBand

//IDispatchImplを継承
//IEツールバーを作る際は、IDeskBandとかIObjectWithSiteを継承しないといけない
//そういったインターフェースを実装しておけば、IEが呼んでくれる感じになる
class ATL_NO_VTABLE CKumaBarBand :
	public CComObjectRootEx<CComSingleThreadModel>,
	public CComCoClass<CKumaBarBand, &CLSID_KumaBarBand>,
	public IDispatchImpl<IKumaBarBand, &IID_IKumaBarBand, &LIBID_ToolbarKumaLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
	CKumaBarBand()
	{
	}

	//FinalConstruct の実行中、集約される内部オブジェクトが参照カウントをインクリメントし、
	//その後カウントを 0 にデクリメントした場合でも、オブジェクトが削除されないように保護します。
	//とMSDNに書いてあった
	DECLARE_PROTECT_FINAL_CONSTRUCT()

	HRESULT FinalConstruct()
	{
		return S_OK;
	}

	void FinalRelease()
	{
	}


//レジストリファイル(KumaBarBand.rgs)を読み込んで登録をしてくれる
DECLARE_REGISTRY_RESOURCEID(IDR_KUMABARBAND)

//Objectは集約できないとか書いてあった
//良く分からない、知らない、小麦粉か何かだ
DECLARE_NOT_AGGREGATABLE(CKumaBarBand)

//COMマップ
//ここに書いておけば、QueryInterfaceを通してインターフェイスをクライアントに公開できるそうな
//後でIDeskBandとかをここへ登録する
BEGIN_COM_MAP(CKumaBarBand)
	COM_INTERFACE_ENTRY(IKumaBarBand)
	COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()


// IKumaBarBand
public:
};

//外からRegisterServerが呼ばれた際に、
//ここで設定した内容(KumaBarBand.rgs)も自動でレジストリ登録してくれるらしい
//UnregisterServerも同じく
OBJECT_ENTRY_AUTO(__uuidof(KumaBarBand), CKumaBarBand)


戻る

コメントスペース