#include "stdafx.h"
#include "../stdafx.h"
#include "../res/ResExtractData.h"
#include "Toolbar.h"

CToolBar::CToolBar()
{
	m_hWnd = NULL;
	m_hInst = NULL;
	m_hToolBar = NULL;
}

void CToolBar::Init(HWND hWnd)
{
	m_hWnd = hWnd;
	m_hInst = (HINSTANCE)GetWindowLongPtr(hWnd, GWLP_HINSTANCE);
	LoadIni();
}

// ツールバーを生成する関数
HWND CToolBar::Create(HWND hWnd, LPTBBUTTON tbButton, UINT BmpID, int icon_cx, int ctIcon)
{
	Init(hWnd);

	HBITMAP hBitmap = (HBITMAP)LoadImage(m_hInst, MAKEINTRESOURCE(BmpID), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS | LR_LOADTRANSPARENT);

	HWND hToolBar = CreateToolbarEx(
		m_hWnd,
		WS_CHILD | WS_VISIBLE | CCS_NORESIZE | TBSTYLE_TOOLTIPS,
		ID_TOOLBAR,
		ctIcon, // イメージの数
		NULL,
		(UINT_PTR)hBitmap,
		tbButton,
		ctIcon, // ボタンの数
		0, 0, // ボタンの幅, 高さ
		icon_cx, 16, // イメージの幅, 高さ
		sizeof(*tbButton));

	m_hToolBar = hToolBar;

	// フラットにする
	LONG ToolType = GetWindowLong(hToolBar, GWL_STYLE) | TBSTYLE_FLAT;
	SetWindowLong(hToolBar, GWL_STYLE, ToolType);
	InvalidateRect(hToolBar, NULL, TRUE);
	SendMessage(hToolBar, TB_SETEXTENDEDSTYLE, 0, (LPARAM)TBSTYLE_EX_DRAWDDARROWS);

	HWND hToolTip = CreateWindowEx(0, //拡張ウィンドウスタイル
		TOOLTIPS_CLASS, //クラスネーム
		NULL, //ウィンドウネーム
		TTS_ALWAYSTIP, // ウィンドウスタイル
		CW_USEDEFAULT, // X座標
		CW_USEDEFAULT, // Y座標
		CW_USEDEFAULT, // 幅
		CW_USEDEFAULT, // 高さ
		m_hWnd, // 親ウィンドウのハンドル
		NULL, // メニューハンドル
		m_hInst, // インスタンスハンドル
		NULL); // WM_CREATEデータ

	TOOLINFO ti;
	ti.cbSize = sizeof(TOOLINFO);
	ti.hwnd = hToolBar;
	ti.hinst = m_hInst;
	ti.uFlags = TTF_SUBCLASS;

	for (int i = 0; i < ctIcon; i++) {
		SendMessage(hToolBar, TB_GETITEMRECT, i, (LPARAM)&ti.rect);
		ti.uId = tbButton[i].idCommand;
		ti.lpszText = (LPTSTR)tbButton[i].idCommand;
		SendMessage(hToolTip, TTM_ADDTOOL, 0, (LPARAM)&ti);
	}
	SendMessage(hToolBar, TB_SETTOOLTIPS, (WPARAM)hToolTip, 0);

	return (hToolBar);
}