/////////////////////////////////////
// ECCSkelton
// ツールバークラスCTBAR定義ファイル
// Copyright (c) August, 2022
//        By Ysama
/////////////////////////////////////

class CTBAR : public CCTRL
{
public:		//メンバー変数
	LRESULT	m_id;			//カスタムビットマップの開始ID
public:		//メンバー関数
	CTBAR();
	bool Init(HWND, HINSTANCE, int, DWORD);
	LRESULT GetID() {return m_id;}
	bool AddBmp(bool);
	bool AddBmp(HINSTANCE, LPCTSTR, int);
	bool AddButtons(int, TBBUTTON*);
	bool InsertButton(int, TBBUTTON*);
	bool AutoSize();
};

//コンストラクター(クラス設定とコモンコントロール初期化）
CTBAR::CTBAR() {

	m_lpClassName = TOOLBARCLASSNAMEW;	//ツールバークラスの名称
	InitCommonControls();				//コモンコントロールの初期化
}

//ツールバー作成･表示
bool CTBAR::Init(HWND hWnd, HINSTANCE hInstance,
				int ID, DWORD Style = WS_CHILD | WS_VISIBLE  | TBSTYLE_TOOLTIPS) {

	m_hWnd = CreateWindowExW(m_dwExStyle,
					m_lpClassName,
					NULL,
					Style, 0, 0, 0, 0,
					hWnd, (HMENU)ID, hInstance, NULL);
	return m_hWnd;
}

//コモンコントロールスタンダードビットマップの設定（１）
bool CTBAR::AddBmp(bool flag = TRUE) {
	TBADDBITMAP tbab;
	//TB_BUTTONSTRUCT構造体のサイズ(bytes)
	SendMessageW(m_hWnd, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);
	//コモンコントロールモジュールのインスタンス
	tbab.hInst = HINST_COMMCTRL;
	if(flag) {
		//既定のビットマップ
		// STD_FILENEW, STD_FILEOPEN,  STD_FILESAVE, STD_PROPERTIES, STD_PRINTPRE, STD_PRINT
		// STD_UNDO, STD_REDOW, STD_DELETE, STD_CUT, STD_COPY, STD_PASTE, STD_FIND, STD_REPLACE
		// STD_HELP
		tbab.nID = IDB_STD_SMALL_COLOR;
		return SendMessageW(m_hWnd, TB_ADDBITMAP, 0, (LPARAM)&tbab);
	}
	else {
		//ビットマップの追加
		//VIEW_LARGEICONS, VIEW_SMALLICONS
		//VIEW_SORTTYPE, VIEW_SORTNAME, VIEW_SORTSIZE, VIEW_SORTDATE
		//VIEW_LIST, VIEW_DETAILS
		tbab.nID = IDB_VIEW_SMALL_COLOR;
		return SendMessageW(m_hWnd, TB_ADDBITMAP, 0, (LPARAM)&tbab);
	}
}

//カスタムビットマップの設定（２）
bool CTBAR::AddBmp(HINSTANCE hInst, LPCWSTR BMPName, int n) {
	TBADDBITMAP tbab;
	//TB_BUTTONSTRUCT構造体のサイズ(bytes)
	SendMessageW(m_hWnd, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);
	tbab.hInst = NULL;
	tbab.nID =(int) LoadImageW(hInst, BMPName, IMAGE_BITMAP,
								0, 0, LR_LOADMAP3DCOLORS | LR_LOADTRANSPARENT);
	return m_id = SendMessageW(m_hWnd, TB_ADDBITMAP, n, (LPARAM)&tbab);
}

//ツールバーボタンの追加
bool CTBAR::AddButtons(int n, TBBUTTON* tbb) {
	//wParam =ボタン数、lParam =TBBUTTON構造体のアドレス
	return SendMessageW(m_hWnd, TB_ADDBUTTONS, n, (LPARAM)tbb);
}

//ツールバーボタンの挿入
bool CTBAR::InsertButton(int Index, TBBUTTON* btn) {
	//wParam =ボタン数、lParam =TBBUTTON構造体のアドレス
	return SendMessageW(m_hWnd, TB_INSERTBUTTON, (WPARAM)Index, (LPARAM)btn); 
}

//サイズ自動調整
bool CTBAR::AutoSize() {
	return SendMessageW(m_hWnd, TB_AUTOSIZE, 0, 0);
}
