ToolbarKuma.cpp


#include "stdafx.h"
#include "resource.h"
#include "ToolbarKuma.h"


//CAtlDllModuleTは、
//DllMain、DllCanUnloadNow、DllGetClassObject、DllRegisterServer、DllUnregisterServer、
//といったDLLの必須の関数を実装している。
//その為、このソースの下の方で、上記メソッドを記述している箇所は、
//_AtlModule.{関数名}()と書くだけで実装できている。
class CToolbarKumaModule : public CAtlDllModuleT< CToolbarKumaModule >
{
public :
	//タイプライブラリのGUIDを指定
	DECLARE_LIBID(LIBID_ToolbarKumaLib)
	//appidの情報を格納する.rgs ファイルのリソースIDと、GUIDを設定
	//ToolbarKuma.rgsの内容を、DllRegisterServerで登録する為に必要?(未確認)
	DECLARE_REGISTRY_APPID_RESOURCEID(IDR_TOOLBARKUMA, "{C9E66859-18A6-4E32-9592-D899E4D4074F}")
};

//このソースの下の方で使う為
//それ以外の場所ではあまり使われることはない(と思われる)
CToolbarKumaModule _AtlModule;

//Manageは使わない。嫌いなので。
#ifdef _MANAGED
#pragma managed(push, off)
#endif

//DllMain
//CToolbarKumaModuleのDllMainを呼ぶだけ。
extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
	hInstance;
    return _AtlModule.DllMain(dwReason, lpReserved); 
}

//Manageは使わない。嫌いなので。(2度目)
#ifdef _MANAGED
#pragma managed(pop)
#endif




//DLLのアンロードが可能かを返す。
//このDLLの参照カウントが0ならTRUE、それ以外ならFALSEを返してるようです。
STDAPI DllCanUnloadNow(void)
{
    return _AtlModule.DllCanUnloadNow();
}


//要求された型のオブジェクトを作成するクラスファクトリを返します。
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
{
    return _AtlModule.DllGetClassObject(rclsid, riid, ppv);
}


//エントリをレジストリに追加します。
//rgsファイルとかに書いた内容を追加してくれます。
STDAPI DllRegisterServer(void)
{
    // オブジェクト、タイプライブラリおよびタイプライブラリ内のすべてのインターフェイスを登録します
    HRESULT hr = _AtlModule.DllRegisterServer();
	return hr;
}


//エントリをレジストリから削除します。
//rgsファイルとかに書いた内容を削除してくれます。
STDAPI DllUnregisterServer(void)
{
	HRESULT hr = _AtlModule.DllUnregisterServer();
	return hr;
}

戻る

コメントスペース