Index: trunk/ab5.0/abdev/abdev/WindowControl.cpp
===================================================================
--- trunk/ab5.0/abdev/abdev/WindowControl.cpp	(revision 481)
+++ trunk/ab5.0/abdev/abdev/WindowControl.cpp	(revision 609)
@@ -16,8 +16,18 @@
 	extern PROJECTINFO ProjectInfo;
 	int i;
-	for(i=0;i<ProjectInfo.NumberOfWindows;i++){
-		if(lstrcmpi(name,ProjectInfo.pWindowInfo[i].name)==0) return i;
+	for(i=0;i<ProjectInfo.windowInfos.size();i++){
+		if(lstrcmpi(name,ProjectInfo.windowInfos[i].name)==0) return i;
 	}
 	return -1;
+}
+WINDOW_INFO *GetWndInfo( char *name )
+{
+	extern PROJECTINFO ProjectInfo;
+	int i;
+	for( int i=0;i<ProjectInfo.windowInfos.size();i++)
+	{
+		if(lstrcmpi(name,ProjectInfo.windowInfos[i].name)==0) return &ProjectInfo.windowInfos[i];
+	}
+	return NULL;
 }
 void ChangeDivisionToOrSign(char *CopyBuffer,const char *ReadBuffer){
@@ -81,5 +91,5 @@
 
 	for(i3--;i3>=0;i3--){
-		pChildInfo=&ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[i3]];
+		pChildInfo=&ProjectInfo.windowInfos[WndInfoNum].pChildInfo[MdiInfo[WndNum].MdiRadInfo->SelectingItem[i3]];
 
 		MemSize+=lstrlen(pChildInfo->IdName)+1+
@@ -518,7 +528,6 @@
 	int i,i2,sw;
 	char temporary[MAX_PATH],*temp2;
-	WINDOW_INFO *pWindowInfo;
-
-	pWindowInfo=&ProjectInfo.pWindowInfo[WndInfoNum];
+
+	WINDOW_INFO *pWindowInfo = &ProjectInfo.windowInfos[WndInfoNum];
 
 	Command[0]=0;
@@ -976,7 +985,4 @@
 	int i,i2,i3,i4,i5,i6,sw1,sw2,sw3,sw4,size;
 	char *buffer,**ppNames,temporary[MAX_PATH];
-	WINDOW_INFO *pWindowInfo;
-
-	pWindowInfo=ProjectInfo.pWindowInfo;
 
 	size=2;
@@ -1002,10 +1008,10 @@
 
 	ppNames=(char **)HeapAlloc(hHeap,0,1);
-	for(i=0,i4=1000,i5=0;i<ProjectInfo.NumberOfWindows;i++){
-		for(i3=0;i3<pWindowInfo[i].NumberOfChildWindows;i3++){
+	for(i=0,i4=1000,i5=0;i<ProjectInfo.windowInfos.size();i++){
+		for(i3=0;i3<ProjectInfo.windowInfos[i].NumberOfChildWindows;i3++){
 
 			//重複チェック
 			for(i6=0,sw1=0;i6<i5;i6++){
-				if(lstrcmpi(ppNames[i6],pWindowInfo[i].pChildInfo[i3].IdName)==0){
+				if(lstrcmpi(ppNames[i6],ProjectInfo.windowInfos[i].pChildInfo[i3].IdName)==0){
 					sw1=1;
 					break;
@@ -1015,8 +1021,8 @@
 
 			ppNames=(char **)HeapReAlloc(hHeap,0,ppNames,sizeof(char *)*(i5+1));
-			ppNames[i5]=pWindowInfo[i].pChildInfo[i3].IdName;
+			ppNames[i5]=ProjectInfo.windowInfos[i].pChildInfo[i3].IdName;
 			i5++;
 
-			sprintf(buffer+i2,"Const %s=%d\r\n",pWindowInfo[i].pChildInfo[i3].IdName,i4);
+			sprintf(buffer+i2,"Const %s=%d\r\n",ProjectInfo.windowInfos[i].pChildInfo[i3].IdName,i4);
 			i2+=lstrlen(buffer+i2);
 			i4++;
@@ -1038,25 +1044,25 @@
 
 	//ハンドル変数を定義
-	for(i=0;i<ProjectInfo.NumberOfWindows;i++){
-		sprintf(buffer+i2,"Dim %s As HWND\r\n",pWindowInfo[i].HandleName);
-		i2+=lstrlen(buffer+i2);
-		sprintf(buffer+i2,"Dim hFont_%s As HFONT\r\n",pWindowInfo[i].name);
+	for(i=0;i<ProjectInfo.windowInfos.size();i++){
+		sprintf(buffer+i2,"Dim %s As HWND\r\n",ProjectInfo.windowInfos[i].HandleName);
+		i2+=lstrlen(buffer+i2);
+		sprintf(buffer+i2,"Dim hFont_%s As HFONT\r\n",ProjectInfo.windowInfos[i].name);
 		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[i].name,
-			pWindowInfo[i].LogFont.lfHeight,
-			pWindowInfo[i].LogFont.lfWidth,
-			pWindowInfo[i].LogFont.lfEscapement,
-			pWindowInfo[i].LogFont.lfOrientation,
-			pWindowInfo[i].LogFont.lfWeight,
-			pWindowInfo[i].LogFont.lfItalic,
-			pWindowInfo[i].LogFont.lfUnderline,
-			pWindowInfo[i].LogFont.lfStrikeOut,
-			pWindowInfo[i].LogFont.lfCharSet,
-			pWindowInfo[i].LogFont.lfOutPrecision,
-			pWindowInfo[i].LogFont.lfClipPrecision,
-			pWindowInfo[i].LogFont.lfQuality,
-			pWindowInfo[i].LogFont.lfPitchAndFamily,
-			pWindowInfo[i].LogFont.lfFaceName);
+			ProjectInfo.windowInfos[i].name,
+			ProjectInfo.windowInfos[i].LogFont.lfHeight,
+			ProjectInfo.windowInfos[i].LogFont.lfWidth,
+			ProjectInfo.windowInfos[i].LogFont.lfEscapement,
+			ProjectInfo.windowInfos[i].LogFont.lfOrientation,
+			ProjectInfo.windowInfos[i].LogFont.lfWeight,
+			ProjectInfo.windowInfos[i].LogFont.lfItalic,
+			ProjectInfo.windowInfos[i].LogFont.lfUnderline,
+			ProjectInfo.windowInfos[i].LogFont.lfStrikeOut,
+			ProjectInfo.windowInfos[i].LogFont.lfCharSet,
+			ProjectInfo.windowInfos[i].LogFont.lfOutPrecision,
+			ProjectInfo.windowInfos[i].LogFont.lfClipPrecision,
+			ProjectInfo.windowInfos[i].LogFont.lfQuality,
+			ProjectInfo.windowInfos[i].LogFont.lfPitchAndFamily,
+			ProjectInfo.windowInfos[i].LogFont.lfFaceName);
 		i2+=lstrlen(buffer+i2);
 
@@ -1072,19 +1078,19 @@
 	lstrcpy(buffer+i2,"h3DFaceBrush=CreateSolidBrush(GetSysColor(COLOR_3DFACE))\r\n");
 	i2+=lstrlen(buffer+i2);
-	for(i=0;i<ProjectInfo.NumberOfWindows;i++){
-		if(pWindowInfo[i].bgColor<=0&&
-			pWindowInfo[i].bgColor!=-(int)RGB(255,255,255)&&
-			pWindowInfo[i].bgColor!=-(int)RGB(0,0,0)){
+	for(i=0;i<ProjectInfo.windowInfos.size();i++){
+		if(ProjectInfo.windowInfos[i].bgColor<=0&&
+			ProjectInfo.windowInfos[i].bgColor!=-(int)RGB(255,255,255)&&
+			ProjectInfo.windowInfos[i].bgColor!=-(int)RGB(0,0,0)){
 				sprintf(buffer+i2,"Dim _RadSys_hBackBrush%d As HBRUSH\r\n",i);
 				i2+=lstrlen(buffer+i2);
-				sprintf(buffer+i2,"_RadSys_hBackBrush%d=CreateSolidBrush(%d)\r\n",i,-pWindowInfo[i].bgColor);
+				sprintf(buffer+i2,"_RadSys_hBackBrush%d=CreateSolidBrush(%d)\r\n",i,-ProjectInfo.windowInfos[i].bgColor);
 				i2+=lstrlen(buffer+i2);
 		}
-		if(pWindowInfo[i].bgColor>=0x1000){
+		if(ProjectInfo.windowInfos[i].bgColor>=0x1000){
 				sprintf(buffer+i2,"Dim _RadSys_hBackBrush%d As HBRUSH\r\n",i);
 				i2+=lstrlen(buffer+i2);
 				sprintf(buffer+i2,"_RadSys_hBackBrush%d=CreatePatternBrush(LoadImage(GetModuleHandle(0),%s,IMAGE_BITMAP,0,0,LR_DEFAULTSIZE or LR_SHARED))\r\n",
 					i,
-					ProjectInfo.res.pBitmapResInfo[pWindowInfo[i].bgColor-0x1000].IdName);
+					ProjectInfo.res.pBitmapResInfo[ProjectInfo.windowInfos[i].bgColor-0x1000].IdName);
 				i2+=lstrlen(buffer+i2);
 		}
@@ -1095,10 +1101,10 @@
 
 	//イメージ ボックス用の変数を定義
-	for(i=0;i<ProjectInfo.NumberOfWindows;i++){
-		for(i3=0;i3<pWindowInfo[i].NumberOfChildWindows;i3++){
-			if(pWindowInfo[i].pChildInfo[i3].Control==CT_IMAGEBOX){
-				if((pWindowInfo[i].pChildInfo[i3].style&0x000F)==SS_ICON||
-					(pWindowInfo[i].pChildInfo[i3].style&0x000F)==SS_BITMAP){
-					sprintf(buffer+i2,"Dim hImage_%s_%s As HANDLE\r\n",pWindowInfo[i].name,pWindowInfo[i].pChildInfo[i3].IdName);
+	for(i=0;i<ProjectInfo.windowInfos.size();i++){
+		for(i3=0;i3<ProjectInfo.windowInfos[i].NumberOfChildWindows;i3++){
+			if(ProjectInfo.windowInfos[i].pChildInfo[i3].Control==CT_IMAGEBOX){
+				if((ProjectInfo.windowInfos[i].pChildInfo[i3].style&0x000F)==SS_ICON||
+					(ProjectInfo.windowInfos[i].pChildInfo[i3].style&0x000F)==SS_BITMAP){
+					sprintf(buffer+i2,"Dim hImage_%s_%s As HANDLE\r\n",ProjectInfo.windowInfos[i].name,ProjectInfo.windowInfos[i].pChildInfo[i3].IdName);
 					i2+=lstrlen(buffer+i2);
 
@@ -1148,7 +1154,7 @@
 	}
 
-	for(i=0;i<ProjectInfo.NumberOfWindows;i++){
+	for(i=0;i<ProjectInfo.windowInfos.size();i++){
 		//フォントハンドル解放
-		sprintf(buffer+i2,"\tDeleteObject(hFont_%s)\r\n",ProjectInfo.pWindowInfo[i].name);
+		sprintf(buffer+i2,"\tDeleteObject(hFont_%s)\r\n",ProjectInfo.windowInfos[i].name);
 		i2+=lstrlen(buffer+i2);
 
@@ -1162,8 +1168,8 @@
 	lstrcpy(buffer+i2,"\tDeleteObject(h3DFaceBrush)\r\n");
 	i2+=lstrlen(buffer+i2);
-	for(i=0;i<ProjectInfo.NumberOfWindows;i++){
-		if(pWindowInfo[i].bgColor<=0&&
-			pWindowInfo[i].bgColor!=-(int)RGB(255,255,255)&&
-			pWindowInfo[i].bgColor!=-(int)RGB(0,0,0)){
+	for(i=0;i<ProjectInfo.windowInfos.size();i++){
+		if(ProjectInfo.windowInfos[i].bgColor<=0&&
+			ProjectInfo.windowInfos[i].bgColor!=-(int)RGB(255,255,255)&&
+			ProjectInfo.windowInfos[i].bgColor!=-(int)RGB(0,0,0)){
 				sprintf(buffer+i2,"\tDeleteObject(_RadSys_hBackBrush%d)\r\n",i);
 				i2+=lstrlen(buffer+i2);
@@ -1178,5 +1184,5 @@
 
 
-	for(i=0;i<ProjectInfo.NumberOfWindows;i++){
+	for(i=0;i<ProjectInfo.windowInfos.size();i++){
 		if(i!=0){
 			lstrcpy(buffer+i2,"\r\n");
@@ -1191,5 +1197,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[i].name);
+		sprintf(buffer+i2,"Function EventCall_%s(hWnd As HWND, message As DWord, wParam As WPARAM, lParam As LPARAM) As LRESULT\r\n",ProjectInfo.windowInfos[i].name);
 		i2+=lstrlen(buffer+i2);
 
@@ -1229,5 +1235,5 @@
 			i2+=lstrlen(buffer+i2);
 			if(sw4){
-				sprintf(buffer+i2,"\t\t\t%s_Notify(ByVal (lParam As *NMHDR))\r\n",pWindowInfo[i].name);
+				sprintf(buffer+i2,"\t\t\t%s_Notify(ByVal (lParam As *NMHDR))\r\n",ProjectInfo.windowInfos[i].name);
 				i2+=lstrlen(buffer+i2);
 			}
@@ -1239,5 +1245,5 @@
 			i2+=lstrlen(buffer+i2);
 
-			if(GetNotifyCommandByItemMessage(&pWindowInfo[i],pItemEventInfo,buffer+i2,"\t\t\t\t")){
+			if(GetNotifyCommandByItemMessage(&ProjectInfo.windowInfos[i],pItemEventInfo,buffer+i2,"\t\t\t\t")){
 				i2+=lstrlen(buffer+i2);
 
@@ -1255,5 +1261,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[i].name);
+			sprintf(buffer+i2,"\t\t\t%s_Notify(ByVal (lParam As *NMHDR))\r\n",ProjectInfo.windowInfos[i].name);
 			i2+=lstrlen(buffer+i2);
 		}
@@ -1267,5 +1273,5 @@
 
 			//pItemEventInfoのIdName、EventNameメンバのメモリ解放はこの関数内で行う
-			GetCommandByItemMessage(&pWindowInfo[i],pItemEventInfo,buffer+i2,"\t\t\t\t");
+			GetCommandByItemMessage(&ProjectInfo.windowInfos[i],pItemEventInfo,buffer+i2,"\t\t\t\t");
 			i2+=lstrlen(buffer+i2);
 
@@ -1278,5 +1284,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[i].name);
+		sprintf(buffer+i2,"\t\t\tEventCall_%s=DefWindowProc(hWnd,message,wParam,lParam)\r\n",ProjectInfo.windowInfos[i].name);
 		i2+=lstrlen(buffer+i2);
 		lstrcpy(buffer+i2,"\t\t\tExit Function\r\n");
@@ -1286,5 +1292,5 @@
 		i2+=lstrlen(buffer+i2);
 
-		sprintf(buffer+i2,"\tEventCall_%s=0\r\n",pWindowInfo[i].name);
+		sprintf(buffer+i2,"\tEventCall_%s=0\r\n",ProjectInfo.windowInfos[i].name);
 		i2+=lstrlen(buffer+i2);
 		lstrcpy(buffer+i2,"End Function\r\n");
@@ -1338,47 +1344,47 @@
 	lstrcpy(buffer+i2,"\tDim hDlg As HWND\r\n");
 	i2+=lstrlen(buffer+i2);
-	for(i=0,sw1=0;i<ProjectInfo.NumberOfWindows;i++){
-		if(pWindowInfo[i].type==WNDTYPE_MODALDLG){
+	for(i=0,sw1=0;i<ProjectInfo.windowInfos.size();i++){
+		if(ProjectInfo.windowInfos[i].type==WNDTYPE_MODALDLG){
 			if(sw1==0){
-				sprintf(buffer+i2,"\tIf lstrcmp(TemplateName,\"%s\")=0 Then\r\n",pWindowInfo[i].name);
+				sprintf(buffer+i2,"\tIf lstrcmp(TemplateName,\"%s\")=0 Then\r\n",ProjectInfo.windowInfos[i].name);
 				i2+=lstrlen(buffer+i2);
 				sw1=1;
 			}
 			else{
-				sprintf(buffer+i2,"\tElseIf lstrcmp(TemplateName,\"%s\")=0 Then\r\n",pWindowInfo[i].name);
+				sprintf(buffer+i2,"\tElseIf lstrcmp(TemplateName,\"%s\")=0 Then\r\n",ProjectInfo.windowInfos[i].name);
 				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[i].HandleName,
-				pWindowInfo[i].ExStyle,
-				pWindowInfo[i].caption,
-				pWindowInfo[i].style,
-				pWindowInfo[i].pos.x,
-				pWindowInfo[i].pos.y,
-				pWindowInfo[i].size.cx,
-				pWindowInfo[i].size.cy,
-				pWindowInfo[i].id);
+				ProjectInfo.windowInfos[i].HandleName,
+				ProjectInfo.windowInfos[i].ExStyle,
+				ProjectInfo.windowInfos[i].caption,
+				ProjectInfo.windowInfos[i].style,
+				ProjectInfo.windowInfos[i].pos.x,
+				ProjectInfo.windowInfos[i].pos.y,
+				ProjectInfo.windowInfos[i].size.cx,
+				ProjectInfo.windowInfos[i].size.cy,
+				ProjectInfo.windowInfos[i].id);
 			i2+=lstrlen(buffer+i2);
 			sprintf(buffer+i2,"\t\thDlg=%s\r\n",
-				pWindowInfo[i].HandleName);
+				ProjectInfo.windowInfos[i].HandleName);
 			i2+=lstrlen(buffer+i2);
 			if(bAvailUserProc[i]){
 				sprintf(buffer+i2,"\t\tSetWindowLongPtr(%s,GWLP_WNDPROC,AddressOf(%s) As LONG_PTR)\r\n",
-					pWindowInfo[i].HandleName,
-					pWindowInfo[i].CallBackName);
+					ProjectInfo.windowInfos[i].HandleName,
+					ProjectInfo.windowInfos[i].CallBackName);
 			}
 			else{
 				sprintf(buffer+i2,"\t\tSetWindowLongPtr(%s,GWLP_WNDPROC,AddressOf(EventCall_%s) As LONG_PTR)\r\n",
-					pWindowInfo[i].HandleName,
-					pWindowInfo[i].name);
-			}
-			i2+=lstrlen(buffer+i2);
-			sprintf(buffer+i2,"\t\tSendMessage(%s,WM_INITDIALOG,0,0)\r\n",pWindowInfo[i].HandleName);
-			i2+=lstrlen(buffer+i2);
-			if(pWindowInfo[i].IconResName){
-				sprintf(buffer+i2,"\t\tSendMessage(%s,WM_SETICON,ICON_SMALL,LoadIcon(GetModuleHandle(0),MAKEINTRESOURCE(%s)) As LPARAM)\r\n",pWindowInfo[i].HandleName,pWindowInfo[i].IconResName);
+					ProjectInfo.windowInfos[i].HandleName,
+					ProjectInfo.windowInfos[i].name);
+			}
+			i2+=lstrlen(buffer+i2);
+			sprintf(buffer+i2,"\t\tSendMessage(%s,WM_INITDIALOG,0,0)\r\n",ProjectInfo.windowInfos[i].HandleName);
+			i2+=lstrlen(buffer+i2);
+			if(ProjectInfo.windowInfos[i].IconResName){
+				sprintf(buffer+i2,"\t\tSendMessage(%s,WM_SETICON,ICON_SMALL,LoadIcon(GetModuleHandle(0),MAKEINTRESOURCE(%s)) As LPARAM)\r\n",ProjectInfo.windowInfos[i].HandleName,ProjectInfo.windowInfos[i].IconResName);
 				i2+=lstrlen(buffer+i2);
 			}
-			sprintf(buffer+i2,"\t\tShowWindow(%s,SW_SHOW)\r\n",pWindowInfo[i].HandleName);
+			sprintf(buffer+i2,"\t\tShowWindow(%s,SW_SHOW)\r\n",ProjectInfo.windowInfos[i].HandleName);
 			i2+=lstrlen(buffer+i2);
 		}
@@ -1434,40 +1440,40 @@
 	lstrcpy(buffer+i2,"\r\nFunction CreateDialog(hOwnerWnd As HWND, TemplateName As LPSTR) As HWND\r\n");
 	i2+=lstrlen(buffer+i2);
-	for(i=0;i<ProjectInfo.NumberOfWindows;i++){
-		if(pWindowInfo[i].type==WNDTYPE_MODELESSDLG){
-			sprintf(buffer+i2,"\tIf lstrcmp(TemplateName,\"%s\")=0 Then\r\n",pWindowInfo[i].name);
+	for(i=0;i<ProjectInfo.windowInfos.size();i++){
+		if(ProjectInfo.windowInfos[i].type==WNDTYPE_MODELESSDLG){
+			sprintf(buffer+i2,"\tIf lstrcmp(TemplateName,\"%s\")=0 Then\r\n",ProjectInfo.windowInfos[i].name);
 			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[i].HandleName,
-				pWindowInfo[i].ExStyle,
-				pWindowInfo[i].caption,
-				pWindowInfo[i].style,
-				pWindowInfo[i].pos.x,
-				pWindowInfo[i].pos.y,
-				pWindowInfo[i].size.cx,
-				pWindowInfo[i].size.cy,
-				pWindowInfo[i].id);
-			i2+=lstrlen(buffer+i2);
-			sprintf(buffer+i2,"\t\tCreateDialog=%s\r\n",pWindowInfo[i].HandleName);
+				ProjectInfo.windowInfos[i].HandleName,
+				ProjectInfo.windowInfos[i].ExStyle,
+				ProjectInfo.windowInfos[i].caption,
+				ProjectInfo.windowInfos[i].style,
+				ProjectInfo.windowInfos[i].pos.x,
+				ProjectInfo.windowInfos[i].pos.y,
+				ProjectInfo.windowInfos[i].size.cx,
+				ProjectInfo.windowInfos[i].size.cy,
+				ProjectInfo.windowInfos[i].id);
+			i2+=lstrlen(buffer+i2);
+			sprintf(buffer+i2,"\t\tCreateDialog=%s\r\n",ProjectInfo.windowInfos[i].HandleName);
 			i2+=lstrlen(buffer+i2);
 			if(bAvailUserProc[i]){
 				sprintf(buffer+i2,"\t\tSetWindowLongPtr(%s,GWLP_WNDPROC,AddressOf(%s) As LONG_PTR)\r\n",
-					pWindowInfo[i].HandleName,
-					pWindowInfo[i].CallBackName);
+					ProjectInfo.windowInfos[i].HandleName,
+					ProjectInfo.windowInfos[i].CallBackName);
 			}
 			else{
 				sprintf(buffer+i2,"\t\tSetWindowLongPtr(%s,GWLP_WNDPROC,AddressOf(EventCall_%s) As LONG_PTR)\r\n",
-					pWindowInfo[i].HandleName,
-					pWindowInfo[i].name);
-			}
-			i2+=lstrlen(buffer+i2);
-			sprintf(buffer+i2,"\t\tSendMessage(%s,WM_INITDIALOG,0,0)\r\n",pWindowInfo[i].HandleName);
-			i2+=lstrlen(buffer+i2);
-			if(pWindowInfo[i].IconResName){
-				sprintf(buffer+i2,"\t\tSendMessage(%s,WM_SETICON,ICON_SMALL,LoadIcon(GetModuleHandle(0),MAKEINTRESOURCE(%s)) As LPARAM)\r\n",pWindowInfo[i].HandleName,pWindowInfo[i].IconResName);
+					ProjectInfo.windowInfos[i].HandleName,
+					ProjectInfo.windowInfos[i].name);
+			}
+			i2+=lstrlen(buffer+i2);
+			sprintf(buffer+i2,"\t\tSendMessage(%s,WM_INITDIALOG,0,0)\r\n",ProjectInfo.windowInfos[i].HandleName);
+			i2+=lstrlen(buffer+i2);
+			if(ProjectInfo.windowInfos[i].IconResName){
+				sprintf(buffer+i2,"\t\tSendMessage(%s,WM_SETICON,ICON_SMALL,LoadIcon(GetModuleHandle(0),MAKEINTRESOURCE(%s)) As LPARAM)\r\n",ProjectInfo.windowInfos[i].HandleName,ProjectInfo.windowInfos[i].IconResName);
 				i2+=lstrlen(buffer+i2);
 			}
-			sprintf(buffer+i2,"\tEnd If\r\n",pWindowInfo[i].name);
+			sprintf(buffer+i2,"\tEnd If\r\n",ProjectInfo.windowInfos[i].name);
 			i2+=lstrlen(buffer+i2);
 		}
@@ -1504,6 +1510,6 @@
 	i2+=lstrlen(buffer+i2);
 
-	for(i=0;i<ProjectInfo.NumberOfWindows;i++){
-		if(pWindowInfo[i].type==WNDTYPE_DEFAULT){
+	for(i=0;i<ProjectInfo.windowInfos.size();i++){
+		if(ProjectInfo.windowInfos[i].type==WNDTYPE_DEFAULT){
 			//////////////////////
 			//通常ウィンドウ作成
@@ -1512,5 +1518,5 @@
 			i2+=2;
 
-			if(pWindowInfo[i].IconResName==0){
+			if(ProjectInfo.windowInfos[i].IconResName==0){
 				lstrcpy(buffer+i2,"_RadSys_wcl.hIcon=LoadIcon(NULL,MAKEINTRESOURCE(IDI_APPLICATION))\r\n");
 				i2+=lstrlen(buffer+i2);
@@ -1519,7 +1525,7 @@
 			}
 			else{
-				sprintf(buffer+i2,"_RadSys_wcl.hIcon=LoadIcon(_RadSys_wcl.hInstance,MAKEINTRESOURCE(%s))\r\n",pWindowInfo[i].IconResName);
+				sprintf(buffer+i2,"_RadSys_wcl.hIcon=LoadIcon(_RadSys_wcl.hInstance,MAKEINTRESOURCE(%s))\r\n",ProjectInfo.windowInfos[i].IconResName);
 				i2+=lstrlen(buffer+i2);
-				sprintf(buffer+i2,"_RadSys_wcl.hIconSm=LoadIcon(_RadSys_wcl.hInstance,MAKEINTRESOURCE(%s))\r\n",pWindowInfo[i].IconResName);
+				sprintf(buffer+i2,"_RadSys_wcl.hIconSm=LoadIcon(_RadSys_wcl.hInstance,MAKEINTRESOURCE(%s))\r\n",ProjectInfo.windowInfos[i].IconResName);
 				i2+=lstrlen(buffer+i2);
 			}
@@ -1528,15 +1534,15 @@
 			i2+=lstrlen(buffer+i2);
 			if(bAvailUserProc[i])
-				sprintf(buffer+i2,"_RadSys_wcl.lpfnWndProc=AddressOf(%s)\r\n",pWindowInfo[i].CallBackName);
-			else sprintf(buffer+i2,"_RadSys_wcl.lpfnWndProc=AddressOf(EventCall_%s)\r\n",pWindowInfo[i].name);
-			i2+=lstrlen(buffer+i2);
-			if(pWindowInfo[i].bgColor==COLOR_3DFACE)
+				sprintf(buffer+i2,"_RadSys_wcl.lpfnWndProc=AddressOf(%s)\r\n",ProjectInfo.windowInfos[i].CallBackName);
+			else sprintf(buffer+i2,"_RadSys_wcl.lpfnWndProc=AddressOf(EventCall_%s)\r\n",ProjectInfo.windowInfos[i].name);
+			i2+=lstrlen(buffer+i2);
+			if(ProjectInfo.windowInfos[i].bgColor==COLOR_3DFACE)
 				lstrcpy(buffer+i2,"_RadSys_wcl.hbrBackground=h3DFaceBrush\r\n");
-			else if(pWindowInfo[i].bgColor==-(int)RGB(255,255,255))
+			else if(ProjectInfo.windowInfos[i].bgColor==-(int)RGB(255,255,255))
 				lstrcpy(buffer+i2,"_RadSys_wcl.hbrBackground=GetStockObject(WHITE_BRUSH)\r\n");
-			else if(pWindowInfo[i].bgColor==-(int)RGB(0,0,0))
+			else if(ProjectInfo.windowInfos[i].bgColor==-(int)RGB(0,0,0))
 				lstrcpy(buffer+i2,"_RadSys_wcl.hbrBackground=GetStockObject(BLACK_BRUSH)\r\n");
-			else if(pWindowInfo[i].bgColor<=0||
-				pWindowInfo[i].bgColor>=0x1000){
+			else if(ProjectInfo.windowInfos[i].bgColor<=0||
+				ProjectInfo.windowInfos[i].bgColor>=0x1000){
 				//色指定またはビットマップ
 				sprintf(buffer+i2,"_RadSys_wcl.hbrBackground=_RadSys_hBackBrush%d\r\n",i);
@@ -1546,12 +1552,12 @@
 			i2+=lstrlen(buffer+i2);
 			sprintf(buffer+i2,"CreateWindowEx(&H%08x,\"%s%d\",\"%s\",&H%08x,%d,%d,%d,%d,0,0,GetModuleHandle(0),0)\r\n",
-				pWindowInfo[i].ExStyle,
-				pWindowInfo[i].ClassName,i,
-				pWindowInfo[i].caption,
-				pWindowInfo[i].style,
-				pWindowInfo[i].pos.x,
-				pWindowInfo[i].pos.y,
-				pWindowInfo[i].size.cx,
-				pWindowInfo[i].size.cy);
+				ProjectInfo.windowInfos[i].ExStyle,
+				ProjectInfo.windowInfos[i].ClassName,i,
+				ProjectInfo.windowInfos[i].caption,
+				ProjectInfo.windowInfos[i].style,
+				ProjectInfo.windowInfos[i].pos.x,
+				ProjectInfo.windowInfos[i].pos.y,
+				ProjectInfo.windowInfos[i].size.cx,
+				ProjectInfo.windowInfos[i].size.cy);
 			i2+=lstrlen(buffer+i2);
 		}
@@ -1596,5 +1602,6 @@
 	return i2;
 }
-void SaveWindowFile(char *path,WINDOW_INFO *pWindowInfo,int NumberOfWindowInfo){
+void SaveWindowFile( char *path, const std::vector<WINDOW_INFO> &windowInfos )
+{
 	extern HANDLE hHeap;
 	extern MDIINFO MdiInfo[MAX_WNDNUM];
@@ -1605,70 +1612,70 @@
 	size=2;
 	buffer=(char *)HeapAlloc(hHeap,0,GENERAL_SIZE*size);
-	for(i=0,i2=0;i<NumberOfWindowInfo;i++){
-		sprintf(buffer+i2,"WINDOW:%s\r\n",pWindowInfo[i].name);
-		i2+=lstrlen(buffer+i2);
-		sprintf(buffer+i2,"    HANDLE    = %s\r\n",pWindowInfo[i].HandleName);
-		i2+=lstrlen(buffer+i2);
-		sprintf(buffer+i2,"    POINT     = %d,%d\r\n",pWindowInfo[i].pos.x,pWindowInfo[i].pos.y);
-		i2+=lstrlen(buffer+i2);
-		sprintf(buffer+i2,"    SIZE      = %d,%d\r\n",pWindowInfo[i].size.cx,pWindowInfo[i].size.cy);
-		i2+=lstrlen(buffer+i2);
-		sprintf(buffer+i2,"    CAPTION   = \"%s\"\r\n",pWindowInfo[i].caption);
-		i2+=lstrlen(buffer+i2);
-		sprintf(buffer+i2,"    STYLE     = &H%08x\r\n",pWindowInfo[i].style);
-		i2+=lstrlen(buffer+i2);
-		sprintf(buffer+i2,"    EXSTYLE   = &H%08x\r\n",pWindowInfo[i].ExStyle);
-		i2+=lstrlen(buffer+i2);
-		if(pWindowInfo[i].MenuID){
-			sprintf(buffer+i2,"    MENUID    = %s\r\n",pWindowInfo[i].MenuID);
-			i2+=lstrlen(buffer+i2);
-		}
-		sprintf(buffer+i2,"    ID        = %d\r\n",pWindowInfo[i].id);
-		i2+=lstrlen(buffer+i2);
-		sprintf(buffer+i2,"    BGCOLOR   = %d\r\n",pWindowInfo[i].bgColor);
+	for(i=0,i2=0;i<windowInfos.size();i++){
+		sprintf(buffer+i2,"WINDOW:%s\r\n",windowInfos[i].name);
+		i2+=lstrlen(buffer+i2);
+		sprintf(buffer+i2,"    HANDLE    = %s\r\n",windowInfos[i].HandleName);
+		i2+=lstrlen(buffer+i2);
+		sprintf(buffer+i2,"    POINT     = %d,%d\r\n",windowInfos[i].pos.x,windowInfos[i].pos.y);
+		i2+=lstrlen(buffer+i2);
+		sprintf(buffer+i2,"    SIZE      = %d,%d\r\n",windowInfos[i].size.cx,windowInfos[i].size.cy);
+		i2+=lstrlen(buffer+i2);
+		sprintf(buffer+i2,"    CAPTION   = \"%s\"\r\n",windowInfos[i].caption);
+		i2+=lstrlen(buffer+i2);
+		sprintf(buffer+i2,"    STYLE     = &H%08x\r\n",windowInfos[i].style);
+		i2+=lstrlen(buffer+i2);
+		sprintf(buffer+i2,"    EXSTYLE   = &H%08x\r\n",windowInfos[i].ExStyle);
+		i2+=lstrlen(buffer+i2);
+		if(windowInfos[i].MenuID){
+			sprintf(buffer+i2,"    MENUID    = %s\r\n",windowInfos[i].MenuID);
+			i2+=lstrlen(buffer+i2);
+		}
+		sprintf(buffer+i2,"    ID        = %d\r\n",windowInfos[i].id);
+		i2+=lstrlen(buffer+i2);
+		sprintf(buffer+i2,"    BGCOLOR   = %d\r\n",windowInfos[i].bgColor);
 		i2+=lstrlen(buffer+i2);
 		sprintf(buffer+i2,"    FONT      = %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,\"%s\"\r\n",
-			pWindowInfo[i].LogFont.lfHeight,
-			pWindowInfo[i].LogFont.lfWidth,
-			pWindowInfo[i].LogFont.lfEscapement,
-			pWindowInfo[i].LogFont.lfOrientation,
-			pWindowInfo[i].LogFont.lfWeight,
-			pWindowInfo[i].LogFont.lfItalic,
-			pWindowInfo[i].LogFont.lfUnderline,
-			pWindowInfo[i].LogFont.lfStrikeOut,
-			pWindowInfo[i].LogFont.lfCharSet,
-			pWindowInfo[i].LogFont.lfOutPrecision,
-			pWindowInfo[i].LogFont.lfClipPrecision,
-			pWindowInfo[i].LogFont.lfQuality,
-			pWindowInfo[i].LogFont.lfPitchAndFamily,
-			pWindowInfo[i].LogFont.lfFaceName);
-		i2+=lstrlen(buffer+i2);
-		if(pWindowInfo[i].IconResName){
-			sprintf(buffer+i2,"    ICONID    = %s\r\n",pWindowInfo[i].IconResName);
-			i2+=lstrlen(buffer+i2);
-		}
-		sprintf(buffer+i2,"    CLASS     = \"%s\"\r\n",pWindowInfo[i].ClassName);
-		i2+=lstrlen(buffer+i2);
-		sprintf(buffer+i2,"    CALLBACK  = %s\r\n",pWindowInfo[i].CallBackName);
-		i2+=lstrlen(buffer+i2);
-		sprintf(buffer+i2,"    TYPE      = %d\r\n",pWindowInfo[i].type);
-		i2+=lstrlen(buffer+i2);
-		sprintf(buffer+i2,"    FILEPATH  = %s\r\n",pWindowInfo[i].filepath);
-		i2+=lstrlen(buffer+i2);
-		for(i3=0;i3<pWindowInfo[i].NumberOfChildWindows;i3++){
-			temporary=SetCaptionSequence(pWindowInfo[i].pChildInfo[i3].caption);
+			windowInfos[i].LogFont.lfHeight,
+			windowInfos[i].LogFont.lfWidth,
+			windowInfos[i].LogFont.lfEscapement,
+			windowInfos[i].LogFont.lfOrientation,
+			windowInfos[i].LogFont.lfWeight,
+			windowInfos[i].LogFont.lfItalic,
+			windowInfos[i].LogFont.lfUnderline,
+			windowInfos[i].LogFont.lfStrikeOut,
+			windowInfos[i].LogFont.lfCharSet,
+			windowInfos[i].LogFont.lfOutPrecision,
+			windowInfos[i].LogFont.lfClipPrecision,
+			windowInfos[i].LogFont.lfQuality,
+			windowInfos[i].LogFont.lfPitchAndFamily,
+			windowInfos[i].LogFont.lfFaceName);
+		i2+=lstrlen(buffer+i2);
+		if(windowInfos[i].IconResName){
+			sprintf(buffer+i2,"    ICONID    = %s\r\n",windowInfos[i].IconResName);
+			i2+=lstrlen(buffer+i2);
+		}
+		sprintf(buffer+i2,"    CLASS     = \"%s\"\r\n",windowInfos[i].ClassName);
+		i2+=lstrlen(buffer+i2);
+		sprintf(buffer+i2,"    CALLBACK  = %s\r\n",windowInfos[i].CallBackName);
+		i2+=lstrlen(buffer+i2);
+		sprintf(buffer+i2,"    TYPE      = %d\r\n",windowInfos[i].type);
+		i2+=lstrlen(buffer+i2);
+		sprintf(buffer+i2,"    FILEPATH  = %s\r\n",windowInfos[i].filepath);
+		i2+=lstrlen(buffer+i2);
+		for(i3=0;i3<windowInfos[i].NumberOfChildWindows;i3++){
+			temporary=SetCaptionSequence(windowInfos[i].pChildInfo[i3].caption);
 			sprintf(buffer+i2,"    ITEM      = %s,%d,%d,%d,%d,\"%s\",&H%08x,&H%08x,%d",
-				pWindowInfo[i].pChildInfo[i3].IdName,
-				pWindowInfo[i].pChildInfo[i3].pos.x,pWindowInfo[i].pChildInfo[i3].pos.y,
-				pWindowInfo[i].pChildInfo[i3].size.cx,pWindowInfo[i].pChildInfo[i3].size.cy,
+				windowInfos[i].pChildInfo[i3].IdName,
+				windowInfos[i].pChildInfo[i3].pos.x,windowInfos[i].pChildInfo[i3].pos.y,
+				windowInfos[i].pChildInfo[i3].size.cx,windowInfos[i].pChildInfo[i3].size.cy,
 				temporary,
-				pWindowInfo[i].pChildInfo[i3].style,
-				pWindowInfo[i].pChildInfo[i3].ExStyle,
-				pWindowInfo[i].pChildInfo[i3].Control
+				windowInfos[i].pChildInfo[i3].style,
+				windowInfos[i].pChildInfo[i3].ExStyle,
+				windowInfos[i].pChildInfo[i3].Control
 			);
 			i2+=lstrlen(buffer+i2);
 			HeapDefaultFree(temporary);
-			if(pWindowInfo[i].pChildInfo[i3].Control==CT_IMAGEBOX){
-				sprintf(buffer+i2,",%d,\"%s\"",pWindowInfo[i].pChildInfo[i3].ImageCtrlInfo.type,pWindowInfo[i].pChildInfo[i3].ImageCtrlInfo.path);
+			if(windowInfos[i].pChildInfo[i3].Control==CT_IMAGEBOX){
+				sprintf(buffer+i2,",%d,\"%s\"",windowInfos[i].pChildInfo[i3].ImageCtrlInfo.type,windowInfos[i].pChildInfo[i3].ImageCtrlInfo.path);
 				i2+=lstrlen(buffer+i2);
 			}
@@ -1680,5 +1687,5 @@
 			}
 		}
-		sprintf(buffer+i2,"END\r\n",pWindowInfo[i].name);
+		sprintf(buffer+i2,"END\r\n",windowInfos[i].name);
 		i2+=lstrlen(buffer+i2);
 		if(i2-GENERAL_SIZE<GENERAL_SIZE){
@@ -1691,5 +1698,5 @@
 		i2+=lstrlen(buffer+i2);
 		i2+=GetSaveMenuData(buffer+i2,1,ProjectInfo.pMenuInfo[i].pMenuInfo,ProjectInfo.pMenuInfo[i].NumberOfMenu);
-		sprintf(buffer+i2,"END\r\n",pWindowInfo[i].name);
+		sprintf(buffer+i2,"END\r\n",windowInfos[i].name);
 		i2+=lstrlen(buffer+i2);
 		if(i2-GENERAL_SIZE<GENERAL_SIZE){
@@ -1814,6 +1821,5 @@
 	ProjectInfo.pMenuInfo=(MENU_INFO *)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,1);
 
-	ProjectInfo.NumberOfWindows=0;
-	ProjectInfo.pWindowInfo=(WINDOW_INFO *)HeapAlloc(hHeap,0,1);
+	ProjectInfo.windowInfos.clear();
 
 	for(i=0,i3=0;;i++){
@@ -1850,124 +1856,122 @@
 			//ウィンドウ
 			if(lstrcmpi(temporary,"WINDOW")==0&&i3==0){
-				ProjectInfo.NumberOfWindows++;
-				ProjectInfo.pWindowInfo=(WINDOW_INFO *)HeapReAlloc(hHeap,HEAP_ZERO_MEMORY,ProjectInfo.pWindowInfo,ProjectInfo.NumberOfWindows*sizeof(WINDOW_INFO));
-				i4=ProjectInfo.NumberOfWindows-1;
+				ProjectInfo.windowInfos.push_back( WINDOW_INFO() );
 				i3=1;
 
-				ProjectInfo.pWindowInfo[i4].name=(char *)HeapAlloc(hHeap,0,i2+1);
-				lstrcpy(ProjectInfo.pWindowInfo[i4].name,temp2);
-
-				ProjectInfo.pWindowInfo[i4].NumberOfChildWindows=0;
-				ProjectInfo.pWindowInfo[i4].pChildInfo=(CHILDINFO *)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,1);
+				ProjectInfo.windowInfos.back().name=(char *)HeapAlloc(hHeap,0,i2+1);
+				lstrcpy(ProjectInfo.windowInfos.back().name,temp2);
+
+				ProjectInfo.windowInfos.back().NumberOfChildWindows=0;
+				ProjectInfo.windowInfos.back().pChildInfo=(CHILDINFO *)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,1);
 			}
 			else if(lstrcmpi(temporary,"HANDLE")==0&&i3==1){
-				ProjectInfo.pWindowInfo[i4].HandleName=(char *)HeapAlloc(hHeap,0,i2+1);
-				lstrcpy(ProjectInfo.pWindowInfo[i4].HandleName,temp2);
+				ProjectInfo.windowInfos.back().HandleName=(char *)HeapAlloc(hHeap,0,i2+1);
+				lstrcpy(ProjectInfo.windowInfos.back().HandleName,temp2);
 			}
 			else if(lstrcmpi(temporary,"POINT")==0&&i3==1){
 				sscanf(temp2,"%d,%d",
-					&ProjectInfo.pWindowInfo[i4].pos.x,
-					&ProjectInfo.pWindowInfo[i4].pos.y);
-				if(ProjectInfo.pWindowInfo[i4].pos.x==-1) ProjectInfo.pWindowInfo[i4].pos.x=CW_USEDEFAULT;
-				if(ProjectInfo.pWindowInfo[i4].pos.y==-1) ProjectInfo.pWindowInfo[i4].pos.y=CW_USEDEFAULT;
+					&ProjectInfo.windowInfos.back().pos.x,
+					&ProjectInfo.windowInfos.back().pos.y);
+				if(ProjectInfo.windowInfos.back().pos.x==-1) ProjectInfo.windowInfos.back().pos.x=CW_USEDEFAULT;
+				if(ProjectInfo.windowInfos.back().pos.y==-1) ProjectInfo.windowInfos.back().pos.y=CW_USEDEFAULT;
 			}
 			else if(lstrcmpi(temporary,"SIZE")==0&&i3==1){
 				sscanf(temp2,"%d,%d",
-					&ProjectInfo.pWindowInfo[i4].size.cx,
-					&ProjectInfo.pWindowInfo[i4].size.cy);
+					&ProjectInfo.windowInfos.back().size.cx,
+					&ProjectInfo.windowInfos.back().size.cy);
 			}
 			else if(lstrcmpi(temporary,"CAPTION")==0&&i3==1){
 				if(temp2[0]=='\"'&&temp2[lstrlen(temp2)-1]=='\"'){
 					temp2[lstrlen(temp2)-1]=0;
-					ProjectInfo.pWindowInfo[i4].caption=(char *)HeapAlloc(hHeap,0,i2+1);
-					lstrcpy(ProjectInfo.pWindowInfo[i4].caption,temp2+1);
+					ProjectInfo.windowInfos.back().caption=(char *)HeapAlloc(hHeap,0,i2+1);
+					lstrcpy(ProjectInfo.windowInfos.back().caption,temp2+1);
 				}
 			}
-			else if(lstrcmpi(temporary,"STYLE")==0&&i3==1) ProjectInfo.pWindowInfo[i4].style=GetValue(temp2);
-			else if(lstrcmpi(temporary,"EXSTYLE")==0&&i3==1) ProjectInfo.pWindowInfo[i4].ExStyle=GetValue(temp2);
+			else if(lstrcmpi(temporary,"STYLE")==0&&i3==1) ProjectInfo.windowInfos.back().style=GetValue(temp2);
+			else if(lstrcmpi(temporary,"EXSTYLE")==0&&i3==1) ProjectInfo.windowInfos.back().ExStyle=GetValue(temp2);
 			else if(lstrcmpi(temporary,"MENUID")==0&&i3==1){
-				ProjectInfo.pWindowInfo[i4].MenuID=(char *)HeapAlloc(hHeap,0,i2+1);
-				lstrcpy(ProjectInfo.pWindowInfo[i4].MenuID,temp2);
-			}
-			else if(lstrcmpi(temporary,"ID")==0&&i3==1) ProjectInfo.pWindowInfo[i4].id=GetValue(temp2);
+				ProjectInfo.windowInfos.back().MenuID=(char *)HeapAlloc(hHeap,0,i2+1);
+				lstrcpy(ProjectInfo.windowInfos.back().MenuID,temp2);
+			}
+			else if(lstrcmpi(temporary,"ID")==0&&i3==1) ProjectInfo.windowInfos.back().id=GetValue(temp2);
 			else if(lstrcmpi(temporary,"BGCOLOR")==0&&i3==1){
-				ProjectInfo.pWindowInfo[i4].bgColor=GetValue(temp2);
+				ProjectInfo.windowInfos.back().bgColor=GetValue(temp2);
 				if(ProjectInfo.dwVersion<=3){
 					//プロジェクトバージョンが3以前のときは新値に変換する
-					if(ProjectInfo.pWindowInfo[i4].bgColor==-1)
-						ProjectInfo.pWindowInfo[i4].bgColor=-(int)RGB(255,255,255);
+					if(ProjectInfo.windowInfos.back().bgColor==-1)
+						ProjectInfo.windowInfos.back().bgColor=-(int)RGB(255,255,255);
 				}
 			}
 			else if(lstrcmpi(temporary,"FONT")==0&&i3==1){
 				i5=GetOneParameter(temp2,0,temp3);
-				ProjectInfo.pWindowInfo[i4].LogFont.lfHeight=GetValue(temp3);
+				ProjectInfo.windowInfos.back().LogFont.lfHeight=GetValue(temp3);
 
 				i5=GetOneParameter(temp2,i5,temp3);
-				ProjectInfo.pWindowInfo[i4].LogFont.lfWidth=GetValue(temp3);
+				ProjectInfo.windowInfos.back().LogFont.lfWidth=GetValue(temp3);
 
 				i5=GetOneParameter(temp2,i5,temp3);
-				ProjectInfo.pWindowInfo[i4].LogFont.lfEscapement=GetValue(temp3);
+				ProjectInfo.windowInfos.back().LogFont.lfEscapement=GetValue(temp3);
 
 				i5=GetOneParameter(temp2,i5,temp3);
-				ProjectInfo.pWindowInfo[i4].LogFont.lfOrientation=GetValue(temp3);
+				ProjectInfo.windowInfos.back().LogFont.lfOrientation=GetValue(temp3);
 
 				i5=GetOneParameter(temp2,i5,temp3);
-				ProjectInfo.pWindowInfo[i4].LogFont.lfWeight=GetValue(temp3);
+				ProjectInfo.windowInfos.back().LogFont.lfWeight=GetValue(temp3);
 
 				i5=GetOneParameter(temp2,i5,temp3);
-				ProjectInfo.pWindowInfo[i4].LogFont.lfItalic=(BYTE)GetValue(temp3);
+				ProjectInfo.windowInfos.back().LogFont.lfItalic=(BYTE)GetValue(temp3);
 
 				i5=GetOneParameter(temp2,i5,temp3);
-				ProjectInfo.pWindowInfo[i4].LogFont.lfUnderline=(BYTE)GetValue(temp3);
+				ProjectInfo.windowInfos.back().LogFont.lfUnderline=(BYTE)GetValue(temp3);
 
 				i5=GetOneParameter(temp2,i5,temp3);
-				ProjectInfo.pWindowInfo[i4].LogFont.lfStrikeOut=(BYTE)GetValue(temp3);
+				ProjectInfo.windowInfos.back().LogFont.lfStrikeOut=(BYTE)GetValue(temp3);
 
 				i5=GetOneParameter(temp2,i5,temp3);
-				ProjectInfo.pWindowInfo[i4].LogFont.lfCharSet=(BYTE)GetValue(temp3);
+				ProjectInfo.windowInfos.back().LogFont.lfCharSet=(BYTE)GetValue(temp3);
 
 				i5=GetOneParameter(temp2,i5,temp3);
-				ProjectInfo.pWindowInfo[i4].LogFont.lfOutPrecision=(BYTE)GetValue(temp3);
+				ProjectInfo.windowInfos.back().LogFont.lfOutPrecision=(BYTE)GetValue(temp3);
 
 				i5=GetOneParameter(temp2,i5,temp3);
-				ProjectInfo.pWindowInfo[i4].LogFont.lfClipPrecision=(BYTE)GetValue(temp3);
+				ProjectInfo.windowInfos.back().LogFont.lfClipPrecision=(BYTE)GetValue(temp3);
 
 				i5=GetOneParameter(temp2,i5,temp3);
-				ProjectInfo.pWindowInfo[i4].LogFont.lfQuality=(BYTE)GetValue(temp3);
+				ProjectInfo.windowInfos.back().LogFont.lfQuality=(BYTE)GetValue(temp3);
 
 				i5=GetOneParameter(temp2,i5,temp3);
-				ProjectInfo.pWindowInfo[i4].LogFont.lfPitchAndFamily=(BYTE)GetValue(temp3);
+				ProjectInfo.windowInfos.back().LogFont.lfPitchAndFamily=(BYTE)GetValue(temp3);
 
 				i5=GetOneParameter(temp2,i5,temp3);
 				RemoveStringQuotes(temp3);
-				lstrcpy(ProjectInfo.pWindowInfo[i4].LogFont.lfFaceName,temp3);
+				lstrcpy(ProjectInfo.windowInfos.back().LogFont.lfFaceName,temp3);
 			}
 			else if(lstrcmpi(temporary,"ICONID")==0&&i3==1){
-				ProjectInfo.pWindowInfo[i4].IconResName=(char *)HeapAlloc(hHeap,0,i2+1);
-				lstrcpy(ProjectInfo.pWindowInfo[i4].IconResName,temp2);
+				ProjectInfo.windowInfos.back().IconResName=(char *)HeapAlloc(hHeap,0,i2+1);
+				lstrcpy(ProjectInfo.windowInfos.back().IconResName,temp2);
 			}
 			else if(lstrcmpi(temporary,"CLASS")==0&&i3==1){
 				if(temp2[0]=='\"'&&temp2[lstrlen(temp2)-1]=='\"'){
 					temp2[lstrlen(temp2)-1]=0;
-					ProjectInfo.pWindowInfo[i4].ClassName=(char *)HeapAlloc(hHeap,0,i2+1);
-					lstrcpy(ProjectInfo.pWindowInfo[i4].ClassName,temp2+1);
+					ProjectInfo.windowInfos.back().ClassName=(char *)HeapAlloc(hHeap,0,i2+1);
+					lstrcpy(ProjectInfo.windowInfos.back().ClassName,temp2+1);
 				}
 			}
 			else if(lstrcmpi(temporary,"CALLBACK")==0&&i3==1){
-				ProjectInfo.pWindowInfo[i4].CallBackName=(char *)HeapAlloc(hHeap,0,i2+1);
-				lstrcpy(ProjectInfo.pWindowInfo[i4].CallBackName,temp2);
+				ProjectInfo.windowInfos.back().CallBackName=(char *)HeapAlloc(hHeap,0,i2+1);
+				lstrcpy(ProjectInfo.windowInfos.back().CallBackName,temp2);
 			}
 
 			//以前のバージョンとの互換用
-			else if(lstrcmpi(temporary,"DLGTMP")==0&&i3==1) ProjectInfo.pWindowInfo[i4].type=GetValue(temp2);
-
-			else if(lstrcmpi(temporary,"TYPE")==0&&i3==1) ProjectInfo.pWindowInfo[i4].type=GetValue(temp2);
+			else if(lstrcmpi(temporary,"DLGTMP")==0&&i3==1) ProjectInfo.windowInfos.back().type=GetValue(temp2);
+
+			else if(lstrcmpi(temporary,"TYPE")==0&&i3==1) ProjectInfo.windowInfos.back().type=GetValue(temp2);
 			else if(lstrcmpi(temporary,"FILEPATH")==0&&i3==1){
-				ProjectInfo.pWindowInfo[i4].filepath=(char *)HeapAlloc(hHeap,0,i2+1);
-				lstrcpy(ProjectInfo.pWindowInfo[i4].filepath,temp2);
+				ProjectInfo.windowInfos.back().filepath=(char *)HeapAlloc(hHeap,0,i2+1);
+				lstrcpy(ProjectInfo.windowInfos.back().filepath,temp2);
 			}
 			else if(lstrcmpi(temporary,"ITEM")==0&&i3==1){
-				ProjectInfo.pWindowInfo[i4].pChildInfo=(CHILDINFO *)HeapReAlloc(hHeap,HEAP_ZERO_MEMORY,ProjectInfo.pWindowInfo[i4].pChildInfo,(ProjectInfo.pWindowInfo[i4].NumberOfChildWindows+1)*sizeof(CHILDINFO));
-				pChildInfo=&ProjectInfo.pWindowInfo[i4].pChildInfo[ProjectInfo.pWindowInfo[i4].NumberOfChildWindows];
+				ProjectInfo.windowInfos.back().pChildInfo=(CHILDINFO *)HeapReAlloc(hHeap,HEAP_ZERO_MEMORY,ProjectInfo.windowInfos.back().pChildInfo,(ProjectInfo.windowInfos.back().NumberOfChildWindows+1)*sizeof(CHILDINFO));
+				pChildInfo=&ProjectInfo.windowInfos.back().pChildInfo[ProjectInfo.windowInfos.back().NumberOfChildWindows];
 
 				//ID
@@ -2015,5 +2019,5 @@
 				}
 
-				ProjectInfo.pWindowInfo[i4].NumberOfChildWindows++;
+				ProjectInfo.windowInfos.back().NumberOfChildWindows++;
 			}
 
@@ -2154,20 +2158,20 @@
 		return;
 	}
-	for(i=0;i<ProjectInfo.NumberOfWindows;i++){
-		if(lstrcmpi(NewWindow.name,ProjectInfo.pWindowInfo[i].name)==0){
+	for(i=0;i<ProjectInfo.windowInfos.size();i++){
+		if(lstrcmpi(NewWindow.name,ProjectInfo.windowInfos[i].name)==0){
 			//"\"%s\" ウィンドウは既にプロジェクト内に存在します。"
-			sprintf(temporary,STRING_DUPLICATIONERROR_WINDOW_IN_PROJECT,ProjectInfo.pWindowInfo[i].name);
+			sprintf(temporary,STRING_DUPLICATIONERROR_WINDOW_IN_PROJECT,ProjectInfo.windowInfos[i].name);
 			MessageBox(hOwner,temporary,STRING_ERROR,MB_OK|MB_ICONEXCLAMATION);
 			return;
 		}
-		if(lstrcmpi(NewWindow.HandleName,ProjectInfo.pWindowInfo[i].HandleName)==0){
+		if(lstrcmpi(NewWindow.HandleName,ProjectInfo.windowInfos[i].HandleName)==0){
 			//"\"%s\" ハンドルは既にプロジェクト内に存在します。"
-			sprintf(temporary,STRING_DUPLICATIONERROR_HANDLE_IN_PROJECT,ProjectInfo.pWindowInfo[i].HandleName);
+			sprintf(temporary,STRING_DUPLICATIONERROR_HANDLE_IN_PROJECT,ProjectInfo.windowInfos[i].HandleName);
 			MessageBox(hOwner,temporary,STRING_ERROR,MB_OK|MB_ICONEXCLAMATION);
 			return;
 		}
-		if(lstrcmpi(NewWindow.CallBackName,ProjectInfo.pWindowInfo[i].CallBackName)==0){
+		if(lstrcmpi(NewWindow.CallBackName,ProjectInfo.windowInfos[i].CallBackName)==0){
 			//"\"%s\" プロシージャは既にプロジェクト内に存在します。"
-			sprintf(temporary,STRING_DUPLICATIONERROR_PROC_IN_PROJECT,ProjectInfo.pWindowInfo[i].CallBackName);
+			sprintf(temporary,STRING_DUPLICATIONERROR_PROC_IN_PROJECT,ProjectInfo.windowInfos[i].CallBackName);
 			MessageBox(hOwner,temporary,STRING_ERROR,MB_OK|MB_ICONEXCLAMATION);
 			return;
@@ -2175,28 +2179,28 @@
 	}
 
-	//ProjectInfo.pWindowInfo構造体に追加
-	ProjectInfo.pWindowInfo=(WINDOW_INFO *)HeapReAlloc(hHeap,0,ProjectInfo.pWindowInfo,(ProjectInfo.NumberOfWindows+1)*sizeof(WINDOW_INFO));
+	//ProjectInfo.windowInfos構造体コレクションに追加
+	ProjectInfo.windowInfos.push_back( WINDOW_INFO() );
 
 
 	///////////////////////////////////////
-	//ProjectInfo.pWindowInfo構造体を設定
+	//ProjectInfo.windowInfos構造体を設定
 
 	//ウィンドウ名
-	ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].name=(char *)HeapAlloc(hHeap,0,lstrlen(NewWindow.name)+1);
-	lstrcpy(ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].name,NewWindow.name);
+	ProjectInfo.windowInfos.back().name=(char *)HeapAlloc(hHeap,0,lstrlen(NewWindow.name)+1);
+	lstrcpy(ProjectInfo.windowInfos.back().name,NewWindow.name);
 
 	//ハンドル名
-	ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].HandleName=(char *)HeapAlloc(hHeap,0,lstrlen(NewWindow.HandleName)+1);
-	lstrcpy(ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].HandleName,NewWindow.HandleName);
+	ProjectInfo.windowInfos.back().HandleName=(char *)HeapAlloc(hHeap,0,lstrlen(NewWindow.HandleName)+1);
+	lstrcpy(ProjectInfo.windowInfos.back().HandleName,NewWindow.HandleName);
 
 	//位置情報
-	ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].pos.x=-1;
-	ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].pos.y=-1;
-	ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].size.cx=480;
-	ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].size.cy=360;
+	ProjectInfo.windowInfos.back().pos.x=-1;
+	ProjectInfo.windowInfos.back().pos.y=-1;
+	ProjectInfo.windowInfos.back().size.cx=480;
+	ProjectInfo.windowInfos.back().size.cy=360;
 
 	//ウィンドウテキスト
-	ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].caption=(char *)HeapAlloc(hHeap,0,lstrlen(NewWindow.name)+1);
-	lstrcpy(ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].caption,NewWindow.name);
+	ProjectInfo.windowInfos.back().caption=(char *)HeapAlloc(hHeap,0,lstrlen(NewWindow.name)+1);
+	lstrcpy(ProjectInfo.windowInfos.back().caption,NewWindow.name);
 
 	//スタイル
@@ -2204,52 +2208,52 @@
 		case WNDTYPE_DEFAULT:
 			//通常ウィンドウ
-			ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].style=WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX;
+			ProjectInfo.windowInfos.back().style=WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX;
 			break;
 		case WNDTYPE_MODALDLG:
 		case WNDTYPE_MODELESSDLG:
 			//ダイアログ テンプレート（最大化、最小化ボタンをなくして、細枠にする）
-			ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].style=WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU;
+			ProjectInfo.windowInfos.back().style=WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU;
 			break;
 	}
 
 	//拡張スタイル
-	ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].ExStyle=0;
+	ProjectInfo.windowInfos.back().ExStyle=0;
 
 	//メニュー
-	ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].MenuID=0;
+	ProjectInfo.windowInfos.back().MenuID=0;
 
 	//ID
-	ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].id=0;
+	ProjectInfo.windowInfos.back().id=0;
 
 	//背景色
-	ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].bgColor=COLOR_3DFACE;
+	ProjectInfo.windowInfos.back().bgColor=COLOR_3DFACE;
 
 	//フォント
-	GetDefaultWindowFont(&ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].LogFont);
+	GetDefaultWindowFont(&ProjectInfo.windowInfos.back().LogFont);
 
 	//アイコン
-	ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].IconResName=0;
+	ProjectInfo.windowInfos.back().IconResName=0;
 
 	//クラス名
 	lstrcpy(temporary,"NORMAL");
-	ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].ClassName=(char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
-	lstrcpy(ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].ClassName,temporary);
+	ProjectInfo.windowInfos.back().ClassName=(char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
+	lstrcpy(ProjectInfo.windowInfos.back().ClassName,temporary);
 
 	//コールバック関数名
-	ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].CallBackName=(char *)HeapAlloc(hHeap,0,lstrlen(NewWindow.CallBackName)+1);
-	lstrcpy(ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].CallBackName,NewWindow.CallBackName);
+	ProjectInfo.windowInfos.back().CallBackName=(char *)HeapAlloc(hHeap,0,lstrlen(NewWindow.CallBackName)+1);
+	lstrcpy(ProjectInfo.windowInfos.back().CallBackName,NewWindow.CallBackName);
 
 	//タイプ識別
-	ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].type=NewWindow.type;
+	ProjectInfo.windowInfos.back().type=NewWindow.type;
 
 	//子ウィンドウ情報
-	ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].NumberOfChildWindows=0;
-	ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].pChildInfo=(CHILDINFO *)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,1);
+	ProjectInfo.windowInfos.back().NumberOfChildWindows=0;
+	ProjectInfo.windowInfos.back().pChildInfo=(CHILDINFO *)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,1);
 
 
 	//メッセージ処理ファイル名
-	sprintf(temporary,"%s.ab",ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].name);
-	ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].filepath=(char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
-	lstrcpy(ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].filepath,temporary);
+	sprintf(temporary,"%s.ab",ProjectInfo.windowInfos.back().name);
+	ProjectInfo.windowInfos.back().filepath=(char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
+	lstrcpy(ProjectInfo.windowInfos.back().filepath,temporary);
 
 
@@ -2269,5 +2273,5 @@
 		NewWindow.CallBackName);
 
-	sprintf(temporary,"%s%s.ab",ProjectInfo.dir,ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].name);
+	sprintf(temporary,"%s%s.ab",ProjectInfo.dir,ProjectInfo.windowInfos.back().name);
 
 	//書き込み
@@ -2288,15 +2292,14 @@
 	tv.item.iSelectedImage=2;
 	tv.hParent=ProjectInfo.hWindowTreeItem;
-	tv.item.pszText=ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].name;
-
-	ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].hTreeItem=TreeView_InsertItem(hMaterialTreeView,&tv);
-
-	TreeView_SelectItem(hMaterialTreeView,ProjectInfo.pWindowInfo[ProjectInfo.NumberOfWindows].hTreeItem);
-
-
-	ProjectInfo.NumberOfWindows++;
+	tv.item.pszText=ProjectInfo.windowInfos.back().name;
+
+	ProjectInfo.windowInfos.back().hTreeItem=TreeView_InsertItem(hMaterialTreeView,&tv);
+
+	TreeView_SelectItem(hMaterialTreeView,ProjectInfo.windowInfos.back().hTreeItem);
+
+
 	ProjectInfo.ModifyOfMaterial=1;
 
-	NewRadWindow(ProjectInfo.NumberOfWindows-1);
+	NewRadWindow(ProjectInfo.windowInfos.size()-1);
 }
 void Project_Window_Delete(int WndInfoNum){
@@ -2306,7 +2309,9 @@
 	int i;
 
+	WINDOW_INFO *pWindowInfo = &ProjectInfo.windowInfos[WndInfoNum];
+
 	//ウィンドウが開かれている場合は閉じる
 	for(i=0;i<MAX_WNDNUM;i++){
-		if(MdiInfo[i].hwnd&&lstrcmpi(ProjectInfo.pWindowInfo[WndInfoNum].name,MdiInfo[i].path)==0){
+		if(MdiInfo[i].hwnd&&lstrcmpi(pWindowInfo->name,MdiInfo[i].path)==0){
 			SendMessage(MdiInfo[i].hwnd,WM_CLOSE,0,0);
 			break;
@@ -2315,27 +2320,28 @@
 
 	//ウィンドウ情報のメモリを解放
-	HeapDefaultFree(ProjectInfo.pWindowInfo[WndInfoNum].name);
-	HeapDefaultFree(ProjectInfo.pWindowInfo[WndInfoNum].filepath);
-	HeapDefaultFree(ProjectInfo.pWindowInfo[WndInfoNum].HandleName);
-	HeapDefaultFree(ProjectInfo.pWindowInfo[WndInfoNum].caption);
-	HeapDefaultFree(ProjectInfo.pWindowInfo[WndInfoNum].ClassName);
-	HeapDefaultFree(ProjectInfo.pWindowInfo[WndInfoNum].CallBackName);
+	HeapDefaultFree(pWindowInfo->name);
+	HeapDefaultFree(pWindowInfo->filepath);
+	HeapDefaultFree(pWindowInfo->HandleName);
+	HeapDefaultFree(pWindowInfo->caption);
+	HeapDefaultFree(pWindowInfo->ClassName);
+	HeapDefaultFree(pWindowInfo->CallBackName);
 
 	//子ウィンドウのメモリを解放
-	for(i=0;i<ProjectInfo.pWindowInfo[WndInfoNum].NumberOfChildWindows;i++){
-		HeapDefaultFree(ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[i].IdName);
-		HeapDefaultFree(ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo[i].caption);
-	}
-	HeapDefaultFree(ProjectInfo.pWindowInfo[WndInfoNum].pChildInfo);
+	for(i=0;i<pWindowInfo->NumberOfChildWindows;i++){
+		HeapDefaultFree(pWindowInfo->pChildInfo[i].IdName);
+		HeapDefaultFree(pWindowInfo->pChildInfo[i].caption);
+	}
+	HeapDefaultFree(pWindowInfo->pChildInfo);
 
 	//ツリービューから削除
 	extern HWND hMaterialTreeView;
-	TreeView_DeleteItem(hMaterialTreeView,ProjectInfo.pWindowInfo[WndInfoNum].hTreeItem);
-
-	//ProjectInfo.pWindowInfo構造体から削除
-	ProjectInfo.NumberOfWindows--;
-	for(i=WndInfoNum;i<ProjectInfo.NumberOfWindows;i++) ProjectInfo.pWindowInfo[i]=ProjectInfo.pWindowInfo[i+1];
-	if(ProjectInfo.NumberOfWindows==0) ProjectInfo.pWindowInfo=(WINDOW_INFO *)HeapReAlloc(hHeap,0,ProjectInfo.pWindowInfo,1);
-	else ProjectInfo.pWindowInfo=(WINDOW_INFO *)HeapReAlloc(hHeap,0,ProjectInfo.pWindowInfo,ProjectInfo.NumberOfWindows*sizeof(WINDOW_INFO));
+	TreeView_DeleteItem(hMaterialTreeView,pWindowInfo->hTreeItem);
+
+	//ProjectInfo.windowInfos構造体から削除
+	std::vector<WINDOW_INFO>::iterator it = ProjectInfo.windowInfos.begin();
+	for( int i=0; i!=WndInfoNum ;i++, it++ )
+	{
+	}
+	ProjectInfo.windowInfos.erase( it );
 
 	ProjectInfo.ModifyOfMaterial=1;
