//////////////////////////////////////////
// TreeViewProc.h
// Copyright (c) 01/07/2003 by BCCSkelton
//////////////////////////////////////////
//☆ツリービューコントロールのID
#define	IDC_TREEVIEW	1000

//☆CTREEVIEWクラスオブジェクトの宣言
CTREEVIEW tv(32, 32, 8, ILC_COLOR4 | ILC_MASK, 0);	//ビットマップサイズと個数（2021年11月21日修正）
HTREEITEM hRoot;

/////////////////////////////////
//主ウィンドウCMyWndの関数の定義
//ウィンドウメッセージ関数
/////////////////////////////////
bool CMyWnd::OnCreate(WPARAM wParam, LPARAM lParam) {

	//コモンコントロールの初期化
	InitCommonControls();

	//ツールバー登録−Init(hWnd, hIinstance, ID, (以下省略可）Style)
	TBar.Init(m_hWnd, m_hInstance, TOOLBAR);
	//ツールバーボタン用ビットマップ追加
	TBar.AddBmp(TRUE);
	//ツールバーボタン追加
	TBBUTTON tbb[7];
	ZeroMemory(tbb, sizeof(tbb));
	tbb[0].iBitmap = STD_CUT;
	tbb[0].fsState = TBSTATE_ENABLED;
	tbb[0].fsStyle = TBSTYLE_BUTTON;
	tbb[0].idCommand = IDM_EXIT;
	tbb[1].iBitmap = STD_FILENEW;
	tbb[1].fsState = TBSTATE_ENABLED;
	tbb[1].fsStyle = TBSTYLE_BUTTON;
	tbb[1].idCommand = IDM_ADD;
	tbb[2].iBitmap = STD_DELETE;
	tbb[2].fsState = TBSTATE_ENABLED;
	tbb[2].fsStyle = TBSTYLE_BUTTON;
	tbb[2].idCommand = IDM_DEL;
	tbb[3].iBitmap = STD_FIND;
	tbb[3].fsState = TBSTATE_ENABLED;
	tbb[3].fsStyle = TBSTYLE_BUTTON;
	tbb[3].idCommand = IDM_SEARCH;
	tbb[4].iBitmap = STD_UNDO;
	tbb[4].fsState = TBSTATE_ENABLED;
	tbb[4].fsStyle = TBSTYLE_BUTTON;
	tbb[4].idCommand = IDM_SORT;
	tbb[5].iBitmap = STD_REDOW;
	tbb[5].fsState = TBSTATE_ENABLED;
	tbb[5].fsStyle = TBSTYLE_BUTTON;
	tbb[5].idCommand = IDM_NORM;
	tbb[6].iBitmap = STD_HELP;
	tbb[6].fsState = TBSTATE_ENABLED;
	tbb[6].fsStyle = TBSTYLE_BUTTON;
	tbb[6].idCommand = IDM_VERSION;
	TBar.AddButtons(7, tbb);

	//ステータスバー登録−Init(hWnd, hIinstance, ID, (以下省略可）Style)
	SBar.Init(m_hWnd, m_hInstance, STATUSBAR);
	//ステータスバー区画設定
	int sec[2] = {200, 400};
	SBar.SetSection(2, sec);
	//ステータスバー文字列設定
	SBar.SetText(0, "CTREEVIEW");
	SBar.SetText(1, "Test Program");

	//☆ツリービューイメージリストへのイメージの追加
	tv.AddBitmap(MAKEINTRESOURCE(IDI_FOLD), m_hInstance);
	tv.AddBitmap(MAKEINTRESOURCE(IDI_H), m_hInstance);
	tv.AddBitmap(MAKEINTRESOURCE(IDI_CPP), m_hInstance);
	tv.AddBitmap(MAKEINTRESOURCE(IDI_RC), m_hInstance);
	tv.AddBitmap(MAKEINTRESOURCE(IDI_ASM), m_hInstance);
	tv.AddBitmap(MAKEINTRESOURCE(IDI_OBJ), m_hInstance);
	tv.AddBitmap(MAKEINTRESOURCE(IDI_LIB), m_hInstance);
	tv.AddBitmap(MAKEINTRESOURCE(IDI_DOC), m_hInstance);

	//☆ツリービューの作成
	tv.Create(m_hWnd, m_hInstance, IDC_TREEVIEW);
	tv.SetFont(8, "ＭＳ 明朝");
/*
	//☆ツリービューアイテムの追加（ビットマップなしの場合）
	hRoot = tv.InsertItem("Docファイル");
	tv.InsertItem("hファイル", TVI_LAST, hRoot);
	tv.InsertItem("CPPファイル", TVI_LAST, hRoot);
	tv.InsertItem("RCファイル", TVI_LAST, hRoot);
	tv.InsertItem("ASMファイル", TVI_LAST, hRoot);
	tv.InsertItem("OBJファイル", TVI_LAST, hRoot);
	tv.InsertItem("LIBファイル", TVI_LAST, hRoot);
*/
	//☆ツリービューアイテムの追加（ビットマップ付）
	hRoot = tv.InsertItem("Docファイル", TVI_LAST, TVI_ROOT, 0, 7);
	tv.InsertItem("hファイル", TVI_LAST, hRoot, 0, 1);
	tv.InsertItem("CPPファイル", TVI_LAST, hRoot, 0, 2);
	tv.InsertItem("RCファイル", TVI_LAST, hRoot, 0, 3);
	tv.InsertItem("ASMファイル", TVI_LAST, hRoot, 0, 4);
	tv.InsertItem("OBJファイル", TVI_LAST, hRoot, 0, 5);
	tv.InsertItem("LIBファイル", TVI_LAST, hRoot, 0, 6);

	return TRUE;
}

bool CMyWnd::OnNotify(WPARAM wParam, LPARAM lParam) {

	return TRUE;
}

bool CMyWnd::OnSize(WPARAM wParam, LPARAM lParam) {

	TBar.AutoSize();
	SBar.AutoSize();
	//☆ツリービューをクライアント領域にあわせる
	RECT rec;
	int tbhigh, w = LOWORD(lParam), h = HIWORD(lParam);
	GetWindowRect(TBar.m_hWnd, &rec);
	tbhigh = rec.bottom - rec.top;
	GetWindowRect(SBar.m_hWnd, &rec);
	h -= (tbhigh + rec.bottom - rec.top);
	tv.Move(0, tbhigh, w, h);
	return TRUE;
}

bool CMyWnd::OnClose(WPARAM wParam, LPARAM lParam) {

	if(MessageBox(m_hWnd, "終了しますか", "終了確認",
					MB_YESNO | MB_ICONINFORMATION) == IDYES)
		//処理をするとDestroyWindow、PostQuitMessageが呼ばれる
		return TRUE;
	else
		//そうでなければウィンドウではDefWindowProc関数をreturn、ダイアログではreturn FALSEとなる。
		return FALSE;
}

/////////////////////////////////
//主ウィンドウCMyWndの関数の定義
//メニュー項目、コントロール関数
/////////////////////////////////
bool CMyWnd::OnExit() {

	SendMsg(WM_CLOSE, 0, 0);
	return TRUE;
}

bool CMyWnd::OnAdd() {

	//☆アイテムの追加
	tv.InsertItem("Tempファイル", TVI_LAST, hRoot, 7, 7);
	return TRUE;
}

bool CMyWnd::OnDel() {

	//☆アイテムの削除
	tv.DeleteItem(tv.GetSelection());
	return TRUE;
}

bool CMyWnd::OnSearch() {

	//☆アイテムを表示文字列で検索
	HTREEITEM hFound = tv.FindItem(hRoot, "RCファイル");
	tv.SelectItem(hFound);
	return TRUE;
}

bool CMyWnd::OnSort() {

	//☆アイテムをソート
	tv.SortChildren(hRoot);
	return TRUE;
}

bool CMyWnd::OnNorm() {

	//☆アイテムの文字列取得と変更
	char Buff[MAX_PATH];
	tv.GetItem(hRoot, Buff, MAX_PATH);
	MessageBox(m_hWnd, Buff, "hRootのText", MB_OK);
	tv.m_tvItem.iImage = 7;
	tv.m_tvItem.pszText = "BCCコンパイルファイルリスト";
	tv.SetItem(hRoot);
	return TRUE;
}

bool CMyWnd::OnVersion() {

	versiondlg.DoModal(m_hWnd, "IDD_VERSION", versiondlgProc);
	return TRUE;
}

///////////////////////////////
//ユーザーダイアログの関数定義
//コントロール関数
///////////////////////////////
bool VERSIONDLG::OnIdok() {

	EndModal(TRUE);
	return TRUE;
}

