/*-----------------------------------------------------------------------------
[名称]	ToolBarManager.h
[概要]	ツールバー管理クラスのヘッダ
[備考]	なし
[履歴]	2003-02-26	NC		コメント付加(moralog)
-----------------------------------------------------------------------------*/
#if !defined(AFX_ToolBARMANAGER_H_INCLUDED_)
#define AFX_ToolBARMANAGER_H_INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


//-----------------------------------------------------------------------------
// インクルード
//-----------------------------------------------------------------------------
#include <afxtempl.h>


/*-----------------------------------------------------------------------------
[名称]	ツールバー管理クラス
[用途]	DLLから作成されたツールバーを管理する。
[備考]	singletonパターン。
		please! チップヘルプが出ないのはなぜだ？
-----------------------------------------------------------------------------*/
class CToolBarManager  
{
public:
	// インスタンスの取得・破棄
	virtual ~CToolBarManager();
	static CToolBarManager*	GetInstance();

// 操作
	// ツールバーの追加
	BOOL	EntryToolBar(
		int		idResource
	);

	// ツールバーの表示制御
	BOOL	ShowToolBar(
		BOOL	bShow
	);

	// コンボボックスの作成
	CComboBox*	SpawnComboBox(
		int		idxButton,
		int		iWidth,
		BOOL	bEdit
	);

// 変換
	// DLL→ツールバー番号
	int	InstanceToIndex(
		HINSTANCE	hDll
	);

	// コマンドID→DLL、ボタン番号
	HINSTANCE	GetDLLHandleFromButton(
		int		idCommand,
		int*	pidxButton
	);

	// コマンドID→DLL番号
	int			GetPlugInIndexFromMenu(
		int		idCommand
	);

	// DLL、ボタン番号→コマンドID
	int			GetCommandIDFromButtonIndex(
		HINSTANCE	hDll,
		int			idxButton
	);

private:
	// 隠蔽されたコンストラクタ
	CToolBarManager();

protected:
	CArray<CToolBar*, CToolBar*>		m_apToolBarz;		// ツールバー群 [-] (-)
	CArray<HINSTANCE, HINSTANCE>		m_aINSTANCEz;		// DLLインスタンス群 [-] (-)
	CPtrArray							m_apDllComboBoxz;	// DLLが作成したコンボボックス群 [-] (-)
};

#endif // !defined(AFX_ToolBARMANAGER_H_INCLUDED_)
