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

class CRBAR : public CCTRL
{
public:		//メンバー変数
	REBARINFO		m_rbi;		//リバー情報構造体
	REBARBANDINFOW	m_rbBand;	//リバーバンド情報構造体
	RECT			m_rbrc;		//リバー矩形サイズ

public:		//メンバー関数
	CRBAR();										//コンストラクター
	bool Init(HWND, HINSTANCE, int, WORD, DWORD);	//リバーの初期化・表示
	bool AddCtrl(CCTRL*, WCHAR*, WORD);				//コントロールの追加
	bool AutoSize();								//サイズ自動調整
};

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

	m_lpClassName = REBARCLASSNAMEW;	//リバークラスの名称
	m_dwExStyle = WS_EX_TOOLWINDOW;		//ツールウィンドウ拡張スタイル
	InitCommonControls();				//コモンコントロールの初期化
}

//リバー作成･表示
bool CRBAR::Init(HWND hWnd, HINSTANCE hInstance,
				int ID, WORD BMPid = 0,
						DWORD Style = WS_CHILD | WS_VISIBLE |
						WS_CLIPSIBLINGS | WS_CLIPCHILDREN |
						RBS_VARHEIGHT | CCS_NODIVIDER) {

	INITCOMMONCONTROLSEX icex;
	icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
	icex.dwICC = ICC_COOL_CLASSES | ICC_BAR_CLASSES;
	InitCommonControlsEx(&icex);
	m_hWnd = CreateWindowExW(m_dwExStyle,
							m_lpClassName,
							NULL,
							Style,
							0,0,0,0,
							m_hParent = hWnd,
							m_hMenu = (HMENU)ID,
							m_hInstance = hInstance,
							NULL);
	if(!m_hWnd)	return FALSE;
	//REBARINFO構造体の初期化
	m_rbi.cbSize = sizeof(REBARINFO);	//REBARINFO構造体サイズ
	m_rbi.fMask = 0;
	m_rbi.himl = (HIMAGELIST)NULL;
	if(!SendMessageW(m_hWnd, RB_SETBARINFO, 0, (LPARAM)&m_rbi))
		return FALSE;
   //バンドが共有化する構造体メンバーの初期化
	m_rbBand.cbSize = sizeof(REBARBANDINFO);	//REBARBANDINFO構造体サイズ
	m_rbBand.fMask =	RBBIM_COLORS | RBBIM_TEXT | RBBIM_BACKGROUND |
						RBBIM_STYLE | RBBIM_CHILD  | RBBIM_CHILDSIZE |
						RBBIM_SIZE;
	m_rbBand.fStyle =	RBBS_CHILDEDGE | RBBS_FIXEDBMP;
	m_rbBand.hbmBack=	LoadBitmap(m_hInstance, MAKEINTRESOURCE(BMPid));
	return m_hWnd;
}

//コントロールの追加
bool CRBAR::AddCtrl(CCTRL* lpCtrl, WCHAR* Title, WORD BMPid = 0) {

	RECT rc;
	// Set values unique to the band with the combo box.
	GetWindowRect(lpCtrl->m_hWnd, &rc);
	m_rbBand.cbSize = sizeof(REBARBANDINFO);
	m_rbBand.fMask =	RBBIM_TEXT |
						RBBIM_BACKGROUND |
						RBBIM_STYLE |
						RBBIM_CHILDSIZE |
						RBBIM_SIZE |
						RBBIM_CHILD |
						RBBIM_ID;
	m_rbBand.fStyle =	RBBS_CHILDEDGE |
						RBBS_FIXEDBMP |
						RBBS_GRIPPERALWAYS;
	m_rbBand.hbmBack= LoadBitmap(m_hInstance, MAKEINTRESOURCE(BMPid));
	m_rbBand.wID = GetWindowLong(lpCtrl->m_hWnd, GWL_ID);
	m_rbBand.lpText = Title;
	m_rbBand.cch = lstrlen(Title);
	m_rbBand.hwndChild = lpCtrl->m_hWnd;
	m_rbBand.cxMinChild = rc.right - rc.left;
	m_rbBand.cyMinChild = rc.bottom - rc.top;
	m_rbBand.cx = 200;
	//コントロールを擁したバンドを付加する
	return SendMessageW(m_hWnd, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&m_rbBand);
}

//サイズ自動調整
bool CRBAR::AutoSize() {

	GetClientRect(m_hWnd, &m_rbrc);
	return MoveWindow(m_hWnd, m_rbrc.left, m_rbrc.top,
			m_rbrc.right - m_rbrc.left, m_rbrc.bottom - m_rbrc.top,
			TRUE);
}

