Changeset 624 in dev for trunk/ab5.0/abdev/abdev/WindowControl.cpp
- Timestamp:
- May 23, 2008, 10:35:36 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ab5.0/abdev/abdev/WindowControl.cpp
r623 r624 19 19 return -1; 20 20 } 21 WindowInfo *GetWndInfo( char *name )21 ActiveBasic::PM::WindowInfo *GetWndInfo( char *name ) 22 22 { 23 BOOST_FOREACH( WindowInfo *pWindowInfo, projectInfo.windowInfos )23 BOOST_FOREACH( ActiveBasic::PM::WindowInfo *pWindowInfo, projectInfo.windowInfos ) 24 24 { 25 25 if(lstrcmpi(name,pWindowInfo->GetName().c_str())==0) return pWindowInfo; … … 65 65 66 66 HGLOBAL Rad_GetChildInfoClipboardData(int WndNum,int WndInfoNum){ 67 //C HILDINFO構造体をクリップボード用データ(pByteが示すバッファ)に変換する67 //ChildWindowInfo構造体をクリップボード用データ(pByteが示すバッファ)に変換する 68 68 extern MDIINFO MdiInfo[MAX_WNDNUM]; 69 69 HGLOBAL hGlobal; … … 85 85 86 86 for(i3--;i3>=0;i3--){ 87 CHILDINFO*pChildInfo = projectInfo.windowInfos[WndInfoNum]->childWindowInfos[MdiInfo[WndNum].MdiRadInfo->SelectingItem[i3]];88 89 MemSize+= lstrlen(pChildInfo->IdName)+1+87 ActiveBasic::PM::ChildWindowInfo *pChildInfo = projectInfo.windowInfos[WndInfoNum]->childWindowInfos[MdiInfo[WndNum].MdiRadInfo->SelectingItem[i3]]; 88 89 MemSize+=pChildInfo->GetName().size()+1+ 90 90 sizeof(POINT)+ 91 91 sizeof(SIZE)+ 92 lstrlen(pChildInfo->caption)+1+92 pChildInfo->GetCaption().size()+1+ 93 93 sizeof(DWORD)+ 94 94 sizeof(DWORD)+ 95 95 sizeof(int)+ 96 96 sizeof(int)+ 97 lstrlen(pChildInfo->ImageCtrlInfo.path)+1;97 pChildInfo->image.path.size()+1; 98 98 99 99 hGlobal=GlobalReAlloc(hGlobal,MemSize,0); 100 100 pByte=(BYTE *)GlobalLock(hGlobal); 101 101 102 lstrcpy((char *)pByte+i2,pChildInfo-> IdName);103 i2+= lstrlen(pChildInfo->IdName)+1;102 lstrcpy((char *)pByte+i2,pChildInfo->GetName().c_str()); 103 i2+=pChildInfo->GetName().size()+1; 104 104 105 105 memcpy(pByte+i2,&pChildInfo->pos,sizeof(POINT)); … … 109 109 i2+=sizeof(SIZE); 110 110 111 lstrcpy((char *)pByte+i2,pChildInfo-> caption);112 i2+= lstrlen(pChildInfo->caption)+1;113 114 memcpy(pByte+i2,&pChildInfo->style,sizeof(DWORD));111 lstrcpy((char *)pByte+i2,pChildInfo->GetCaption().c_str()); 112 i2+=pChildInfo->GetCaption().size()+1; 113 114 *(DWORD *)(pByte+i2) = pChildInfo->GetStyle(); 115 115 i2+=sizeof(DWORD); 116 116 117 memcpy(pByte+i2,&pChildInfo->ExStyle,sizeof(DWORD));117 *(DWORD *)(pByte+i2) = pChildInfo->GetExStyle(); 118 118 i2+=sizeof(DWORD); 119 119 … … 121 121 i2+=sizeof(int); 122 122 123 memcpy(pByte+i2,&pChildInfo-> ImageCtrlInfo.type,sizeof(int));123 memcpy(pByte+i2,&pChildInfo->image.type,sizeof(int)); 124 124 i2+=sizeof(int); 125 125 126 if(!pChildInfo->ImageCtrlInfo.path){ 126 if( pChildInfo->image.path.empty() ) 127 { 127 128 lstrcpy((char *)pByte+i2,""); 128 129 i2++; 129 130 } 130 131 else{ 131 lstrcpy((char *)pByte+i2,pChildInfo-> ImageCtrlInfo.path);132 i2+= lstrlen(pChildInfo->ImageCtrlInfo.path)+1;132 lstrcpy((char *)pByte+i2,pChildInfo->image.path.c_str()); 133 i2+=pChildInfo->image.path.size()+1; 133 134 } 134 135 … … 143 144 BYTE *pByte; 144 145 int i2,i3,WndInfoNum; 145 CHILDINFO ChildInfo; 146 char temporary[255]; 146 ActiveBasic::PM::ChildWindowInfo ChildInfo; 147 147 148 148 for(i2=1;i2<MAX_RAD_SELITEM;i2++) MdiInfo[WndNum].MdiRadInfo->SelectingItem[i2]=-1; … … 155 155 for(i3--;i3>=0;i3--){ 156 156 //IdNameメンバは変更される可能性がある 157 ChildInfo.IdName=(char *)temporary; 158 lstrcpy(ChildInfo.IdName,(char *)pByte+i2); 159 i2+=lstrlen(ChildInfo.IdName)+1; 157 ChildInfo.SetName( (char *)pByte+i2 ); 158 i2 += ChildInfo.GetName().size()+1; 160 159 161 160 memcpy(&ChildInfo.pos,pByte+i2,sizeof(POINT)); … … 165 164 i2+=sizeof(SIZE); 166 165 167 ChildInfo. caption=(char *)pByte+i2;168 i2+= lstrlen(ChildInfo.caption)+1;169 170 memcpy(&ChildInfo.style,pByte+i2,sizeof(DWORD));166 ChildInfo.SetCaption( (char *)pByte+i2 ); 167 i2+=ChildInfo.GetCaption().size()+1; 168 169 ChildInfo.SetStyle( *(DWORD *)(pByte+i2) ); 171 170 i2+=sizeof(DWORD); 172 171 173 memcpy(&ChildInfo.ExStyle,pByte+i2,sizeof(DWORD));172 ChildInfo.SetExStyle( *(DWORD *)(pByte+i2) ); 174 173 i2+=sizeof(DWORD); 175 174 … … 177 176 i2+=sizeof(int); 178 177 179 memcpy(&ChildInfo. ImageCtrlInfo.type,pByte+i2,sizeof(int));178 memcpy(&ChildInfo.image.type,pByte+i2,sizeof(int)); 180 179 i2+=sizeof(int); 181 180 182 ChildInfo.ImageCtrlInfo.path=(char *)pByte+i2; 183 if(lstrlen(ChildInfo.ImageCtrlInfo.path)==0){ 184 ChildInfo.ImageCtrlInfo.path=0; 185 i2++; 186 } 187 else i2+=lstrlen(ChildInfo.ImageCtrlInfo.path)+1; 181 ChildInfo.image.path = (char *)pByte+i2; 182 i2+=ChildInfo.image.path.size()+1; 188 183 189 184 ChildInfo.pos.x+=17; … … 195 190 &ChildInfo.pos, 196 191 &ChildInfo.size, 197 ChildInfo. IdName,198 ChildInfo. caption,199 ChildInfo. style,200 ChildInfo. ExStyle,192 ChildInfo.GetName().c_str(), 193 ChildInfo.GetCaption().c_str(), 194 ChildInfo.GetStyle(), 195 ChildInfo.GetExStyle(), 201 196 ChildInfo.Control, 202 ChildInfo. ImageCtrlInfo.type,203 ChildInfo. ImageCtrlInfo.path,197 ChildInfo.image.type, 198 ChildInfo.image.path.c_str(), 204 199 2); 205 200 } … … 210 205 } 211 206 212 char *FormatCaption(c har *caption){207 char *FormatCaption(const char *caption){ 213 208 extern HANDLE hHeap; 214 209 int i2,i3,BufSize; … … 234 229 return buffer; 235 230 } 236 char *SetCaptionSequence(c har *caption){231 char *SetCaptionSequence(const char *caption){ 237 232 extern HANDLE hHeap; 238 233 int i2,i3,BufSize; … … 351 346 return 1; 352 347 } 353 BOOL GetNotifyCommandByItemMessage( WindowInfo *pWindowInfo,ITEMEVENTINFO *pItemEventInfo,char *Command,char *spaces){348 BOOL GetNotifyCommandByItemMessage(ActiveBasic::PM::WindowInfo *pWindowInfo,ITEMEVENTINFO *pItemEventInfo,char *Command,char *spaces){ 354 349 int i,i2,i3,sw; 355 350 char temporary[MAX_PATH]; … … 432 427 } 433 428 } 434 void GetCommandByItemMessage( WindowInfo *pWindowInfo,ITEMEVENTINFO *pItemEventInfo,char *Command,char *spaces){429 void GetCommandByItemMessage(ActiveBasic::PM::WindowInfo *pWindowInfo,ITEMEVENTINFO *pItemEventInfo,char *Command,char *spaces){ 435 430 extern HANDLE hHeap; 436 431 int i,i2,i3; … … 526 521 char temporary[MAX_PATH],*temp2; 527 522 528 WindowInfo *pWindowInfo = projectInfo.windowInfos[WndInfoNum];523 ActiveBasic::PM::WindowInfo *pWindowInfo = projectInfo.windowInfos[WndInfoNum]; 529 524 530 525 Command[0]=0; … … 548 543 i+=lstrlen(Command+i); 549 544 550 if(pWindowInfo->MenuID){ 545 if( pWindowInfo->HasMenu() ) 546 { 551 547 //メニュー作成 552 548 for(i2=0;i2<projectInfo.NumberOfMenu;i2++){ 553 if(lstrcmpi(projectInfo.pMenuInfo[i2].IdName,pWindowInfo-> MenuID)==0) break;549 if(lstrcmpi(projectInfo.pMenuInfo[i2].IdName,pWindowInfo->GetMenuIdName().c_str())==0) break; 554 550 } 555 551 if(i2!=projectInfo.NumberOfMenu){ … … 561 557 //子ウィンドウ作成 562 558 sw = 0; 563 BOOST_FOREACH( const CHILDINFO*pChildInfo, pWindowInfo->childWindowInfos )559 BOOST_FOREACH( const ActiveBasic::PM::ChildWindowInfo *pChildInfo, pWindowInfo->childWindowInfos ) 564 560 { 565 561 if(pChildInfo->Control==CT_UPDOWN){ 566 562 sprintf(Command+i,"%s\tCreateUpDownControl(%d,%d,%d,%d,%d,hWnd,%s,GetWindowLongPtr(hWnd,GWLP_HINSTANCE) As HINSTANCE,0,0,100,0)\r\n", 567 563 spaces, 568 pChildInfo-> style,564 pChildInfo->GetStyle(), 569 565 pChildInfo->pos.x,pChildInfo->pos.y, 570 566 pChildInfo->size.cx,pChildInfo->size.cy, 571 pChildInfo-> IdName);567 pChildInfo->GetName().c_str()); 572 568 i+=lstrlen(Command+i); 573 569 } 574 570 else{ 575 571 GetItemClassName(temporary,pChildInfo->Control); 576 temp2=FormatCaption(pChildInfo-> caption);572 temp2=FormatCaption(pChildInfo->GetCaption().c_str()); 577 573 sprintf(Command+i,"%s\tCreateWindowEx(&H%08x,\"%s\",\"%s\",&H%08x,%d,%d,%d,%d,hWnd,%s As HMENU,GetModuleHandle(0),0)\r\n", 578 574 spaces, 579 pChildInfo-> ExStyle,575 pChildInfo->GetExStyle(), 580 576 temporary, 581 577 temp2, 582 pChildInfo-> style,578 pChildInfo->GetStyle(), 583 579 pChildInfo->pos.x, 584 580 pChildInfo->pos.y, 585 581 pChildInfo->size.cx, 586 582 pChildInfo->size.cy, 587 pChildInfo-> IdName);583 pChildInfo->GetName().c_str()); 588 584 i+=lstrlen(Command+i); 589 585 HeapDefaultFree(temp2); 590 586 sprintf(Command+i,"%s\tSendMessage(GetDlgItem(hWnd,%s),WM_SETFONT,hFont_%s As WPARAM,0)\r\n", 591 587 spaces, 592 pChildInfo-> IdName,588 pChildInfo->GetName().c_str(), 593 589 pWindowInfo->GetName().c_str()); 594 590 i+=lstrlen(Command+i); … … 596 592 if(pChildInfo->Control==CT_IMAGEBOX){ 597 593 //イメージ ボックスの場合 598 if((pChildInfo-> style&0x000F)==SS_ICON){599 if(pChildInfo-> ImageCtrlInfo.type==IMGTYPE_FILE){600 if(strstr(pChildInfo-> ImageCtrlInfo.path,":")||601 strstr(pChildInfo-> ImageCtrlInfo.path,"\\\\")){594 if((pChildInfo->GetStyle()&0x000F)==SS_ICON){ 595 if(pChildInfo->image.IsFile()){ 596 if(strstr(pChildInfo->image.path.c_str(),":")|| 597 strstr(pChildInfo->image.path.c_str(),"\\\\")){ 602 598 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", 603 599 spaces, 604 600 pWindowInfo->GetName().c_str(), 605 pChildInfo-> IdName,606 pChildInfo-> ImageCtrlInfo.path);601 pChildInfo->GetName().c_str(), 602 pChildInfo->image.path.c_str()); 607 603 } 608 604 else{ … … 628 624 i+=2; 629 625 } 630 sprintf(Command+i,"%s\twsprintf(ImageFilePath,\"%%s%s\",ModulePath)\r\n",spaces,pChildInfo-> ImageCtrlInfo.path);626 sprintf(Command+i,"%s\twsprintf(ImageFilePath,\"%%s%s\",ModulePath)\r\n",spaces,pChildInfo->image.path.c_str()); 631 627 i+=lstrlen(Command+i); 632 628 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", 633 629 spaces, 634 630 pWindowInfo->GetName().c_str(), 635 pChildInfo-> IdName);631 pChildInfo->GetName().c_str()); 636 632 } 637 633 i+=lstrlen(Command+i); 638 634 } 639 else if(pChildInfo-> ImageCtrlInfo.type==IMGTYPE_RES){635 else if(pChildInfo->image.IsResource()){ 640 636 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", 641 637 spaces, 642 638 pWindowInfo->GetName().c_str(), 643 pChildInfo-> IdName,644 pChildInfo-> ImageCtrlInfo.path);639 pChildInfo->GetName().c_str(), 640 pChildInfo->image.path.c_str()); 645 641 i+=lstrlen(Command+i); 646 642 } 647 643 sprintf(Command+i,"%s\tSendMessage(GetDlgItem(hWnd,%s),STM_SETICON,hImage_%s_%s As WPARAM,0)\r\n", 648 644 spaces, 649 pChildInfo-> IdName,645 pChildInfo->GetName().c_str(), 650 646 pWindowInfo->GetName().c_str(), 651 pChildInfo-> IdName);647 pChildInfo->GetName().c_str()); 652 648 i+=lstrlen(Command+i); 653 649 } 654 else if((pChildInfo-> style&0x000F)==SS_BITMAP){655 if(pChildInfo-> ImageCtrlInfo.type==IMGTYPE_FILE){656 if(strstr(pChildInfo-> ImageCtrlInfo.path,":")||657 strstr(pChildInfo-> ImageCtrlInfo.path,"\\\\")){650 else if((pChildInfo->GetStyle()&0x000F)==SS_BITMAP){ 651 if(pChildInfo->image.IsFile()){ 652 if(strstr(pChildInfo->image.path.c_str(),":")|| 653 strstr(pChildInfo->image.path.c_str(),"\\\\")){ 658 654 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", 659 655 spaces, 660 656 pWindowInfo->GetName().c_str(), 661 pChildInfo-> IdName,662 pChildInfo-> ImageCtrlInfo.path);657 pChildInfo->GetName().c_str(), 658 pChildInfo->image.path.c_str()); 663 659 } 664 660 else{ … … 684 680 i+=2; 685 681 } 686 sprintf(Command+i,"%s\twsprintf(ImageFilePath,\"%%s%s\",ModulePath)\r\n",spaces,pChildInfo-> ImageCtrlInfo.path);682 sprintf(Command+i,"%s\twsprintf(ImageFilePath,\"%%s%s\",ModulePath)\r\n",spaces,pChildInfo->image.path.c_str()); 687 683 i+=lstrlen(Command+i); 688 684 sprintf(Command+i,"%s\thImage_%s_%s=LoadImage(GetWindowLongPtr(hWnd,GWLP_HINSTANCE) As HINSTANCE,ImageFilePath,IMAGE_BITMAP,0,0,LR_LOADFROMFILE)\r\n", 689 685 spaces, 690 686 pWindowInfo->GetName().c_str(), 691 pChildInfo-> IdName);687 pChildInfo->GetName().c_str()); 692 688 } 693 689 i+=lstrlen(Command+i); 694 690 } 695 else if(pChildInfo-> ImageCtrlInfo.type==IMGTYPE_RES){691 else if(pChildInfo->image.IsResource()){ 696 692 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", 697 693 spaces, 698 694 pWindowInfo->GetName().c_str(), 699 pChildInfo-> IdName,700 pChildInfo-> ImageCtrlInfo.path);695 pChildInfo->GetName().c_str(), 696 pChildInfo->image.path.c_str()); 701 697 i+=lstrlen(Command+i); 702 698 } 703 699 sprintf(Command+i,"%s\tSendMessage(GetDlgItem(hWnd,%s),STM_SETIMAGE,IMAGE_BITMAP,hImage_%s_%s As LPARAM)\r\n", 704 700 spaces, 705 pChildInfo-> IdName,701 pChildInfo->GetName().c_str(), 706 702 pWindowInfo->GetName().c_str(), 707 pChildInfo-> IdName);703 pChildInfo->GetName().c_str()); 708 704 i+=lstrlen(Command+i); 709 705 } … … 724 720 } 725 721 726 if(pWindowInfo->MenuID){ 722 if( pWindowInfo->HasMenu() ) 723 { 727 724 //メニューを解放 728 725 for(i2=0;i2<projectInfo.NumberOfMenu;i2++){ 729 if(lstrcmpi(projectInfo.pMenuInfo[i2].IdName,pWindowInfo-> MenuID)==0) break;726 if(lstrcmpi(projectInfo.pMenuInfo[i2].IdName,pWindowInfo->GetMenuIdName().c_str())==0) break; 730 727 } 731 728 if(i2!=projectInfo.NumberOfMenu){ … … 736 733 737 734 //イメージ ボックス用の変数を解放 738 BOOST_FOREACH( const CHILDINFO*pChildInfo, pWindowInfo->childWindowInfos )735 BOOST_FOREACH( const ActiveBasic::PM::ChildWindowInfo *pChildInfo, pWindowInfo->childWindowInfos ) 739 736 { 740 737 if(pChildInfo->Control==CT_IMAGEBOX){ 741 if((pChildInfo-> style&0x000F)==SS_ICON)742 sprintf(Command+i,"%s\tDestroyIcon(hImage_%s_%s)\r\n",spaces,pWindowInfo->GetName().c_str(),pChildInfo-> IdName);743 else if((pChildInfo-> style&0x000F)==SS_BITMAP)744 sprintf(Command+i,"%s\tDeleteObject(hImage_%s_%s)\r\n",spaces,pWindowInfo->GetName().c_str(),pChildInfo-> IdName);738 if((pChildInfo->GetStyle()&0x000F)==SS_ICON) 739 sprintf(Command+i,"%s\tDestroyIcon(hImage_%s_%s)\r\n",spaces,pWindowInfo->GetName().c_str(),pChildInfo->GetName().c_str()); 740 else if((pChildInfo->GetStyle()&0x000F)==SS_BITMAP) 741 sprintf(Command+i,"%s\tDeleteObject(hImage_%s_%s)\r\n",spaces,pWindowInfo->GetName().c_str(),pChildInfo->GetName().c_str()); 745 742 i+=lstrlen(Command+i); 746 743 } … … 894 891 } 895 892 896 char **GetMenuItemConstData(MENU_INFO *pMenuInfo,int NumberOfMenu,int *ConstNumber,char **ppNames,int *NamesNum,char *buffer,int *base){893 void GetMenuItemConstData(MENU_INFO *pMenuInfo,int NumberOfMenu,int *ConstNumber,Jenga::Common::Strings &namesForDuplicationCheck,char *buffer,int *base){ 897 894 extern HANDLE hHeap; 898 int i ,i2,sw1;895 int i; 899 896 900 897 for(i=0;i<NumberOfMenu;i++){ 901 898 if(pMenuInfo[i].pMenuInfo){ 902 899 //ポップアップ 903 ppNames=GetMenuItemConstData(pMenuInfo[i].pMenuInfo,pMenuInfo[i].NumberOfMenu,ConstNumber,ppNames,NamesNum,buffer,base);900 GetMenuItemConstData(pMenuInfo[i].pMenuInfo,pMenuInfo[i].NumberOfMenu,ConstNumber,namesForDuplicationCheck,buffer,base); 904 901 } 905 902 else if(pMenuInfo[i].type==MFT_STRING){ 906 903 //重複チェック 907 for(i2=0,sw1=0;i2<*NamesNum;i2++){ 908 if(lstrcmpi(ppNames[i2],pMenuInfo[i].IdName)==0){ 909 sw1=1; 904 bool isMatch = false; 905 BOOST_FOREACH( const std::string &name, namesForDuplicationCheck ) 906 { 907 if(lstrcmpi(name.c_str(),pMenuInfo[i].IdName)==0) 908 { 909 isMatch = true; 910 910 break; 911 911 } 912 912 } 913 if(sw1==0){ 914 ppNames=(char **)HeapReAlloc(hHeap,0,ppNames,sizeof(char *)*((*NamesNum)+1)); 915 ppNames[*NamesNum]=pMenuInfo[i].IdName; 916 (*NamesNum)++; 913 if( !isMatch ) 914 { 915 namesForDuplicationCheck.push_back( pMenuInfo[i].IdName ); 917 916 918 917 sprintf(buffer+(*base),"Const %s=%d\r\n",pMenuInfo[i].IdName,*ConstNumber); … … 922 921 } 923 922 } 924 return ppNames;925 923 } 926 924 int GetMakeMenuCommand(MENU_INFO *pMenuInfo,int NumberOfMenu,char *MenuHandle,char *Command,BOOL bMain){ … … 982 980 void SaveWindowProgram(){ 983 981 extern HANDLE hHeap; 984 int i,i2,i3,i4,i5, i6,sw1,sw2,sw3,sw4,size;985 char *buffer, **ppNames,temporary[MAX_PATH];982 int i,i2,i3,i4,i5,sw1,sw2,sw3,sw4,size; 983 char *buffer,temporary[MAX_PATH]; 986 984 987 985 size=2; … … 1006 1004 //IDを定義 1007 1005 1008 ppNames=(char **)HeapAlloc(hHeap,0,1);1006 Jenga::Common::Strings namesForDuplicationCheck; 1009 1007 i4=1000; 1010 1008 i5=0; 1011 BOOST_FOREACH( WindowInfo *pWindowInfo, projectInfo.windowInfos )1009 BOOST_FOREACH( ActiveBasic::PM::WindowInfo *pWindowInfo, projectInfo.windowInfos ) 1012 1010 { 1013 BOOST_FOREACH( const CHILDINFO*pChildInfo, pWindowInfo->childWindowInfos )1011 BOOST_FOREACH( const ActiveBasic::PM::ChildWindowInfo *pChildInfo, pWindowInfo->childWindowInfos ) 1014 1012 { 1015 1013 //重複チェック 1016 for(i6=0,sw1=0;i6<i5;i6++){ 1017 if(lstrcmpi(ppNames[i6],pChildInfo->IdName)==0){ 1018 sw1=1; 1014 bool isMatch = false; 1015 BOOST_FOREACH( const std::string &name, namesForDuplicationCheck ) 1016 { 1017 if(lstrcmpi(name.c_str(),pChildInfo->GetName().c_str())==0){ 1018 isMatch = true; 1019 1019 break; 1020 1020 } 1021 1021 } 1022 if(sw1) continue; 1023 1024 ppNames=(char **)HeapReAlloc(hHeap,0,ppNames,sizeof(char *)*(i5+1)); 1025 ppNames[i5]=pChildInfo->IdName; 1026 i5++; 1027 1028 sprintf(buffer+i2,"Const %s=%d\r\n",pChildInfo->IdName,i4); 1022 if( isMatch ) continue; 1023 1024 namesForDuplicationCheck.push_back( pChildInfo->GetName() ); 1025 1026 sprintf(buffer+i2,"Const %s=%d\r\n",pChildInfo->GetName().c_str(),i4); 1029 1027 i2+=lstrlen(buffer+i2); 1030 1028 i4++; … … 1038 1036 1039 1037 //メニューのIDを定義 1040 ppNames=GetMenuItemConstData(projectInfo.pMenuInfo,projectInfo.NumberOfMenu,&i4,ppNames,&i5,buffer,&i2); 1041 1042 HeapDefaultFree(ppNames); 1038 GetMenuItemConstData(projectInfo.pMenuInfo,projectInfo.NumberOfMenu,&i4,namesForDuplicationCheck,buffer,&i2); 1039 1043 1040 lstrcpy(buffer+i2,"\r\n"); 1044 1041 i2+=lstrlen(buffer+i2); … … 1046 1043 1047 1044 //ハンドル変数を定義 1048 BOOST_FOREACH( WindowInfo *pWindowInfo, projectInfo.windowInfos )1045 BOOST_FOREACH( ActiveBasic::PM::WindowInfo *pWindowInfo, projectInfo.windowInfos ) 1049 1046 { 1050 1047 sprintf(buffer+i2,"Dim %s As HWND\r\n",pWindowInfo->GetHandleName().c_str()); … … 1082 1079 i2+=lstrlen(buffer+i2); 1083 1080 i=0; 1084 BOOST_FOREACH( WindowInfo *pWindowInfo, projectInfo.windowInfos )1081 BOOST_FOREACH( ActiveBasic::PM::WindowInfo *pWindowInfo, projectInfo.windowInfos ) 1085 1082 { 1086 if(pWindowInfo-> bgColor<=0&&1087 pWindowInfo-> bgColor!=-(int)RGB(255,255,255)&&1088 pWindowInfo-> bgColor!=-(int)RGB(0,0,0)){1083 if(pWindowInfo->GetBackgroundColor()<=0&& 1084 pWindowInfo->GetBackgroundColor()!=-(int)RGB(255,255,255)&& 1085 pWindowInfo->GetBackgroundColor()!=-(int)RGB(0,0,0)){ 1089 1086 sprintf(buffer+i2,"Dim _RadSys_hBackBrush%d As HBRUSH\r\n",i); 1090 1087 i2+=lstrlen(buffer+i2); 1091 sprintf(buffer+i2,"_RadSys_hBackBrush%d=CreateSolidBrush(%d)\r\n",i,-pWindowInfo-> bgColor);1088 sprintf(buffer+i2,"_RadSys_hBackBrush%d=CreateSolidBrush(%d)\r\n",i,-pWindowInfo->GetBackgroundColor()); 1092 1089 i2+=lstrlen(buffer+i2); 1093 1090 } 1094 if(pWindowInfo-> bgColor>=0x1000){1091 if(pWindowInfo->GetBackgroundColor()>=0x1000){ 1095 1092 sprintf(buffer+i2,"Dim _RadSys_hBackBrush%d As HBRUSH\r\n",i); 1096 1093 i2+=lstrlen(buffer+i2); 1097 1094 sprintf(buffer+i2,"_RadSys_hBackBrush%d=CreatePatternBrush(LoadImage(GetModuleHandle(0),%s,IMAGE_BITMAP,0,0,LR_DEFAULTSIZE or LR_SHARED))\r\n", 1098 1095 i, 1099 projectInfo.resourceManager.bitmapResources[pWindowInfo-> bgColor-0x1000].idName.c_str());1096 projectInfo.resourceManager.bitmapResources[pWindowInfo->GetBackgroundColor()-0x1000].idName.c_str()); 1100 1097 i2+=lstrlen(buffer+i2); 1101 1098 } … … 1108 1105 1109 1106 //イメージ ボックス用の変数を定義 1110 BOOST_FOREACH( WindowInfo *pWindowInfo, projectInfo.windowInfos )1107 BOOST_FOREACH( ActiveBasic::PM::WindowInfo *pWindowInfo, projectInfo.windowInfos ) 1111 1108 { 1112 BOOST_FOREACH( const CHILDINFO*pChildInfo, pWindowInfo->childWindowInfos )1109 BOOST_FOREACH( const ActiveBasic::PM::ChildWindowInfo *pChildInfo, pWindowInfo->childWindowInfos ) 1113 1110 { 1114 1111 if(pChildInfo->Control==CT_IMAGEBOX){ 1115 if((pChildInfo-> style&0x000F)==SS_ICON||1116 (pChildInfo-> style&0x000F)==SS_BITMAP){1117 sprintf(buffer+i2,"Dim hImage_%s_%s As HANDLE\r\n",pWindowInfo->GetName().c_str(),pChildInfo-> IdName);1112 if((pChildInfo->GetStyle()&0x000F)==SS_ICON|| 1113 (pChildInfo->GetStyle()&0x000F)==SS_BITMAP){ 1114 sprintf(buffer+i2,"Dim hImage_%s_%s As HANDLE\r\n",pWindowInfo->GetName().c_str(),pChildInfo->GetName().c_str()); 1118 1115 i2+=lstrlen(buffer+i2); 1119 1116 … … 1163 1160 } 1164 1161 1165 BOOST_FOREACH( WindowInfo *pWindowInfo, projectInfo.windowInfos )1162 BOOST_FOREACH( ActiveBasic::PM::WindowInfo *pWindowInfo, projectInfo.windowInfos ) 1166 1163 { 1167 1164 //フォントハンドル解放 … … 1179 1176 i2+=lstrlen(buffer+i2); 1180 1177 i=0; 1181 BOOST_FOREACH( WindowInfo *pWindowInfo, projectInfo.windowInfos )1178 BOOST_FOREACH( ActiveBasic::PM::WindowInfo *pWindowInfo, projectInfo.windowInfos ) 1182 1179 { 1183 if(pWindowInfo-> bgColor<=0&&1184 pWindowInfo-> bgColor!=-(int)RGB(255,255,255)&&1185 pWindowInfo-> bgColor!=-(int)RGB(0,0,0)){1180 if(pWindowInfo->GetBackgroundColor()<=0&& 1181 pWindowInfo->GetBackgroundColor()!=-(int)RGB(255,255,255)&& 1182 pWindowInfo->GetBackgroundColor()!=-(int)RGB(0,0,0)){ 1186 1183 sprintf(buffer+i2,"\tDeleteObject(_RadSys_hBackBrush%d)\r\n",i); 1187 1184 i2+=lstrlen(buffer+i2); … … 1198 1195 1199 1196 i=0; 1200 BOOST_FOREACH( WindowInfo *pWindowInfo, projectInfo.windowInfos )1197 BOOST_FOREACH( ActiveBasic::PM::WindowInfo *pWindowInfo, projectInfo.windowInfos ) 1201 1198 { 1202 1199 if(i!=0){ … … 1210 1207 //処理メッセージを抽出 1211 1208 ITEMEVENTINFO *pItemEventInfo; 1212 ppNames=GetProcedureNamesOfMessageCall(i,&pItemEventInfo,&i3,&bAvailUserProc[i]);1209 char **ppNames=GetProcedureNamesOfMessageCall(i,&pItemEventInfo,&i3,&bAvailUserProc[i]); 1213 1210 1214 1211 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()); … … 1363 1360 sw1=0; 1364 1361 i=0; 1365 BOOST_FOREACH( WindowInfo *pWindowInfo, projectInfo.windowInfos )1362 BOOST_FOREACH( ActiveBasic::PM::WindowInfo *pWindowInfo, projectInfo.windowInfos ) 1366 1363 { 1367 1364 if(pWindowInfo->type==WNDTYPE_MODALDLG){ … … 1375 1372 i2+=lstrlen(buffer+i2); 1376 1373 } 1377 sprintf(buffer+i2,"\t\t%s=CreateWindowEx(&H%08x,\"NORMALDLG\",\"%s\",&H%08x,%d,%d,%d,%d,hOwnerWnd, %dAs HMENU,GetModuleHandle(0),0)\r\n",1374 sprintf(buffer+i2,"\t\t%s=CreateWindowEx(&H%08x,\"NORMALDLG\",\"%s\",&H%08x,%d,%d,%d,%d,hOwnerWnd,NULL As HMENU,GetModuleHandle(0),0)\r\n", 1378 1375 pWindowInfo->GetHandleName().c_str(), 1379 pWindowInfo-> ExStyle,1380 pWindowInfo-> caption,1381 pWindowInfo-> style,1376 pWindowInfo->GetExStyle(), 1377 pWindowInfo->GetCaption().c_str(), 1378 pWindowInfo->GetStyle(), 1382 1379 pWindowInfo->pos.x, 1383 1380 pWindowInfo->pos.y, 1384 1381 pWindowInfo->size.cx, 1385 pWindowInfo->size.cy, 1386 pWindowInfo->id); 1382 pWindowInfo->size.cy); 1387 1383 i2+=lstrlen(buffer+i2); 1388 1384 sprintf(buffer+i2,"\t\thDlg=%s\r\n", … … 1402 1398 sprintf(buffer+i2,"\t\tSendMessage(%s,WM_INITDIALOG,0,0)\r\n",pWindowInfo->GetHandleName().c_str()); 1403 1399 i2+=lstrlen(buffer+i2); 1404 if(pWindowInfo->IconResName){ 1405 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); 1400 if( pWindowInfo->HasIcon() ) 1401 { 1402 sprintf(buffer+i2,"\t\tSendMessage(%s,WM_SETICON,ICON_SMALL,LoadIcon(GetModuleHandle(0),MAKEINTRESOURCE(%s)) As LPARAM)\r\n",pWindowInfo->GetHandleName().c_str(),pWindowInfo->GetIconResourceName().c_str()); 1406 1403 i2+=lstrlen(buffer+i2); 1407 1404 } … … 1462 1459 i2+=lstrlen(buffer+i2); 1463 1460 i=0; 1464 BOOST_FOREACH( WindowInfo *pWindowInfo, projectInfo.windowInfos )1461 BOOST_FOREACH( ActiveBasic::PM::WindowInfo *pWindowInfo, projectInfo.windowInfos ) 1465 1462 { 1466 1463 if(pWindowInfo->type==WNDTYPE_MODELESSDLG){ … … 1468 1465 i2+=lstrlen(buffer+i2); 1469 1466 1470 sprintf(buffer+i2,"\t\t%s=CreateWindowEx(&H%08x,\"NORMALDLG\",\"%s\",&H%08x,%d,%d,%d,%d,hOwnerWnd, %dAs HMENU,GetModuleHandle(0),0)\r\n",1467 sprintf(buffer+i2,"\t\t%s=CreateWindowEx(&H%08x,\"NORMALDLG\",\"%s\",&H%08x,%d,%d,%d,%d,hOwnerWnd,NULL As HMENU,GetModuleHandle(0),0)\r\n", 1471 1468 pWindowInfo->GetHandleName().c_str(), 1472 pWindowInfo-> ExStyle,1473 pWindowInfo-> caption,1474 pWindowInfo-> style,1469 pWindowInfo->GetExStyle(), 1470 pWindowInfo->GetCaption().c_str(), 1471 pWindowInfo->GetStyle(), 1475 1472 pWindowInfo->pos.x, 1476 1473 pWindowInfo->pos.y, 1477 1474 pWindowInfo->size.cx, 1478 pWindowInfo->size.cy, 1479 pWindowInfo->id); 1475 pWindowInfo->size.cy); 1480 1476 i2+=lstrlen(buffer+i2); 1481 1477 sprintf(buffer+i2,"\t\tCreateDialog=%s\r\n",pWindowInfo->GetHandleName().c_str()); … … 1494 1490 sprintf(buffer+i2,"\t\tSendMessage(%s,WM_INITDIALOG,0,0)\r\n",pWindowInfo->GetHandleName().c_str()); 1495 1491 i2+=lstrlen(buffer+i2); 1496 if(pWindowInfo->IconResName){ 1497 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); 1492 if( pWindowInfo->HasIcon() ) 1493 { 1494 sprintf(buffer+i2,"\t\tSendMessage(%s,WM_SETICON,ICON_SMALL,LoadIcon(GetModuleHandle(0),MAKEINTRESOURCE(%s)) As LPARAM)\r\n",pWindowInfo->GetHandleName().c_str(),pWindowInfo->GetIconResourceName().c_str()); 1498 1495 i2+=lstrlen(buffer+i2); 1499 1496 } … … 1535 1532 1536 1533 i=0; 1537 BOOST_FOREACH( WindowInfo *pWindowInfo, projectInfo.windowInfos )1534 BOOST_FOREACH( ActiveBasic::PM::WindowInfo *pWindowInfo, projectInfo.windowInfos ) 1538 1535 { 1539 1536 if(pWindowInfo->type==WNDTYPE_DEFAULT){ … … 1544 1541 i2+=2; 1545 1542 1546 if(pWindowInfo->IconResName==0){ 1543 if( pWindowInfo->HasIcon() ) 1544 { 1545 sprintf(buffer+i2,"_RadSys_wcl.hIcon=LoadIcon(_RadSys_wcl.hInstance,MAKEINTRESOURCE(%s))\r\n",pWindowInfo->GetIconResourceName().c_str()); 1546 i2+=lstrlen(buffer+i2); 1547 sprintf(buffer+i2,"_RadSys_wcl.hIconSm=LoadIcon(_RadSys_wcl.hInstance,MAKEINTRESOURCE(%s))\r\n",pWindowInfo->GetIconResourceName().c_str()); 1548 i2+=lstrlen(buffer+i2); 1549 } 1550 else{ 1547 1551 lstrcpy(buffer+i2,"_RadSys_wcl.hIcon=LoadIcon(NULL,MAKEINTRESOURCE(IDI_APPLICATION))\r\n"); 1548 1552 i2+=lstrlen(buffer+i2); … … 1550 1554 i2+=lstrlen(buffer+i2); 1551 1555 } 1552 else{1553 sprintf(buffer+i2,"_RadSys_wcl.hIcon=LoadIcon(_RadSys_wcl.hInstance,MAKEINTRESOURCE(%s))\r\n",pWindowInfo->IconResName);1554 i2+=lstrlen(buffer+i2);1555 sprintf(buffer+i2,"_RadSys_wcl.hIconSm=LoadIcon(_RadSys_wcl.hInstance,MAKEINTRESOURCE(%s))\r\n",pWindowInfo->IconResName);1556 i2+=lstrlen(buffer+i2);1557 }1558 1556 1559 1557 sprintf(buffer+i2,"_RadSys_wcl.lpszClassName=\"NORMAL%d\"\r\n",i); … … 1563 1561 else sprintf(buffer+i2,"_RadSys_wcl.lpfnWndProc=AddressOf(EventCall_%s)\r\n",pWindowInfo->GetName().c_str()); 1564 1562 i2+=lstrlen(buffer+i2); 1565 if(pWindowInfo-> bgColor==COLOR_3DFACE)1563 if(pWindowInfo->GetBackgroundColor()==COLOR_3DFACE) 1566 1564 lstrcpy(buffer+i2,"_RadSys_wcl.hbrBackground=h3DFaceBrush\r\n"); 1567 else if(pWindowInfo-> bgColor==-(int)RGB(255,255,255))1565 else if(pWindowInfo->GetBackgroundColor()==-(int)RGB(255,255,255)) 1568 1566 lstrcpy(buffer+i2,"_RadSys_wcl.hbrBackground=GetStockObject(WHITE_BRUSH)\r\n"); 1569 else if(pWindowInfo-> bgColor==-(int)RGB(0,0,0))1567 else if(pWindowInfo->GetBackgroundColor()==-(int)RGB(0,0,0)) 1570 1568 lstrcpy(buffer+i2,"_RadSys_wcl.hbrBackground=GetStockObject(BLACK_BRUSH)\r\n"); 1571 else if(pWindowInfo-> bgColor<=0||1572 pWindowInfo-> bgColor>=0x1000){1569 else if(pWindowInfo->GetBackgroundColor()<=0|| 1570 pWindowInfo->GetBackgroundColor()>=0x1000){ 1573 1571 //色指定またはビットマップ 1574 1572 sprintf(buffer+i2,"_RadSys_wcl.hbrBackground=_RadSys_hBackBrush%d\r\n",i); … … 1578 1576 i2+=lstrlen(buffer+i2); 1579 1577 sprintf(buffer+i2,"CreateWindowEx(&H%08x,\"%s%d\",\"%s\",&H%08x,%d,%d,%d,%d,0,0,GetModuleHandle(0),0)\r\n", 1580 pWindowInfo-> ExStyle,1581 pWindowInfo-> ClassName,i,1582 pWindowInfo-> caption,1583 pWindowInfo-> style,1578 pWindowInfo->GetExStyle(), 1579 pWindowInfo->GetClassName().c_str(), i, 1580 pWindowInfo->GetCaption().c_str(), 1581 pWindowInfo->GetStyle(), 1584 1582 pWindowInfo->pos.x, 1585 1583 pWindowInfo->pos.y, … … 1630 1628 return i2; 1631 1629 } 1632 void SaveWindowFile( char *path, const WindowInfos &windowInfos )1630 void SaveWindowFile( char *path, const ActiveBasic::PM::WindowInfos &windowInfos ) 1633 1631 { 1634 1632 extern HANDLE hHeap; … … 1640 1638 buffer=(char *)HeapAlloc(hHeap,0,GENERAL_SIZE*size); 1641 1639 i2=0; 1642 BOOST_FOREACH( WindowInfo *pWindowInfo, projectInfo.windowInfos )1640 BOOST_FOREACH( ActiveBasic::PM::WindowInfo *pWindowInfo, projectInfo.windowInfos ) 1643 1641 { 1644 1642 sprintf(buffer+i2,"WINDOW:%s\r\n",pWindowInfo->GetName().c_str()); … … 1650 1648 sprintf(buffer+i2," SIZE = %d,%d\r\n",pWindowInfo->size.cx,pWindowInfo->size.cy); 1651 1649 i2+=lstrlen(buffer+i2); 1652 sprintf(buffer+i2," CAPTION = \"%s\"\r\n",pWindowInfo->caption); 1653 i2+=lstrlen(buffer+i2); 1654 sprintf(buffer+i2," STYLE = &H%08x\r\n",pWindowInfo->style); 1655 i2+=lstrlen(buffer+i2); 1656 sprintf(buffer+i2," EXSTYLE = &H%08x\r\n",pWindowInfo->ExStyle); 1657 i2+=lstrlen(buffer+i2); 1658 if(pWindowInfo->MenuID){ 1659 sprintf(buffer+i2," MENUID = %s\r\n",pWindowInfo->MenuID); 1660 i2+=lstrlen(buffer+i2); 1661 } 1662 sprintf(buffer+i2," ID = %d\r\n",pWindowInfo->id); 1663 i2+=lstrlen(buffer+i2); 1664 sprintf(buffer+i2," BGCOLOR = %d\r\n",pWindowInfo->bgColor); 1650 sprintf(buffer+i2," CAPTION = \"%s\"\r\n",pWindowInfo->GetCaption().c_str()); 1651 i2+=lstrlen(buffer+i2); 1652 sprintf(buffer+i2," STYLE = &H%08x\r\n",pWindowInfo->GetStyle()); 1653 i2+=lstrlen(buffer+i2); 1654 sprintf(buffer+i2," EXSTYLE = &H%08x\r\n",pWindowInfo->GetExStyle()); 1655 i2+=lstrlen(buffer+i2); 1656 if( pWindowInfo->HasMenu() ) 1657 { 1658 sprintf(buffer+i2," MENUID = %s\r\n",pWindowInfo->GetMenuIdName().c_str()); 1659 i2+=lstrlen(buffer+i2); 1660 } 1661 sprintf(buffer+i2," BGCOLOR = %d\r\n",pWindowInfo->GetBackgroundColor()); 1665 1662 i2+=lstrlen(buffer+i2); 1666 1663 sprintf(buffer+i2," FONT = %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,\"%s\"\r\n", … … 1680 1677 pWindowInfo->LogFont.lfFaceName); 1681 1678 i2+=lstrlen(buffer+i2); 1682 if(pWindowInfo->IconResName){ 1683 sprintf(buffer+i2," ICONID = %s\r\n",pWindowInfo->IconResName); 1684 i2+=lstrlen(buffer+i2); 1685 } 1686 sprintf(buffer+i2," CLASS = \"%s\"\r\n",pWindowInfo->ClassName); 1679 if( pWindowInfo->HasIcon() ) 1680 { 1681 sprintf(buffer+i2," ICONID = %s\r\n",pWindowInfo->GetIconResourceName().c_str()); 1682 i2+=lstrlen(buffer+i2); 1683 } 1684 sprintf(buffer+i2," CLASS = \"%s\"\r\n",pWindowInfo->GetClassName().c_str()); 1687 1685 i2+=lstrlen(buffer+i2); 1688 1686 sprintf(buffer+i2," CALLBACK = %s\r\n",pWindowInfo->CallBackName); … … 1692 1690 sprintf(buffer+i2," FILEPATH = %s\r\n",pWindowInfo->filepath); 1693 1691 i2+=lstrlen(buffer+i2); 1694 BOOST_FOREACH( const CHILDINFO*pChildInfo, pWindowInfo->childWindowInfos )1692 BOOST_FOREACH( const ActiveBasic::PM::ChildWindowInfo *pChildInfo, pWindowInfo->childWindowInfos ) 1695 1693 { 1696 temporary=SetCaptionSequence(pChildInfo-> caption);1694 temporary=SetCaptionSequence(pChildInfo->GetCaption().c_str()); 1697 1695 sprintf(buffer+i2," ITEM = %s,%d,%d,%d,%d,\"%s\",&H%08x,&H%08x,%d", 1698 pChildInfo-> IdName,1696 pChildInfo->GetName().c_str(), 1699 1697 pChildInfo->pos.x,pChildInfo->pos.y, 1700 1698 pChildInfo->size.cx,pChildInfo->size.cy, 1701 1699 temporary, 1702 pChildInfo-> style,1703 pChildInfo-> ExStyle,1700 pChildInfo->GetStyle(), 1701 pChildInfo->GetExStyle(), 1704 1702 pChildInfo->Control 1705 1703 ); … … 1707 1705 HeapDefaultFree(temporary); 1708 1706 if(pChildInfo->Control==CT_IMAGEBOX){ 1709 sprintf(buffer+i2,",%d,\"%s\"",pChildInfo-> ImageCtrlInfo.type,pChildInfo->ImageCtrlInfo.path);1707 sprintf(buffer+i2,",%d,\"%s\"",pChildInfo->image.type,pChildInfo->image.path.c_str()); 1710 1708 i2+=lstrlen(buffer+i2); 1711 1709 } … … 1883 1881 //ウィンドウ 1884 1882 if(lstrcmpi(temporary,"WINDOW")==0&&i3==0){ 1885 projectInfo.windowInfos.push_back( new WindowInfo() );1883 projectInfo.windowInfos.push_back( new ActiveBasic::PM::WindowInfo() ); 1886 1884 i3=1; 1887 1885 … … 1906 1904 if(temp2[0]=='\"'&&temp2[lstrlen(temp2)-1]=='\"'){ 1907 1905 temp2[lstrlen(temp2)-1]=0; 1908 projectInfo.windowInfos.back()->caption=(char *)HeapAlloc(hHeap,0,i2+1); 1909 lstrcpy(projectInfo.windowInfos.back()->caption,temp2+1); 1906 projectInfo.windowInfos.back()->SetCaption( temp2+1 ); 1910 1907 } 1911 1908 } 1912 else if(lstrcmpi(temporary,"STYLE")==0&&i3==1) projectInfo.windowInfos.back()-> style=GetValue(temp2);1913 else if(lstrcmpi(temporary,"EXSTYLE")==0&&i3==1) projectInfo.windowInfos.back()-> ExStyle=GetValue(temp2);1909 else if(lstrcmpi(temporary,"STYLE")==0&&i3==1) projectInfo.windowInfos.back()->SetStyle( GetValue(temp2) ); 1910 else if(lstrcmpi(temporary,"EXSTYLE")==0&&i3==1) projectInfo.windowInfos.back()->SetExStyle( GetValue(temp2) ); 1914 1911 else if(lstrcmpi(temporary,"MENUID")==0&&i3==1){ 1915 projectInfo.windowInfos.back()->MenuID=(char *)HeapAlloc(hHeap,0,i2+1); 1916 lstrcpy(projectInfo.windowInfos.back()->MenuID,temp2); 1917 } 1918 else if(lstrcmpi(temporary,"ID")==0&&i3==1) projectInfo.windowInfos.back()->id=GetValue(temp2); 1912 projectInfo.windowInfos.back()->SetMenuIdName( temp2 ); 1913 } 1914 else if(lstrcmpi(temporary,"ID")==0&&i3==1) 1915 { 1916 // 無視 1917 } 1919 1918 else if(lstrcmpi(temporary,"BGCOLOR")==0&&i3==1){ 1920 projectInfo.windowInfos.back()-> bgColor=GetValue(temp2);1919 projectInfo.windowInfos.back()->SetBackgroundColor( GetValue(temp2) ); 1921 1920 if(projectInfo.dwVersion<=3){ 1922 1921 //プロジェクトバージョンが3以前のときは新値に変換する 1923 if(projectInfo.windowInfos.back()-> bgColor==-1)1924 projectInfo.windowInfos.back()-> bgColor=-(int)RGB(255,255,255);1922 if(projectInfo.windowInfos.back()->GetBackgroundColor()==-1) 1923 projectInfo.windowInfos.back()->SetBackgroundColor( -(int)RGB(255,255,255) ); 1925 1924 } 1926 1925 } … … 1970 1969 } 1971 1970 else if(lstrcmpi(temporary,"ICONID")==0&&i3==1){ 1972 projectInfo.windowInfos.back()->IconResName=(char *)HeapAlloc(hHeap,0,i2+1); 1973 lstrcpy(projectInfo.windowInfos.back()->IconResName,temp2); 1971 projectInfo.windowInfos.back()->SetIconResourceName( temp2 ); 1974 1972 } 1975 1973 else if(lstrcmpi(temporary,"CLASS")==0&&i3==1){ 1976 1974 if(temp2[0]=='\"'&&temp2[lstrlen(temp2)-1]=='\"'){ 1977 1975 temp2[lstrlen(temp2)-1]=0; 1978 projectInfo.windowInfos.back()->ClassName=(char *)HeapAlloc(hHeap,0,i2+1); 1979 lstrcpy(projectInfo.windowInfos.back()->ClassName,temp2+1); 1976 projectInfo.windowInfos.back()->SetClassName( temp2+1 ); 1980 1977 } 1981 1978 } … … 1994 1991 } 1995 1992 else if(lstrcmpi(temporary,"ITEM")==0&&i3==1){ 1996 CHILDINFO *pChildInfo = new CHILDINFO();1993 ActiveBasic::PM::ChildWindowInfo *pChildInfo = new ActiveBasic::PM::ChildWindowInfo(); 1997 1994 1998 1995 //ID 1999 1996 i5=GetOneParameter(temp2,0,temp3); 2000 pChildInfo->IdName=(char *)HeapAlloc(hHeap,0,lstrlen(temp3)+1); 2001 lstrcpy(pChildInfo->IdName,temp3); 1997 pChildInfo->SetName( temp3 ); 2002 1998 2003 1999 //位置 … … 2015 2011 RemoveStringQuotes(temp3); 2016 2012 RestoreCaptionSequence(temp3); 2017 pChildInfo->caption=(char *)HeapAlloc(hHeap,0,lstrlen(temp3)+1); 2018 lstrcpy(pChildInfo->caption,temp3); 2013 pChildInfo->SetCaption( temp3 ); 2019 2014 2020 2015 //スタイル 2021 2016 i5=GetOneParameter(temp2,i5,temp3); 2022 pChildInfo-> style=GetValue(temp3);2017 pChildInfo->SetStyle( GetValue(temp3) ); 2023 2018 2024 2019 //拡張スタイル 2025 2020 i5=GetOneParameter(temp2,i5,temp3); 2026 pChildInfo-> ExStyle=GetValue(temp3);2021 pChildInfo->SetExStyle( GetValue(temp3) ); 2027 2022 2028 2023 //クラス … … 2033 2028 //イメージ ボックスの場合 2034 2029 i5=GetOneParameter(temp2,i5,temp3); 2035 pChildInfo-> ImageCtrlInfo.type=GetValue(temp3);2030 pChildInfo->image.type = (ActiveBasic::PM::ImageReferenceType::EnumType)GetValue(temp3); 2036 2031 i5=GetOneParameter(temp2,i5,temp3); 2037 2032 RemoveStringQuotes(temp3); 2038 pChildInfo->ImageCtrlInfo.path=(char *)HeapAlloc(hHeap,0,lstrlen(temp3)+1); 2039 lstrcpy(pChildInfo->ImageCtrlInfo.path,temp3); 2033 pChildInfo->image.path = temp3; 2040 2034 } 2041 2035 … … 2177 2171 return; 2178 2172 } 2179 BOOST_FOREACH( WindowInfo *pWindowInfo, projectInfo.windowInfos )2173 BOOST_FOREACH( ActiveBasic::PM::WindowInfo *pWindowInfo, projectInfo.windowInfos ) 2180 2174 { 2181 2175 if(lstrcmpi(NewWindow.name,pWindowInfo->GetName().c_str())==0){ … … 2200 2194 2201 2195 //projectInfo.windowInfos構造体コレクションに追加 2202 projectInfo.windowInfos.push_back( new WindowInfo() );2196 projectInfo.windowInfos.push_back( new ActiveBasic::PM::WindowInfo() ); 2203 2197 2204 2198 … … 2219 2213 2220 2214 //ウィンドウテキスト 2221 projectInfo.windowInfos.back()->caption=(char *)HeapAlloc(hHeap,0,lstrlen(NewWindow.name)+1); 2222 lstrcpy(projectInfo.windowInfos.back()->caption,NewWindow.name); 2215 projectInfo.windowInfos.back()->SetCaption( NewWindow.name ); 2223 2216 2224 2217 //スタイル … … 2226 2219 case WNDTYPE_DEFAULT: 2227 2220 //通常ウィンドウ 2228 projectInfo.windowInfos.back()-> style=WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX;2221 projectInfo.windowInfos.back()->SetStyle( WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX ); 2229 2222 break; 2230 2223 case WNDTYPE_MODALDLG: 2231 2224 case WNDTYPE_MODELESSDLG: 2232 2225 //ダイアログ テンプレート(最大化、最小化ボタンをなくして、細枠にする) 2233 projectInfo.windowInfos.back()-> style=WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU;2226 projectInfo.windowInfos.back()->SetStyle( WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU ); 2234 2227 break; 2235 2228 } 2236 2229 2237 2230 //拡張スタイル 2238 projectInfo.windowInfos.back()-> ExStyle=0;2231 projectInfo.windowInfos.back()->SetExStyle( 0 ); 2239 2232 2240 2233 //メニュー 2241 projectInfo.windowInfos.back()->MenuID=0; 2242 2243 //ID 2244 projectInfo.windowInfos.back()->id=0; 2234 projectInfo.windowInfos.back()->SetMenuIdName( "" ); 2245 2235 2246 2236 //背景色 2247 projectInfo.windowInfos.back()-> bgColor=COLOR_3DFACE;2237 projectInfo.windowInfos.back()->SetBackgroundColor( COLOR_3DFACE ); 2248 2238 2249 2239 //フォント … … 2251 2241 2252 2242 //アイコン 2253 projectInfo.windowInfos.back()-> IconResName=0;2243 projectInfo.windowInfos.back()->SetIconResourceName( "" ); 2254 2244 2255 2245 //クラス名 2256 2246 lstrcpy(temporary,"NORMAL"); 2257 projectInfo.windowInfos.back()->ClassName=(char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1); 2258 lstrcpy(projectInfo.windowInfos.back()->ClassName,temporary); 2247 projectInfo.windowInfos.back()->SetClassName( temporary ); 2259 2248 2260 2249 //コールバック関数名 … … 2323 2312 int i; 2324 2313 2325 WindowInfo *pWindowInfo = projectInfo.windowInfos[WndInfoNum];2314 ActiveBasic::PM::WindowInfo *pWindowInfo = projectInfo.windowInfos[WndInfoNum]; 2326 2315 2327 2316 //ウィンドウが開かれている場合は閉じる … … 2335 2324 //ウィンドウ情報のメモリを解放 2336 2325 HeapDefaultFree(pWindowInfo->filepath); 2337 HeapDefaultFree(pWindowInfo->caption);2338 HeapDefaultFree(pWindowInfo->ClassName);2339 2326 HeapDefaultFree(pWindowInfo->CallBackName); 2340 2327 2341 2328 //子ウィンドウのメモリを解放 2342 for(i=0;i<pWindowInfo->childWindowInfos.size();i++){ 2343 HeapDefaultFree(pWindowInfo->childWindowInfos[i]->IdName); 2344 HeapDefaultFree(pWindowInfo->childWindowInfos[i]->caption); 2345 delete pWindowInfo->childWindowInfos[i]; 2329 BOOST_FOREACH( ActiveBasic::PM::ChildWindowInfo *pChildWindowInfo, pWindowInfo->childWindowInfos ) 2330 { 2331 delete pChildWindowInfo; 2346 2332 } 2347 2333 pWindowInfo->childWindowInfos.clear();
Note:
See TracChangeset
for help on using the changeset viewer.