Index: ProjectEditor/TabCtrl.cpp
===================================================================
--- ProjectEditor/TabCtrl.cpp	(revision 3)
+++ ProjectEditor/TabCtrl.cpp	(revision 24)
@@ -73,5 +73,5 @@
 
 
-int CMainTab::search(char *lpszText){
+int CMainTab::SearchItemIndex( const char *lpszText ){
 	int i2,i3;
 	char temporary[MAX_PATH];
@@ -86,4 +86,10 @@
 	for(i2=0;i2<i3;i2++){
 		TabCtrl_GetItem(hTab,i2,&tcItem);
+
+		//アスタリスクを取り除いて評価する
+		if( tcItem.pszText[ lstrlen( tcItem.pszText ) -1 ] == '*' ){
+			tcItem.pszText[ lstrlen( tcItem.pszText ) -1 ] = 0;
+		}
+
 		if(lstrcmpi(lpszText,tcItem.pszText)==0) break;
 	}
@@ -91,4 +97,34 @@
 
 	return i2;
+}
+void CMainTab::SetItemText( int index, const char *ItemText ){
+	TC_ITEM tcItem;
+	tcItem.mask=TCIF_TEXT;
+	tcItem.pszText=(LPSTR)ItemText;
+	tcItem.cchTextMax=MAX_PATH;
+
+	TabCtrl_SetItem(hTab,index,&tcItem);
+}
+void CMainTab::GetItemText( int index, char *ItemText ){
+	TC_ITEM tcItem;
+	tcItem.mask = TCIF_TEXT;
+	tcItem.pszText = ItemText;
+	tcItem.cchTextMax = MAX_PATH;
+	TabCtrl_GetItem( hTab, index, &tcItem );
+}
+bool CMainTab::IsModified( int index ){
+	//アスタリスク表示かどうかを判断する
+
+	//アイテム文字列を取得
+	char ItemText[MAX_PATH];
+	GetItemText( index, ItemText );
+
+	if( ItemText[ lstrlen( ItemText ) -1 ] == '*' ){
+		//アスタリスクがあったとき
+		return true;
+	}
+
+	//その他
+	return false;
 }
 
@@ -126,5 +162,5 @@
 }
 
-void CMainTab::insert(char *lpszText,BOOL bResize,COLORREF color){
+void CMainTab::InsertItem( const char *lpszText, bool isResize, COLORREF color ){
 	int sw=0;
 	if(TabCtrl_GetItemCount(hTab)==0) sw=1;
@@ -134,55 +170,75 @@
 	TC_ITEM tcItem;
 	tcItem.mask=TCIF_TEXT|TCIF_PARAM;
-	tcItem.pszText=lpszText;
+	tcItem.pszText=(LPSTR)lpszText;
 	tcItem.lParam=color;
 	TabCtrl_InsertItem(hTab,0,&tcItem);
 	TabCtrl_SetCurSel(hTab,0);
 
-	if(bResize){
+	if(isResize){
 		if(sw) ResizeOwnerWnd();
 	}
 }
 
-void CMainTab::delete_item(char *lpszText,BOOL bResize){
+void CMainTab::DeleteItem( const char *lpszText, bool isResize ){
 	int i2;
-	i2=search(lpszText);
+	i2=SearchItemIndex(lpszText);
 	if(i2==-1) return;
 
 	TabCtrl_DeleteItem(hTab,i2);
 
-	if(bResize){
+	if(isResize){
 		if(TabCtrl_GetItemCount(hTab)==0) ResizeOwnerWnd();
 	}
 }
 
-void CMainTab::reset_item(char *lpszOldText,char *lpszNewText){
+void CMainTab::RenameItem( const char *lpszOldText, const char *lpszNewText ){
 	int i2;
-	i2=search(lpszOldText);
+	i2=SearchItemIndex(lpszOldText);
 	if(i2==-1) return;
 
-	TC_ITEM tcItem;
-	tcItem.mask=TCIF_TEXT;
-	tcItem.pszText=lpszNewText;
-	tcItem.cchTextMax=MAX_PATH;
-
-	TabCtrl_SetItem(hTab,i2,&tcItem);
-}
-
-COLORREF CMainTab::GetItemColor(char *lpszText){
-	int i2,i3;
+	SetItemText( i2, lpszNewText );
+}
+
+void CMainTab::NofityModifyDocument( const char *ItemText ){
+	//ドキュメントが変更されたとき、アスタリスクを付けて表示する
+
+	//インデックスを取得
+	int index = SearchItemIndex( ItemText );
+	if( index == -1 ) return;
+
+	//既にアスタリスク表示されていた場合は抜ける
+	if( IsModified( index ) ) return;
+
+	//アスタリスクを付加
 	char temporary[MAX_PATH];
-
-	i3=TabCtrl_GetItemCount(hTab);
-
-	TC_ITEM tcItem;
-	tcItem.mask=TCIF_TEXT|TCIF_PARAM;
-	tcItem.pszText=temporary;
-	tcItem.cchTextMax=MAX_PATH;
-
-	for(i2=0;i2<i3;i2++){
-		TabCtrl_GetItem(hTab,i2,&tcItem);
-		if(lstrcmpi(lpszText,tcItem.pszText)==0) return tcItem.lParam;
-	}
-	return -1;
+	lstrcpy( temporary, ItemText );
+	lstrcat( temporary, "*" );
+
+	//タブアイテムを更新
+	SetItemText( index, temporary );
+}
+void CMainTab::NofityUnModifyDocument( const char *ItemText ){
+	//ドキュメントが保存されたとき、アスタリスクを非表示にする
+
+	//インデックスを取得
+	int index = SearchItemIndex( ItemText );
+	if( index == -1 ) return;
+
+	//既にアスタリスクが非表示の場合は抜ける
+	if( ! IsModified( index ) ) return;
+
+	//タブアイテムを更新
+	SetItemText( index, ItemText );
+}
+
+COLORREF CMainTab::GetItemColor( char *ItemText ){
+	//インデックスを取得
+	int index = SearchItemIndex( ItemText );
+	if( index == -1 ) return -1;
+
+	TC_ITEM tcItem;
+	tcItem.mask = TCIF_PARAM;
+	TabCtrl_GetItem( hTab, index, &tcItem );
+	return tcItem.lParam;
 }
 
@@ -207,5 +263,5 @@
 void CMainTab::MdiActiveEvent(char *lpszText){
 	int i2;
-	i2=search(lpszText);
+	i2=SearchItemIndex(lpszText);
 	if(i2==-1) return;
 
