Index: /trunk/ab5.0/abdev/abdev/Common.h
===================================================================
--- /trunk/ab5.0/abdev/abdev/Common.h	(revision 616)
+++ /trunk/ab5.0/abdev/abdev/Common.h	(revision 617)
@@ -257,6 +257,6 @@
 
 struct RAD_UNDOSTATE_NAME{
-	char *name;
-	char *HandleName;
+	std::string name;
+	std::string HandleName;
 	char *CallBackName;
 };
Index: /trunk/ab5.0/abdev/abdev/MessageCallOperation.cpp
===================================================================
--- /trunk/ab5.0/abdev/abdev/MessageCallOperation.cpp	(revision 616)
+++ /trunk/ab5.0/abdev/abdev/MessageCallOperation.cpp	(revision 617)
@@ -38,5 +38,5 @@
 	WindowInfo *pWindowInfo = ProjectInfo.windowInfos[WndInfoNum];
 
-	NameLen=lstrlen(pWindowInfo->name);
+	NameLen=pWindowInfo->GetName().size();
 	CallBackNameLen=lstrlen(pWindowInfo->CallBackName);
 
@@ -77,5 +77,5 @@
 				strncpy(temporary,buffer+i2,NameLen);
 				temporary[NameLen]=0;
-				if(lstrcmp(temporary,pWindowInfo->name)==0&&buffer[i2+NameLen]=='_'){
+				if( pWindowInfo->GetName() == temporary && buffer[i2+NameLen] == '_' ){
 					for(i2+=NameLen+1,i3=0;;i2++,i3++){
 						if(!IsVariableChar(buffer[i2])){
@@ -231,5 +231,5 @@
 					ListView_GetItemText(hList,i,0,temporary,MAX_PATH);
 					sprintf(EventName,"%s_%s",
-						pWindowInfo->name,
+						pWindowInfo->GetName().c_str(),
 						temporary);
 					break;
@@ -270,5 +270,5 @@
 					ListView_GetItemText(hList,i,0,temporary,MAX_PATH);
 					sprintf(EventName,"%s_%s_MenuClick",
-						pWindowInfo->name,
+						pWindowInfo->GetName().c_str(),
 						temporary);
 					break;
@@ -284,5 +284,5 @@
 					ListView_GetItemText(hList,i,0,temporary,MAX_PATH);
 					sprintf(EventName,"%s_%s",
-						pWindowInfo->name,
+						pWindowInfo->GetName().c_str(),
 						temporary);
 					break;
@@ -299,5 +299,5 @@
 				ListView_GetItemText(hList,i,0,temporary,MAX_PATH);
 				sprintf(EventName,"%s_%s_%s",
-					pWindowInfo->name,
+					pWindowInfo->GetName().c_str(),
 					pWindowInfo->childWindowInfos[MdiInfo[WndNum].MdiRadInfo->SelectingItem[0]]->IdName,
 					temporary);
Index: /trunk/ab5.0/abdev/abdev/ProjectControl.cpp
===================================================================
--- /trunk/ab5.0/abdev/abdev/ProjectControl.cpp	(revision 616)
+++ /trunk/ab5.0/abdev/abdev/ProjectControl.cpp	(revision 617)
@@ -250,5 +250,5 @@
 
 							//"%s ウィンドウをプロジェクトから削除します。よろしいですか？"
-							sprintf(str,STRING_PJ_CHECK_DELETEWINDOW,ProjectInfo.windowInfos[i]->name);
+							sprintf(str,STRING_PJ_CHECK_DELETEWINDOW,ProjectInfo.windowInfos[i]->GetName().c_str());
 							if(IDCANCEL==MessageBox(hOwner,str,APPLICATION_NAME,MB_OKCANCEL|MB_ICONEXCLAMATION)) break;
 
@@ -1055,6 +1055,6 @@
 		WindowInfos windowInfos;
 		windowInfos.push_back( new WindowInfo() );
-		windowInfos.back()->name="MainWnd";
-		windowInfos.back()->HandleName="hMainWnd";
+		windowInfos.back()->SetName( "MainWnd" );
+		windowInfos.back()->SetHandleName( "hMainWnd" );
 		windowInfos.back()->pos.x=CW_USEDEFAULT;
 		windowInfos.back()->pos.y=CW_USEDEFAULT;
@@ -1080,4 +1080,6 @@
 		ProjectInfo.NumberOfMenu=0;
 		SaveWindowFile( temporary, windowInfos );
+
+		windowInfos.Clear();
 	}
 
@@ -1207,5 +1209,7 @@
 		tv.item.iImage=2;
 		tv.item.iSelectedImage=2;
-		tv.item.pszText = pWindowInfo->name;
+		char temporary[1024];
+		lstrcpy( temporary, pWindowInfo->GetName().c_str() );
+		tv.item.pszText = temporary;
 		pWindowInfo->hTreeItem=TreeView_InsertItem(hMaterialTreeView,&tv);
 	}
@@ -1581,5 +1585,5 @@
 						else if(lstrcmpi(temporary,"rad")==0){
 							for(i3=0;i3<static_cast<int>(ProjectInfo.windowInfos.size());i3++){
-								if(lstrcmpi(ProjectInfo.windowInfos[i3]->name,temp2)==0){
+								if(lstrcmpi(ProjectInfo.windowInfos[i3]->GetName().c_str(),temp2)==0){
 									NewRadWindow( *ProjectInfo.windowInfos[i3] );
 									break;
@@ -1703,5 +1707,5 @@
 						else if(lstrcmpi(temporary,"rad")==0){
 							for(i3=0;i3<static_cast<int>(ProjectInfo.windowInfos.size());i3++){
-								if(lstrcmpi(ProjectInfo.windowInfos[i3]->name,temp2)==0){
+								if(lstrcmpi(ProjectInfo.windowInfos[i3]->GetName().c_str(),temp2)==0){
 									NewRadWindow( *ProjectInfo.windowInfos[i3] );
 									break;
@@ -1896,5 +1900,5 @@
 			BOOST_FOREACH( const WindowInfo *pWindowInfo, ProjectInfo.windowInfos )
 			{
-				if(lstrcmp(MdiInfo[WndNum].path, pWindowInfo->name)==0){
+				if( pWindowInfo->GetName() == MdiInfo[WndNum].path ){
 					SendMessage(hCloseChild,WM_CLOSE,0,0);
 					break;
@@ -1931,6 +1935,4 @@
 	BOOST_FOREACH( WindowInfo *pWindowInfo, ProjectInfo.windowInfos )
 	{
-		HeapDefaultFree(pWindowInfo->name);
-		HeapDefaultFree(pWindowInfo->HandleName);
 		HeapDefaultFree(pWindowInfo->caption);
 		HeapDefaultFree(pWindowInfo->ClassName);
@@ -2043,5 +2045,5 @@
 			BOOST_FOREACH( WindowInfo *pWindowInfo, ProjectInfo.windowInfos )
 			{
-				if(lstrcmpi(MdiInfo[WndNum].path,pWindowInfo->name)==0){
+				if(lstrcmpi(MdiInfo[WndNum].path,pWindowInfo->GetName().c_str())==0){
 					sprintf(buffer+i2,"rad,%s\r\n",MdiInfo[WndNum].path);
 					i2+=lstrlen(buffer+i2);
Index: /trunk/ab5.0/abdev/abdev/RadProc.cpp
===================================================================
--- /trunk/ab5.0/abdev/abdev/RadProc.cpp	(revision 616)
+++ /trunk/ab5.0/abdev/abdev/RadProc.cpp	(revision 617)
@@ -19,5 +19,5 @@
 		i=GetWndNum(hChild);
 		if(MdiInfo[i].DocType==WNDTYPE_RAD){
-			if(lstrcmpi(MdiInfo[i].path,windowInfo.name)==0) break;
+			if(lstrcmpi(MdiInfo[i].path,windowInfo.GetName().c_str())==0) break;
 		}
 		hChild=GetNextWindow(hChild,GW_HWNDNEXT);
@@ -28,5 +28,5 @@
 	}
 
-	mdic.szTitle=windowInfo.name;
+	mdic.szTitle=windowInfo.GetName().c_str();
 	mdic.szClass="MDIClientWindow_Rad";
 	mdic.hOwner=hInst;
@@ -85,8 +85,8 @@
 			MdiInfo[i].hwnd=hChild;
 			MdiInfo[i].DocType=WNDTYPE_RAD;
-			MdiInfo[i].title=(char *)GlobalAlloc(GMEM_FIXED,lstrlen(windowInfo.name)+1);
-			lstrcpy(MdiInfo[i].title,windowInfo.name);
-			MdiInfo[i].path=(char *)GlobalAlloc(GMEM_FIXED,lstrlen(windowInfo.name)+1);
-			lstrcpy(MdiInfo[i].path,windowInfo.name);
+			MdiInfo[i].title=(char *)GlobalAlloc(GMEM_FIXED,windowInfo.GetName().size()+1);
+			lstrcpy(MdiInfo[i].title,windowInfo.GetName().c_str());
+			MdiInfo[i].path=(char *)GlobalAlloc(GMEM_FIXED,windowInfo.GetName().size()+1);
+			lstrcpy(MdiInfo[i].path,windowInfo.GetName().c_str());
 
 
@@ -141,9 +141,9 @@
 	ResizeToRadToolWindows(i,rect.right,rect.bottom);
 
-	i=SendMessage(hDocCombo,CB_ADDSTRING,0,(long)windowInfo.name);	//Docコンボボックスに追加
+	i=SendMessage(hDocCombo,CB_ADDSTRING,0,(long)windowInfo.GetName().c_str());	//Docコンボボックスに追加
 	SendMessage(hDocCombo,CB_SETCURSEL,i,0);
 
 	//タブに追加
-	pobj_MainTab->InsertItem( windowInfo.name, true );
+	pobj_MainTab->InsertItem( windowInfo.GetName().c_str(), true );
 
 	//メニュー状態を設定
@@ -268,5 +268,4 @@
 	extern HANDLE hHeap;
 	extern MDIINFO MdiInfo[MAX_WNDNUM];
-	int i;
 
 	WindowInfo *pWindowInfo = ProjectInfo.windowInfos[WndInfoNum];
@@ -1449,13 +1448,29 @@
 							pWindowInfo->childWindowInfos[MdiInfo[i].MdiRadInfo->SelectingItem[0]]->Control==CT_IMAGEBOX||
 							pWindowInfo->childWindowInfos[MdiInfo[i].MdiRadInfo->SelectingItem[0]]->Control==CT_RADIOBUTTON||
-							pWindowInfo->childWindowInfos[MdiInfo[i].MdiRadInfo->SelectingItem[0]]->Control==CT_STATIC){
-							sprintf(temporary,"%s_%s_Click",pWindowInfo->name,pWindowInfo->childWindowInfos[MdiInfo[i].MdiRadInfo->SelectingItem[0]]->IdName);
+							pWindowInfo->childWindowInfos[MdiInfo[i].MdiRadInfo->SelectingItem[0]]->Control==CT_STATIC)
+						{
+							sprintf(temporary,"%s_%s_Click",
+								pWindowInfo->GetName().c_str(),
+								pWindowInfo->childWindowInfos[MdiInfo[i].MdiRadInfo->SelectingItem[0]]->IdName
+							);
 						}
 						else if(pWindowInfo->childWindowInfos[MdiInfo[i].MdiRadInfo->SelectingItem[0]]->Control==CT_COMBOBOX)
-							sprintf(temporary,"%s_%s_EditChange",pWindowInfo->name,pWindowInfo->childWindowInfos[MdiInfo[i].MdiRadInfo->SelectingItem[0]]->IdName);
+						{
+							sprintf(temporary,"%s_%s_EditChange",
+								pWindowInfo->GetName().c_str(),
+								pWindowInfo->childWindowInfos[MdiInfo[i].MdiRadInfo->SelectingItem[0]]->IdName);
+						}
 						else if(pWindowInfo->childWindowInfos[MdiInfo[i].MdiRadInfo->SelectingItem[0]]->Control==CT_EDIT)
-							sprintf(temporary,"%s_%s_Change",pWindowInfo->name,pWindowInfo->childWindowInfos[MdiInfo[i].MdiRadInfo->SelectingItem[0]]->IdName);
+						{
+							sprintf(temporary,"%s_%s_Change",
+								pWindowInfo->GetName().c_str(),
+								pWindowInfo->childWindowInfos[MdiInfo[i].MdiRadInfo->SelectingItem[0]]->IdName);
+						}
 						else if(pWindowInfo->childWindowInfos[MdiInfo[i].MdiRadInfo->SelectingItem[0]]->Control==CT_LISTBOX)
-							sprintf(temporary,"%s_%s_SelChange",pWindowInfo->name,pWindowInfo->childWindowInfos[MdiInfo[i].MdiRadInfo->SelectingItem[0]]->IdName);
+						{
+							sprintf(temporary,"%s_%s_SelChange",
+								pWindowInfo->GetName().c_str(),
+								pWindowInfo->childWindowInfos[MdiInfo[i].MdiRadInfo->SelectingItem[0]]->IdName);
+						}
 						else temporary[0]=0;
 						if(temporary[0]) SelectProcedureOfMessageCall(i2,temporary,temp2);
Index: /trunk/ab5.0/abdev/abdev/RadSupport.cpp
===================================================================
--- /trunk/ab5.0/abdev/abdev/RadSupport.cpp	(revision 616)
+++ /trunk/ab5.0/abdev/abdev/RadSupport.cpp	(revision 617)
@@ -66,5 +66,5 @@
 	hWnd=CreateWindowEx(pWindowInfo->ExStyle,
 		"TestWindow",
-		pWindowInfo->name,
+		pWindowInfo->GetName().c_str(),
 		pWindowInfo->style|WS_VISIBLE,
 		CW_USEDEFAULT,CW_USEDEFAULT,
Index: /trunk/ab5.0/abdev/abdev/RadToolsAndPropertyProc.cpp
===================================================================
--- /trunk/ab5.0/abdev/abdev/RadToolsAndPropertyProc.cpp	(revision 616)
+++ /trunk/ab5.0/abdev/abdev/RadToolsAndPropertyProc.cpp	(revision 617)
@@ -361,13 +361,13 @@
 				i=GetWndNum(GetWindow(hClient,GW_CHILD));
 				WindowInfo *pWindowInfo = GetWndInfo(MdiInfo[i].path);
-				sprintf(temporary,"h%s",pWindowInfo->name);
-				sprintf(temp2,"%sProc",pWindowInfo->name);
-				if(lstrcmp(temporary,pWindowInfo->HandleName)==0&&
+				sprintf(temporary,"h%s",pWindowInfo->GetName().c_str());
+				sprintf(temp2,"%sProc",pWindowInfo->GetName().c_str());
+				if( pWindowInfo->GetHandleName() == temporary &&
 					lstrcmp(temp2,pWindowInfo->CallBackName)==0){
 					SendDlgItemMessage(hwnd,IDC_AUTOSET,BM_SETCHECK,BST_CHECKED,0);
 					SendMessage(hwnd,WM_COMMAND,IDC_AUTOSET,0);
 				}
-				SetDlgItemText(hwnd,IDC_WINDOWNAME,pWindowInfo->name);
-				SetDlgItemText(hwnd,IDC_WINDOWHANDLE,pWindowInfo->HandleName);
+				SetDlgItemText(hwnd,IDC_WINDOWNAME,pWindowInfo->GetName().c_str());
+				SetDlgItemText(hwnd,IDC_WINDOWHANDLE,pWindowInfo->GetHandleName().c_str());
 				SetDlgItemText(hwnd,IDC_WINDOWPROC,pWindowInfo->CallBackName);
 				break;
@@ -397,11 +397,12 @@
 
 						RAD_UNDOSTATE_NAME names,NoticeNames;
+
 						i3=GetWindowTextLength(GetDlgItem(hwnd,IDC_WINDOWNAME))+1;
-						names.name=(char *)HeapAlloc(hHeap,0,i3);
-						GetDlgItemText(hwnd,IDC_WINDOWNAME,names.name,i3);
+						GetDlgItemText(hwnd,IDC_WINDOWNAME,temporary,i3);
+						names.name = temporary;
 
 						i3=GetWindowTextLength(GetDlgItem(hwnd,IDC_WINDOWHANDLE))+1;
-						names.HandleName=(char *)HeapAlloc(hHeap,0,i3);
-						GetDlgItemText(hwnd,IDC_WINDOWHANDLE,names.HandleName,i3);
+						GetDlgItemText(hwnd,IDC_WINDOWHANDLE,temporary,i3);
+						names.HandleName = temporary;
 
 						i3=GetWindowTextLength(GetDlgItem(hwnd,IDC_WINDOWPROC))+1;
@@ -409,9 +410,7 @@
 						GetDlgItemText(hwnd,IDC_WINDOWPROC,names.CallBackName,i3);
 
-						if(lstrcmp(names.name,pWindowInfo->name)==0&&
-							lstrcmp(names.HandleName,pWindowInfo->HandleName)==0&&
+						if( names.name == pWindowInfo->GetName() &&
+							pWindowInfo->GetHandleName() == names.HandleName &&
 							lstrcmp(names.CallBackName,pWindowInfo->CallBackName)==0){
-							HeapDefaultFree(names.name);
-							HeapDefaultFree(names.HandleName);
 							HeapDefaultFree(names.CallBackName);
 							SendMessage(hwnd,WM_COMMAND,IDCANCEL,0);
@@ -423,17 +422,15 @@
 
 						//変更情報を更新
-						NoticeNames.name=pWindowInfo->name;
-						NoticeNames.HandleName=pWindowInfo->HandleName;
+						NoticeNames.name=pWindowInfo->GetName();
+						NoticeNames.HandleName=pWindowInfo->GetHandleName();
 						NoticeNames.CallBackName=pWindowInfo->CallBackName;
 						Rad_NoticeChanging(i,RAD_UNDO_NAME,SELECT_WINDOW,(DWORD)&NoticeNames);
 
-						HeapDefaultFree(pWindowInfo->name);
-						pWindowInfo->name=names.name;
+						pWindowInfo->SetName( names.name );
 						GlobalFree(MdiInfo[i].path);
-						MdiInfo[i].path=(char *)GlobalAlloc(GMEM_FIXED,lstrlen(names.name));
-						lstrcpy(MdiInfo[i].path,names.name);
-
-						HeapDefaultFree(pWindowInfo->HandleName);
-						pWindowInfo->HandleName=names.HandleName;
+						MdiInfo[i].path=(char *)GlobalAlloc(GMEM_FIXED,names.name.size()+1);
+						lstrcpy(MdiInfo[i].path,names.name.c_str());
+
+						pWindowInfo->SetHandleName( names.HandleName );
 
 						HeapDefaultFree(pWindowInfo->CallBackName);
@@ -558,6 +555,6 @@
 				WindowInfo *pWindowInfo = GetWndInfo(MdiInfo[i].path);
 
-				SetDlgItemText(hwnd,IDC_WINDOWNAME,pWindowInfo->name);
-				SetDlgItemText(hwnd,IDC_HANDLE,pWindowInfo->HandleName);
+				SetDlgItemText(hwnd,IDC_WINDOWNAME,pWindowInfo->GetName().c_str());
+				SetDlgItemText(hwnd,IDC_HANDLE,pWindowInfo->GetHandleName().c_str());
 				SetDlgItemText(hwnd,IDC_CAPTION,pWindowInfo->caption);
 
@@ -705,6 +702,6 @@
 						i=GetWndNum(GetParent(GetParent(hwnd)));
 						WindowInfo *pWindowInfo = GetWndInfo(MdiInfo[i].path);
-						SetDlgItemText(hwnd,IDC_WINDOWNAME,pWindowInfo->name);
-						SetDlgItemText(hwnd,IDC_HANDLE,pWindowInfo->HandleName);
+						SetDlgItemText(hwnd,IDC_WINDOWNAME,pWindowInfo->GetName().c_str());
+						SetDlgItemText(hwnd,IDC_HANDLE,pWindowInfo->GetHandleName().c_str());
 						return 1;
 					}
Index: /trunk/ab5.0/abdev/abdev/Rad_UndoRedo.cpp
===================================================================
--- /trunk/ab5.0/abdev/abdev/Rad_UndoRedo.cpp	(revision 616)
+++ /trunk/ab5.0/abdev/abdev/Rad_UndoRedo.cpp	(revision 617)
@@ -41,17 +41,17 @@
 		case RAD_UNDO_NAME:
 			if(pUndoState->SelectItemNum[pUndoState->NowPos]==SELECT_WINDOW){
-				RAD_UNDOSTATE_NAME *names;
-				names=(RAD_UNDOSTATE_NAME *)pUndoState->lpdwData[pUndoState->NowPos];
-
-				temporary=pWindowInfo->name;
-				pWindowInfo->name=names->name;
-				names->name=temporary;
+				RAD_UNDOSTATE_NAME *names = (RAD_UNDOSTATE_NAME *)pUndoState->lpdwData[pUndoState->NowPos];
+
+				std::string tempStr = pWindowInfo->GetName();
+				pWindowInfo->SetName( names->name );
+				names->name = tempStr;
+
 				GlobalFree(MdiInfo[WndNum].path);
-				MdiInfo[WndNum].path=(char *)GlobalAlloc(GMEM_FIXED,lstrlen(pWindowInfo->name)+1);
-				lstrcpy(MdiInfo[WndNum].path,pWindowInfo->name);
-
-				temporary=pWindowInfo->HandleName;
-				pWindowInfo->HandleName=names->HandleName;
-				names->HandleName=temporary;
+				MdiInfo[WndNum].path=(char *)GlobalAlloc(GMEM_FIXED,pWindowInfo->GetName().size()+1);
+				lstrcpy(MdiInfo[WndNum].path,pWindowInfo->GetName().c_str());
+
+				tempStr = pWindowInfo->GetHandleName();
+				pWindowInfo->SetHandleName( names->HandleName );
+				names->HandleName = tempStr;
 
 				temporary=pWindowInfo->CallBackName;
@@ -225,17 +225,17 @@
 		case RAD_UNDO_NAME:
 			if(pUndoState->SelectItemNum[pUndoState->NowPos]==SELECT_WINDOW){
-				RAD_UNDOSTATE_NAME *names;
-				names=(RAD_UNDOSTATE_NAME *)pUndoState->lpdwData[pUndoState->NowPos];
-
-				temporary=pWindowInfo->name;
-				pWindowInfo->name=names->name;
-				names->name=temporary;
+				RAD_UNDOSTATE_NAME *names = (RAD_UNDOSTATE_NAME *)pUndoState->lpdwData[pUndoState->NowPos];
+
+				std::string tempStr = pWindowInfo->GetName();
+				pWindowInfo->SetName( names->name );
+				names->name = tempStr;
+
 				GlobalFree(MdiInfo[WndNum].path);
-				MdiInfo[WndNum].path=(char *)GlobalAlloc(GMEM_FIXED,lstrlen(pWindowInfo->name)+1);
-				lstrcpy(MdiInfo[WndNum].path,pWindowInfo->name);
-
-				temporary=pWindowInfo->HandleName;
-				pWindowInfo->HandleName=names->HandleName;
-				names->HandleName=temporary;
+				MdiInfo[WndNum].path=(char *)GlobalAlloc(GMEM_FIXED,pWindowInfo->GetName().size()+1);
+				lstrcpy(MdiInfo[WndNum].path,pWindowInfo->GetName().c_str());
+
+				tempStr = pWindowInfo->GetHandleName();
+				pWindowInfo->SetHandleName( names->HandleName );
+				names->HandleName = tempStr;
 
 				temporary=pWindowInfo->CallBackName;
@@ -399,10 +399,7 @@
 		case RAD_UNDO_NAME:
 			if(pUndoState->SelectItemNum[pos]==SELECT_WINDOW){
-				RAD_UNDOSTATE_NAME *names;
-				names=(RAD_UNDOSTATE_NAME *)pUndoState->lpdwData[pos];
-				HeapDefaultFree(names->name);
-				HeapDefaultFree(names->HandleName);
+				RAD_UNDOSTATE_NAME *names = (RAD_UNDOSTATE_NAME *)pUndoState->lpdwData[pos];
 				HeapDefaultFree(names->CallBackName);
-				HeapDefaultFree(names);
+				delete names;
 			}
 			else HeapDefaultFree((void *)pUndoState->lpdwData[pos]);
@@ -477,11 +474,8 @@
 		case RAD_UNDO_NAME:
 			if(SelectItemNum==SELECT_WINDOW){
-				RAD_UNDOSTATE_NAME *names,*SaveNames;
-				names=(RAD_UNDOSTATE_NAME *)dwData;
-				SaveNames=(RAD_UNDOSTATE_NAME *)HeapAlloc(hHeap,0,sizeof(RAD_UNDOSTATE_NAME));
-				SaveNames->name=(char *)HeapAlloc(hHeap,0,lstrlen(names->name)+1);
-				lstrcpy(SaveNames->name,names->name);
-				SaveNames->HandleName=(char *)HeapAlloc(hHeap,0,lstrlen(names->HandleName)+1);
-				lstrcpy(SaveNames->HandleName,names->HandleName);
+				RAD_UNDOSTATE_NAME *names = (RAD_UNDOSTATE_NAME *)dwData;
+				RAD_UNDOSTATE_NAME *SaveNames = new RAD_UNDOSTATE_NAME();
+				SaveNames->name = names->name;
+				SaveNames->HandleName = names->HandleName;
 				SaveNames->CallBackName=(char *)HeapAlloc(hHeap,0,lstrlen(names->CallBackName)+1);
 				lstrcpy(SaveNames->CallBackName,names->CallBackName);
Index: /trunk/ab5.0/abdev/abdev/WindowControl.cpp
===================================================================
--- /trunk/ab5.0/abdev/abdev/WindowControl.cpp	(revision 616)
+++ /trunk/ab5.0/abdev/abdev/WindowControl.cpp	(revision 617)
@@ -15,5 +15,5 @@
 int GetWndInfoNum(char *name){
 	for( int i=0;i<static_cast<int>(ProjectInfo.windowInfos.size());i++){
-		if(lstrcmpi(name,ProjectInfo.windowInfos[i]->name)==0) return i;
+		if(lstrcmpi(name,ProjectInfo.windowInfos[i]->GetName().c_str())==0) return i;
 	}
 	return -1;
@@ -23,5 +23,5 @@
 	BOOST_FOREACH( WindowInfo *pWindowInfo, ProjectInfo.windowInfos )
 	{
-		if(lstrcmpi(name,pWindowInfo->name)==0) return pWindowInfo;
+		if(lstrcmpi(name,pWindowInfo->GetName().c_str())==0) return pWindowInfo;
 	}
 	return NULL;
@@ -374,5 +374,9 @@
 					sprintf(Command+i2,"%s\t\tCase %s\r\n",spaces,temporary);
 					i2+=lstrlen(Command+i2);
-					sprintf(Command+i2,"%s\t\t\t%s_%s_%s(ByVal (pnmHdr As VoidPtr))\r\n",spaces,pWindowInfo->name,pItemEventInfo[i].IdName,pItemEventInfo[i].pEventNames[i3]);
+					sprintf(Command+i2,"%s\t\t\t%s_%s_%s(ByVal (pnmHdr As VoidPtr))\r\n",
+						spaces,
+						pWindowInfo->GetName().c_str(),
+						pItemEventInfo[i].IdName,pItemEventInfo[i].pEventNames[i3]
+					);
 					i2+=lstrlen(Command+i2);
 				}
@@ -446,5 +450,5 @@
 			i2+=lstrlen(Command+i2);
 			if(pItemEventInfo[i].ClassID==CT_MENU){
-				sprintf(Command+i2,"%s\t%s_%s_MenuClick()\r\n",spaces,pWindowInfo->name,pItemEventInfo[i].IdName);
+				sprintf(Command+i2,"%s\t%s_%s_MenuClick()\r\n",spaces,pWindowInfo->GetName().c_str(),pItemEventInfo[i].IdName);
 				i2+=lstrlen(Command+i2);
 				for(i3=0;i3<pItemEventInfo[i].EventNum;i3++)
@@ -458,5 +462,5 @@
 					sprintf(Command+i2,"%s\t\tCase %s\r\n",spaces,temporary);
 					i2+=lstrlen(Command+i2);
-					sprintf(Command+i2,"%s\t\t\t%s_%s_%s()\r\n",spaces,pWindowInfo->name,pItemEventInfo[i].IdName,pItemEventInfo[i].pEventNames[i3]);
+					sprintf(Command+i2,"%s\t\t\t%s_%s_%s()\r\n",spaces,pWindowInfo->GetName().c_str(),pItemEventInfo[i].IdName,pItemEventInfo[i].pEventNames[i3]);
 					i2+=lstrlen(Command+i2);
 					HeapDefaultFree(pItemEventInfo[i].pEventNames[i3]);
@@ -533,5 +537,5 @@
 		sprintf(Command,"%sCase WM_ACTIVATE\r\n",spaces);
 		i=lstrlen(Command);
-		sprintf(Command+i,"%s\t%s_%s(LOWORD(wParam),HIWORD(wParam))\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s(LOWORD(wParam),HIWORD(wParam))\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 	}
 	else if(lstrcmp(MessageName,"Create")==0){
@@ -541,5 +545,5 @@
 		i=lstrlen(Command);
 
-		sprintf(Command+i,"%s\t%s=hWnd\r\n",spaces,pWindowInfo->HandleName);
+		sprintf(Command+i,"%s\t%s=hWnd\r\n",spaces,pWindowInfo->GetHandleName().c_str());
 		i+=lstrlen(Command+i);
 
@@ -587,5 +591,5 @@
 					spaces,
 					pChildInfo->IdName,
-					pWindowInfo->name);
+					pWindowInfo->GetName().c_str());
 				i+=lstrlen(Command+i);
 
@@ -598,5 +602,5 @@
 								sprintf(Command+i,"%s\thImage_%s_%s=LoadImage(GetWindowLongPtr(hWnd,GWLP_HINSTANCE) As HINSTANCE,\"%s\",IMAGE_ICON,0,0,LR_DEFAULTSIZE or LR_LOADFROMFILE)\r\n",
 									spaces,
-									pWindowInfo->name,
+									pWindowInfo->GetName().c_str(),
 									pChildInfo->IdName,
 									pChildInfo->ImageCtrlInfo.path);
@@ -628,5 +632,5 @@
 								sprintf(Command+i,"%s\thImage_%s_%s=LoadImage(GetWindowLongPtr(hWnd,GWLP_HINSTANCE) As HINSTANCE,ImageFilePath,IMAGE_ICON,0,0,LR_DEFAULTSIZE or LR_LOADFROMFILE)\r\n",
 									spaces,
-									pWindowInfo->name,
+									pWindowInfo->GetName().c_str(),
 									pChildInfo->IdName);
 							}
@@ -636,5 +640,5 @@
 							sprintf(Command+i,"%s\thImage_%s_%s=LoadImage(GetWindowLongPtr(hWnd,GWLP_HINSTANCE) As HINSTANCE,%s As *Byte,IMAGE_ICON,0,0,LR_DEFAULTSIZE)\r\n",
 								spaces,
-								pWindowInfo->name,
+								pWindowInfo->GetName().c_str(),
 								pChildInfo->IdName,
 								pChildInfo->ImageCtrlInfo.path);
@@ -644,5 +648,5 @@
 							spaces,
 							pChildInfo->IdName,
-							pWindowInfo->name,
+							pWindowInfo->GetName().c_str(),
 							pChildInfo->IdName);
 						i+=lstrlen(Command+i);
@@ -654,5 +658,5 @@
 								sprintf(Command+i,"%s\thImage_%s_%s=LoadImage(GetWindowLongPtr(hWnd,GWLP_HINSTANCE) As HINSTANCE,\"%s\",IMAGE_BITMAP,0,0,LR_DEFAULTSIZE or LR_LOADFROMFILE)\r\n",
 									spaces,
-									pWindowInfo->name,
+									pWindowInfo->GetName().c_str(),
 									pChildInfo->IdName,
 									pChildInfo->ImageCtrlInfo.path);
@@ -684,5 +688,5 @@
 								sprintf(Command+i,"%s\thImage_%s_%s=LoadImage(GetWindowLongPtr(hWnd,GWLP_HINSTANCE) As HINSTANCE,ImageFilePath,IMAGE_BITMAP,0,0,LR_LOADFROMFILE)\r\n",
 									spaces,
-									pWindowInfo->name,
+									pWindowInfo->GetName().c_str(),
 									pChildInfo->IdName);
 							}
@@ -692,5 +696,5 @@
 							sprintf(Command+i,"%s\thImage_%s_%s=LoadImage(GetWindowLongPtr(hWnd,GWLP_HINSTANCE) As HINSTANCE,%s As *Byte,IMAGE_BITMAP,0,0,LR_DEFAULTSIZE)\r\n",
 								spaces,
-								pWindowInfo->name,
+								pWindowInfo->GetName().c_str(),
 								pChildInfo->IdName,
 								pChildInfo->ImageCtrlInfo.path);
@@ -700,5 +704,5 @@
 							spaces,
 							pChildInfo->IdName,
-							pWindowInfo->name,
+							pWindowInfo->GetName().c_str(),
 							pChildInfo->IdName);
 						i+=lstrlen(Command+i);
@@ -709,5 +713,5 @@
 
 		if(bProcedureCall)
-			sprintf(Command+i,"%s\t%s_%s(ByVal (lParam As VoidPtr))\r\n",spaces,pWindowInfo->name,MessageName);
+			sprintf(Command+i,"%s\t%s_%s(ByVal (lParam As VoidPtr))\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 		return WM_CREATE;
 	}
@@ -716,5 +720,5 @@
 		i=lstrlen(Command);
 		if(bProcedureCall){
-			sprintf(Command+i,"%s\t%s_%s()\r\n",spaces,pWindowInfo->name,MessageName);
+			sprintf(Command+i,"%s\t%s_%s()\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 			i+=lstrlen(Command+i);
 		}
@@ -736,7 +740,7 @@
 			if(pChildInfo->Control==CT_IMAGEBOX){
 				if((pChildInfo->style&0x000F)==SS_ICON)
-					sprintf(Command+i,"%s\tDestroyIcon(hImage_%s_%s)\r\n",spaces,pWindowInfo->name,pChildInfo->IdName);
+					sprintf(Command+i,"%s\tDestroyIcon(hImage_%s_%s)\r\n",spaces,pWindowInfo->GetName().c_str(),pChildInfo->IdName);
 				else if((pChildInfo->style&0x000F)==SS_BITMAP)
-					sprintf(Command+i,"%s\tDeleteObject(hImage_%s_%s)\r\n",spaces,pWindowInfo->name,pChildInfo->IdName);
+					sprintf(Command+i,"%s\tDeleteObject(hImage_%s_%s)\r\n",spaces,pWindowInfo->GetName().c_str(),pChildInfo->IdName);
 				i+=lstrlen(Command+i);
 			}
@@ -747,65 +751,65 @@
 		sprintf(Command,"%sCase WM_DROPFILES\r\n",spaces);
 		i=lstrlen(Command);
-		sprintf(Command+i,"%s\t%s_%s(wParam As HDROP)\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s(wParam As HDROP)\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 	}
 	else if(lstrcmp(MessageName,"HScroll")==0){
 		sprintf(Command,"%sCase WM_HSCROLL\r\n",spaces);
 		i=lstrlen(Command);
-		sprintf(Command+i,"%s\t%s_%s(LOWORD(wParam),HIWORD(wParam),lParam As HWND)\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s(LOWORD(wParam),HIWORD(wParam),lParam As HWND)\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 	}
 	else if(lstrcmp(MessageName,"KeyDown")==0){
 		sprintf(Command,"%sCase WM_KEYDOWN\r\n",spaces);
 		i=lstrlen(Command);
-		sprintf(Command+i,"%s\t%s_%s(wParam As Long,lParam As Long)\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s(wParam As Long,lParam As Long)\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 	}
 	else if(lstrcmp(MessageName,"KeyPress")==0){
 		sprintf(Command,"%sCase WM_CHAR\r\n",spaces);
 		i=lstrlen(Command);
-		sprintf(Command+i,"%s\t%s_%s(wParam As Long,lParam As Long)\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s(wParam As Long,lParam As Long)\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 	}
 	else if(lstrcmp(MessageName,"KeyUp")==0){
 		sprintf(Command,"%sCase WM_KEYUP\r\n",spaces);
 		i=lstrlen(Command);
-		sprintf(Command+i,"%s\t%s_%s(wParam As Long,lParam As Long)\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s(wParam As Long,lParam As Long)\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 	}
 	else if(lstrcmp(MessageName,"LButtonDown")==0){
 		sprintf(Command,"%sCase WM_LBUTTONDOWN\r\n",spaces);
 		i=lstrlen(Command);
-		sprintf(Command+i,"%s\t%s_%s(wParam As Long,LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s(wParam As Long,LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 	}
 	else if(lstrcmp(MessageName,"LButtonDblClick")==0){
 		sprintf(Command,"%sCase WM_LBUTTONDBLCLK\r\n",spaces);
 		i=lstrlen(Command);
-		sprintf(Command+i,"%s\t%s_%s(wParam As Long,LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s(wParam As Long,LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 	}
 	else if(lstrcmp(MessageName,"LButtonUp")==0){
 		sprintf(Command,"%sCase WM_LBUTTONUP\r\n",spaces);
 		i=lstrlen(Command);
-		sprintf(Command+i,"%s\t%s_%s(wParam As Long,LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s(wParam As Long,LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 	}
 	else if(lstrcmp(MessageName,"MButtonDown")==0){
 		sprintf(Command,"%sCase WM_MBUTTONDOWN\r\n",spaces);
 		i=lstrlen(Command);
-		sprintf(Command+i,"%s\t%s_%s(wParam As Long,LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s(wParam As Long,LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 	}
 	else if(lstrcmp(MessageName,"MButtonDblClick")==0){
 		sprintf(Command,"%sCase WM_MBUTTONDBLCLK\r\n",spaces);
 		i=lstrlen(Command);
-		sprintf(Command+i,"%s\t%s_%s(wParam As Long,LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s(wParam As Long,LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 	}
 	else if(lstrcmp(MessageName,"MButtonUp")==0){
 		sprintf(Command,"%sCase WM_MBUTTONUP\r\n",spaces);
 		i=lstrlen(Command);
-		sprintf(Command+i,"%s\t%s_%s(wParam As Long,LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s(wParam As Long,LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 	}
 	else if(lstrcmp(MessageName,"MouseMove")==0){
 		sprintf(Command,"%sCase WM_MOUSEMOVE\r\n",spaces);
 		i=lstrlen(Command);
-		sprintf(Command+i,"%s\t%s_%s(wParam As Long,LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s(wParam As Long,LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 	}
 	else if(lstrcmp(MessageName,"Move")==0){
 		sprintf(Command,"%sCase WM_MOVE\r\n",spaces);
 		i=lstrlen(Command);
-		sprintf(Command+i,"%s\t%s_%s(LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s(LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 	}
 	else if(lstrcmp(MessageName,"Notify")==0){
@@ -822,5 +826,5 @@
 		sprintf(Command+i,"%s\thDC=BeginPaint(hWnd,ps)\r\n",spaces);
 		i+=lstrlen(Command+i);
-		sprintf(Command+i,"%s\t%s_%s(hDC)\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s(hDC)\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 		i+=lstrlen(Command+i);
 		sprintf(Command+i,"%s\tEndPaint(hWnd,ps)\r\n",spaces);
@@ -833,5 +837,5 @@
 		i+=lstrlen(Command+i);
 		if(bProcedureCall){
-			sprintf(Command+i,"%s\t%s_%s(cancel)\r\n",spaces,pWindowInfo->name,MessageName);
+			sprintf(Command+i,"%s\t%s_%s(cancel)\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 			i+=lstrlen(Command+i);
 		}
@@ -845,35 +849,35 @@
 		sprintf(Command,"%sCase WM_RBUTTONDBLCLK\r\n",spaces);
 		i=lstrlen(Command);
-		sprintf(Command+i,"%s\t%s_%s(wParam As Long,LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s(wParam As Long,LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 	}
 	else if(lstrcmp(MessageName,"RButtonDown")==0){
 		sprintf(Command,"%sCase WM_RBUTTONDOWN\r\n",spaces);
 		i=lstrlen(Command);
-		sprintf(Command+i,"%s\t%s_%s(wParam As Long,LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s(wParam As Long,LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 	}
 	else if(lstrcmp(MessageName,"RButtonUp")==0){
 		sprintf(Command,"%sCase WM_RBUTTONUP\r\n",spaces);
 		i=lstrlen(Command);
-		sprintf(Command+i,"%s\t%s_%s(wParam As Long,LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s(wParam As Long,LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 	}
 	else if(lstrcmp(MessageName,"Resize")==0){
 		sprintf(Command,"%sCase WM_SIZE\r\n",spaces);
 		i=lstrlen(Command);
-		sprintf(Command+i,"%s\t%s_%s(wParam As Long,LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s(wParam As Long,LOWORD(lParam),HIWORD(lParam))\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 	}
 	else if(lstrcmp(MessageName,"SetFocus")==0){
 		sprintf(Command,"%sCase WM_SETFOCUS\r\n",spaces);
 		i=lstrlen(Command);
-		sprintf(Command+i,"%s\t%s_%s()\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s()\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 	}
 	else if(lstrcmp(MessageName,"Timer")==0){
 		sprintf(Command,"%sCase WM_TIMER\r\n",spaces);
 		i=lstrlen(Command);
-		sprintf(Command+i,"%s\t%s_%s(wParam As DWord)\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s(wParam As DWord)\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 	}
 	else if(lstrcmp(MessageName,"VScroll")==0){
 		sprintf(Command,"%sCase WM_VSCROLL\r\n",spaces);
 		i=lstrlen(Command);
-		sprintf(Command+i,"%s\t%s_%s(LOWORD(wParam),HIWORD(wParam),lParam As HWND)\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s(LOWORD(wParam),HIWORD(wParam),lParam As HWND)\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 	}
 
@@ -885,5 +889,5 @@
 		sprintf(Command,"%sCase MM_MCINOTIFY\r\n",spaces);
 		i=lstrlen(Command);
-		sprintf(Command+i,"%s\t%s_%s(wParam,lParam)\r\n",spaces,pWindowInfo->name,MessageName);
+		sprintf(Command+i,"%s\t%s_%s(wParam,lParam)\r\n",spaces,pWindowInfo->GetName().c_str(),MessageName);
 	}
 	return 0;
@@ -1044,10 +1048,10 @@
 	BOOST_FOREACH( WindowInfo *pWindowInfo, ProjectInfo.windowInfos )
 	{
-		sprintf(buffer+i2,"Dim %s As HWND\r\n",pWindowInfo->HandleName);
-		i2+=lstrlen(buffer+i2);
-		sprintf(buffer+i2,"Dim hFont_%s As HFONT\r\n",pWindowInfo->name);
+		sprintf(buffer+i2,"Dim %s As HWND\r\n",pWindowInfo->GetHandleName().c_str());
+		i2+=lstrlen(buffer+i2);
+		sprintf(buffer+i2,"Dim hFont_%s As HFONT\r\n",pWindowInfo->GetName().c_str());
 		i2+=lstrlen(buffer+i2);
 		sprintf(buffer+i2,"hFont_%s=CreateFont(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,\"%s\")\r\n",
-			pWindowInfo->name,
+			pWindowInfo->GetName().c_str(),
 			pWindowInfo->LogFont.lfHeight,
 			pWindowInfo->LogFont.lfWidth,
@@ -1111,5 +1115,5 @@
 				if((pChildInfo->style&0x000F)==SS_ICON||
 					(pChildInfo->style&0x000F)==SS_BITMAP){
-					sprintf(buffer+i2,"Dim hImage_%s_%s As HANDLE\r\n",pWindowInfo->name,pChildInfo->IdName);
+					sprintf(buffer+i2,"Dim hImage_%s_%s As HANDLE\r\n",pWindowInfo->GetName().c_str(),pChildInfo->IdName);
 					i2+=lstrlen(buffer+i2);
 
@@ -1162,5 +1166,5 @@
 	{
 		//フォントハンドル解放
-		sprintf(buffer+i2,"\tDeleteObject(hFont_%s)\r\n",pWindowInfo->name);
+		sprintf(buffer+i2,"\tDeleteObject(hFont_%s)\r\n",pWindowInfo->GetName().c_str());
 		i2+=lstrlen(buffer+i2);
 
@@ -1208,5 +1212,5 @@
 		ppNames=GetProcedureNamesOfMessageCall(i,&pItemEventInfo,&i3,&bAvailUserProc[i]);
 
-		sprintf(buffer+i2,"Function EventCall_%s(hWnd As HWND, message As DWord, wParam As WPARAM, lParam As LPARAM) As LRESULT\r\n",pWindowInfo->name);
+		sprintf(buffer+i2,"Function EventCall_%s(hWnd As HWND, message As DWord, wParam As WPARAM, lParam As LPARAM) As LRESULT\r\n",pWindowInfo->GetName().c_str());
 		i2+=lstrlen(buffer+i2);
 
@@ -1246,5 +1250,5 @@
 			i2+=lstrlen(buffer+i2);
 			if(sw4){
-				sprintf(buffer+i2,"\t\t\t%s_Notify(ByVal (lParam As *NMHDR))\r\n",pWindowInfo->name);
+				sprintf(buffer+i2,"\t\t\t%s_Notify(ByVal (lParam As *NMHDR))\r\n",pWindowInfo->GetName().c_str());
 				i2+=lstrlen(buffer+i2);
 			}
@@ -1272,5 +1276,5 @@
 			lstrcpy(buffer+i2,"\t\tCase WM_NOTIFY\r\n");
 			i2+=lstrlen(buffer+i2);
-			sprintf(buffer+i2,"\t\t\t%s_Notify(ByVal (lParam As *NMHDR))\r\n",pWindowInfo->name);
+			sprintf(buffer+i2,"\t\t\t%s_Notify(ByVal (lParam As *NMHDR))\r\n",pWindowInfo->GetName().c_str());
 			i2+=lstrlen(buffer+i2);
 		}
@@ -1295,5 +1299,5 @@
 		lstrcpy(buffer+i2,"\t\tCase Else\r\n");
 		i2+=lstrlen(buffer+i2);
-		sprintf(buffer+i2,"\t\t\tEventCall_%s=DefWindowProc(hWnd,message,wParam,lParam)\r\n",pWindowInfo->name);
+		sprintf(buffer+i2,"\t\t\tEventCall_%s=DefWindowProc(hWnd,message,wParam,lParam)\r\n",pWindowInfo->GetName().c_str());
 		i2+=lstrlen(buffer+i2);
 		lstrcpy(buffer+i2,"\t\t\tExit Function\r\n");
@@ -1303,5 +1307,5 @@
 		i2+=lstrlen(buffer+i2);
 
-		sprintf(buffer+i2,"\tEventCall_%s=0\r\n",pWindowInfo->name);
+		sprintf(buffer+i2,"\tEventCall_%s=0\r\n",pWindowInfo->GetName().c_str());
 		i2+=lstrlen(buffer+i2);
 		lstrcpy(buffer+i2,"End Function\r\n");
@@ -1363,14 +1367,14 @@
 		if(pWindowInfo->type==WNDTYPE_MODALDLG){
 			if(sw1==0){
-				sprintf(buffer+i2,"\tIf lstrcmp(TemplateName,\"%s\")=0 Then\r\n",pWindowInfo->name);
+				sprintf(buffer+i2,"\tIf lstrcmp(TemplateName,\"%s\")=0 Then\r\n",pWindowInfo->GetName().c_str());
 				i2+=lstrlen(buffer+i2);
 				sw1=1;
 			}
 			else{
-				sprintf(buffer+i2,"\tElseIf lstrcmp(TemplateName,\"%s\")=0 Then\r\n",pWindowInfo->name);
+				sprintf(buffer+i2,"\tElseIf lstrcmp(TemplateName,\"%s\")=0 Then\r\n",pWindowInfo->GetName().c_str());
 				i2+=lstrlen(buffer+i2);
 			}
 			sprintf(buffer+i2,"\t\t%s=CreateWindowEx(&H%08x,\"NORMALDLG\",\"%s\",&H%08x,%d,%d,%d,%d,hOwnerWnd,%d As HMENU,GetModuleHandle(0),0)\r\n",
-				pWindowInfo->HandleName,
+				pWindowInfo->GetHandleName().c_str(),
 				pWindowInfo->ExStyle,
 				pWindowInfo->caption,
@@ -1383,24 +1387,24 @@
 			i2+=lstrlen(buffer+i2);
 			sprintf(buffer+i2,"\t\thDlg=%s\r\n",
-				pWindowInfo->HandleName);
+				pWindowInfo->GetHandleName().c_str());
 			i2+=lstrlen(buffer+i2);
 			if(bAvailUserProc[i]){
 				sprintf(buffer+i2,"\t\tSetWindowLongPtr(%s,GWLP_WNDPROC,AddressOf(%s) As LONG_PTR)\r\n",
-					pWindowInfo->HandleName,
+					pWindowInfo->GetHandleName().c_str(),
 					pWindowInfo->CallBackName);
 			}
 			else{
 				sprintf(buffer+i2,"\t\tSetWindowLongPtr(%s,GWLP_WNDPROC,AddressOf(EventCall_%s) As LONG_PTR)\r\n",
-					pWindowInfo->HandleName,
-					pWindowInfo->name);
-			}
-			i2+=lstrlen(buffer+i2);
-			sprintf(buffer+i2,"\t\tSendMessage(%s,WM_INITDIALOG,0,0)\r\n",pWindowInfo->HandleName);
+					pWindowInfo->GetHandleName().c_str(),
+					pWindowInfo->GetName().c_str());
+			}
+			i2+=lstrlen(buffer+i2);
+			sprintf(buffer+i2,"\t\tSendMessage(%s,WM_INITDIALOG,0,0)\r\n",pWindowInfo->GetHandleName().c_str());
 			i2+=lstrlen(buffer+i2);
 			if(pWindowInfo->IconResName){
-				sprintf(buffer+i2,"\t\tSendMessage(%s,WM_SETICON,ICON_SMALL,LoadIcon(GetModuleHandle(0),MAKEINTRESOURCE(%s)) As LPARAM)\r\n",pWindowInfo->HandleName,pWindowInfo->IconResName);
+				sprintf(buffer+i2,"\t\tSendMessage(%s,WM_SETICON,ICON_SMALL,LoadIcon(GetModuleHandle(0),MAKEINTRESOURCE(%s)) As LPARAM)\r\n",pWindowInfo->GetHandleName().c_str(),pWindowInfo->IconResName);
 				i2+=lstrlen(buffer+i2);
 			}
-			sprintf(buffer+i2,"\t\tShowWindow(%s,SW_SHOW)\r\n",pWindowInfo->HandleName);
+			sprintf(buffer+i2,"\t\tShowWindow(%s,SW_SHOW)\r\n",pWindowInfo->GetHandleName().c_str());
 			i2+=lstrlen(buffer+i2);
 		}
@@ -1461,9 +1465,9 @@
 	{
 		if(pWindowInfo->type==WNDTYPE_MODELESSDLG){
-			sprintf(buffer+i2,"\tIf lstrcmp(TemplateName,\"%s\")=0 Then\r\n",pWindowInfo->name);
+			sprintf(buffer+i2,"\tIf lstrcmp(TemplateName,\"%s\")=0 Then\r\n",pWindowInfo->GetName().c_str());
 			i2+=lstrlen(buffer+i2);
 
 			sprintf(buffer+i2,"\t\t%s=CreateWindowEx(&H%08x,\"NORMALDLG\",\"%s\",&H%08x,%d,%d,%d,%d,hOwnerWnd,%d As HMENU,GetModuleHandle(0),0)\r\n",
-				pWindowInfo->HandleName,
+				pWindowInfo->GetHandleName().c_str(),
 				pWindowInfo->ExStyle,
 				pWindowInfo->caption,
@@ -1475,24 +1479,24 @@
 				pWindowInfo->id);
 			i2+=lstrlen(buffer+i2);
-			sprintf(buffer+i2,"\t\tCreateDialog=%s\r\n",pWindowInfo->HandleName);
+			sprintf(buffer+i2,"\t\tCreateDialog=%s\r\n",pWindowInfo->GetHandleName().c_str());
 			i2+=lstrlen(buffer+i2);
 			if(bAvailUserProc[i]){
 				sprintf(buffer+i2,"\t\tSetWindowLongPtr(%s,GWLP_WNDPROC,AddressOf(%s) As LONG_PTR)\r\n",
-					pWindowInfo->HandleName,
+					pWindowInfo->GetHandleName().c_str(),
 					pWindowInfo->CallBackName);
 			}
 			else{
 				sprintf(buffer+i2,"\t\tSetWindowLongPtr(%s,GWLP_WNDPROC,AddressOf(EventCall_%s) As LONG_PTR)\r\n",
-					pWindowInfo->HandleName,
-					pWindowInfo->name);
-			}
-			i2+=lstrlen(buffer+i2);
-			sprintf(buffer+i2,"\t\tSendMessage(%s,WM_INITDIALOG,0,0)\r\n",pWindowInfo->HandleName);
+					pWindowInfo->GetHandleName().c_str(),
+					pWindowInfo->GetName().c_str());
+			}
+			i2+=lstrlen(buffer+i2);
+			sprintf(buffer+i2,"\t\tSendMessage(%s,WM_INITDIALOG,0,0)\r\n",pWindowInfo->GetHandleName().c_str());
 			i2+=lstrlen(buffer+i2);
 			if(pWindowInfo->IconResName){
-				sprintf(buffer+i2,"\t\tSendMessage(%s,WM_SETICON,ICON_SMALL,LoadIcon(GetModuleHandle(0),MAKEINTRESOURCE(%s)) As LPARAM)\r\n",pWindowInfo->HandleName,pWindowInfo->IconResName);
+				sprintf(buffer+i2,"\t\tSendMessage(%s,WM_SETICON,ICON_SMALL,LoadIcon(GetModuleHandle(0),MAKEINTRESOURCE(%s)) As LPARAM)\r\n",pWindowInfo->GetHandleName().c_str(),pWindowInfo->IconResName);
 				i2+=lstrlen(buffer+i2);
 			}
-			sprintf(buffer+i2,"\tEnd If\r\n",pWindowInfo->name);
+			sprintf(buffer+i2,"\tEnd If\r\n",pWindowInfo->GetName().c_str());
 			i2+=lstrlen(buffer+i2);
 		}
@@ -1557,5 +1561,5 @@
 			if(bAvailUserProc[i])
 				sprintf(buffer+i2,"_RadSys_wcl.lpfnWndProc=AddressOf(%s)\r\n",pWindowInfo->CallBackName);
-			else sprintf(buffer+i2,"_RadSys_wcl.lpfnWndProc=AddressOf(EventCall_%s)\r\n",pWindowInfo->name);
+			else sprintf(buffer+i2,"_RadSys_wcl.lpfnWndProc=AddressOf(EventCall_%s)\r\n",pWindowInfo->GetName().c_str());
 			i2+=lstrlen(buffer+i2);
 			if(pWindowInfo->bgColor==COLOR_3DFACE)
@@ -1638,7 +1642,7 @@
 	BOOST_FOREACH( WindowInfo *pWindowInfo, ProjectInfo.windowInfos )
 	{
-		sprintf(buffer+i2,"WINDOW:%s\r\n",pWindowInfo->name);
-		i2+=lstrlen(buffer+i2);
-		sprintf(buffer+i2,"    HANDLE    = %s\r\n",pWindowInfo->HandleName);
+		sprintf(buffer+i2,"WINDOW:%s\r\n",pWindowInfo->GetName().c_str());
+		i2+=lstrlen(buffer+i2);
+		sprintf(buffer+i2,"    HANDLE    = %s\r\n",pWindowInfo->GetHandleName().c_str());
 		i2+=lstrlen(buffer+i2);
 		sprintf(buffer+i2,"    POINT     = %d,%d\r\n",pWindowInfo->pos.x,pWindowInfo->pos.y);
@@ -1713,5 +1717,5 @@
 			}
 		}
-		sprintf(buffer+i2,"END\r\n",pWindowInfo->name);
+		sprintf(buffer+i2,"END\r\n",pWindowInfo->GetName().c_str());
 		i2+=lstrlen(buffer+i2);
 		if(i2-GENERAL_SIZE<GENERAL_SIZE){
@@ -1724,5 +1728,5 @@
 		i2+=lstrlen(buffer+i2);
 		i2+=GetSaveMenuData(buffer+i2,1,ProjectInfo.pMenuInfo[i].pMenuInfo,ProjectInfo.pMenuInfo[i].NumberOfMenu);
-		sprintf(buffer+i2,"END\r\n",windowInfos[i]->name);
+		sprintf(buffer+i2,"END\r\n",windowInfos[i]->GetName().c_str());
 		i2+=lstrlen(buffer+i2);
 		if(i2-GENERAL_SIZE<GENERAL_SIZE){
@@ -1882,10 +1886,8 @@
 				i3=1;
 
-				ProjectInfo.windowInfos.back()->name=(char *)HeapAlloc(hHeap,0,i2+1);
-				lstrcpy(ProjectInfo.windowInfos.back()->name,temp2);
+				ProjectInfo.windowInfos.back()->SetName( temp2 );
 			}
 			else if(lstrcmpi(temporary,"HANDLE")==0&&i3==1){
-				ProjectInfo.windowInfos.back()->HandleName=(char *)HeapAlloc(hHeap,0,i2+1);
-				lstrcpy(ProjectInfo.windowInfos.back()->HandleName,temp2);
+				ProjectInfo.windowInfos.back()->SetHandleName( temp2 );
 			}
 			else if(lstrcmpi(temporary,"POINT")==0&&i3==1){
@@ -2177,13 +2179,13 @@
 	BOOST_FOREACH( WindowInfo *pWindowInfo, ProjectInfo.windowInfos )
 	{
-		if(lstrcmpi(NewWindow.name,pWindowInfo->name)==0){
+		if(lstrcmpi(NewWindow.name,pWindowInfo->GetName().c_str())==0){
 			//"\"%s\" ウィンドウは既にプロジェクト内に存在します。"
-			sprintf(temporary,STRING_DUPLICATIONERROR_WINDOW_IN_PROJECT,pWindowInfo->name);
+			sprintf(temporary,STRING_DUPLICATIONERROR_WINDOW_IN_PROJECT,pWindowInfo->GetName().c_str());
 			MessageBox(hOwner,temporary,STRING_ERROR,MB_OK|MB_ICONEXCLAMATION);
 			return;
 		}
-		if(lstrcmpi(NewWindow.HandleName,pWindowInfo->HandleName)==0){
+		if(lstrcmpi(NewWindow.HandleName,pWindowInfo->GetHandleName().c_str())==0){
 			//"\"%s\" ハンドルは既にプロジェクト内に存在します。"
-			sprintf(temporary,STRING_DUPLICATIONERROR_HANDLE_IN_PROJECT,pWindowInfo->HandleName);
+			sprintf(temporary,STRING_DUPLICATIONERROR_HANDLE_IN_PROJECT,pWindowInfo->GetHandleName().c_str());
 			MessageBox(hOwner,temporary,STRING_ERROR,MB_OK|MB_ICONEXCLAMATION);
 			return;
@@ -2205,10 +2207,8 @@
 
 	//ウィンドウ名
-	ProjectInfo.windowInfos.back()->name=(char *)HeapAlloc(hHeap,0,lstrlen(NewWindow.name)+1);
-	lstrcpy(ProjectInfo.windowInfos.back()->name,NewWindow.name);
+	ProjectInfo.windowInfos.back()->SetName( NewWindow.name );
 
 	//ハンドル名
-	ProjectInfo.windowInfos.back()->HandleName=(char *)HeapAlloc(hHeap,0,lstrlen(NewWindow.HandleName)+1);
-	lstrcpy(ProjectInfo.windowInfos.back()->HandleName,NewWindow.HandleName);
+	ProjectInfo.windowInfos.back()->SetHandleName( NewWindow.HandleName );
 
 	//位置情報
@@ -2267,5 +2267,5 @@
 
 	//メッセージ処理ファイル名
-	sprintf(temporary,"%s.ab",ProjectInfo.windowInfos.back()->name);
+	sprintf(temporary,"%s.ab",ProjectInfo.windowInfos.back()->GetName().c_str());
 	ProjectInfo.windowInfos.back()->filepath=(char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
 	lstrcpy(ProjectInfo.windowInfos.back()->filepath,temporary);
@@ -2287,5 +2287,5 @@
 		NewWindow.CallBackName);
 
-	sprintf(temporary,"%s%s.ab",ProjectInfo.dir,ProjectInfo.windowInfos.back()->name);
+	sprintf(temporary,"%s%s.ab",ProjectInfo.dir,ProjectInfo.windowInfos.back()->GetName().c_str());
 
 	//書き込み
@@ -2306,5 +2306,6 @@
 	tv.item.iSelectedImage=2;
 	tv.hParent=ProjectInfo.hWindowTreeItem;
-	tv.item.pszText=ProjectInfo.windowInfos.back()->name;
+	lstrcpy( temp2, ProjectInfo.windowInfos.back()->GetName().c_str() );
+	tv.item.pszText = temp2;
 
 	ProjectInfo.windowInfos.back()->hTreeItem=TreeView_InsertItem(hMaterialTreeView,&tv);
@@ -2326,5 +2327,5 @@
 	//ウィンドウが開かれている場合は閉じる
 	for(i=0;i<MAX_WNDNUM;i++){
-		if(MdiInfo[i].hwnd&&lstrcmpi(pWindowInfo->name,MdiInfo[i].path)==0){
+		if(MdiInfo[i].hwnd&&lstrcmpi(pWindowInfo->GetName().c_str(),MdiInfo[i].path)==0){
 			SendMessage(MdiInfo[i].hwnd,WM_CLOSE,0,0);
 			break;
@@ -2333,7 +2334,5 @@
 
 	//ウィンドウ情報のメモリを解放
-	HeapDefaultFree(pWindowInfo->name);
 	HeapDefaultFree(pWindowInfo->filepath);
-	HeapDefaultFree(pWindowInfo->HandleName);
 	HeapDefaultFree(pWindowInfo->caption);
 	HeapDefaultFree(pWindowInfo->ClassName);
Index: /trunk/ab5.0/abdev/abdev/include/ProjectManager/WindowManager.h
===================================================================
--- /trunk/ab5.0/abdev/abdev/include/ProjectManager/WindowManager.h	(revision 616)
+++ /trunk/ab5.0/abdev/abdev/include/ProjectManager/WindowManager.h	(revision 617)
@@ -50,7 +50,5 @@
 public:
 	WindowInfo()
-		: name( NULL )
-		, HandleName( NULL )
-		, caption( NULL )
+		: caption( NULL )
 		, MenuID( NULL )
 		, IconResName( NULL )
@@ -60,7 +58,23 @@
 	}
 
+	void SetName( const std::string &name )
+	{
+		this->name = name;
+	}
+	const std::string &GetName() const
+	{
+		return name;
+	}
+
+	void SetHandleName( const std::string &handleName )
+	{
+		this->handleName = handleName;
+	}
+	const std::string &GetHandleName() const
+	{
+		return handleName;
+	}
+
 	//ウィンドウデータ
-	char *name;
-	char *HandleName;
 	POINT pos;
 	SIZE size;
@@ -83,4 +97,8 @@
 	//ツリー項目
 	HTREEITEM hTreeItem;
+
+private:
+	std::string name;
+	std::string handleName;
 };
 
