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)
戻る
コメントスペース