Ignore:
Timestamp:
May 21, 2008, 11:02:07 PM (16 years ago)
Author:
dai_9181
Message:

Projectクラスをリファクタリング

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/abdev/Resource.cpp

    r622 r623  
    1111#endif
    1212
    13 void GetResourceData(void){
    14     extern HANDLE hHeap;
    15     int i2,i3;
    16     char *buffer,temporary[MAX_PATH],temp2[MAX_PATH],temp3[MAX_PATH];
    17     HANDLE hFile;
    18 
    19     hFile=CreateFile( projectInfo.GetResourceFileFullPath().c_str(),GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    20     if(hFile==INVALID_HANDLE_VALUE) return;
    21     i2=GetFileSize(hFile,NULL);
    22     buffer=(char *)HeapAlloc(hHeap,0,i2+i2+1);
    23     ReadFile(hFile,buffer,i2,(DWORD *)&i3,NULL);
    24     CloseHandle(hFile);
    25     buffer[i3]=0;
    26     ChangeReturnCode(buffer);
    27 
    28     i2=0;
    29     while(1){
    30         //ID
    31         while(buffer[i2]==' '||buffer[i2]=='\t') i2++;
    32         for(i3=0;;i2++,i3++){
    33             if(!IsVariableChar(buffer[i2])){
    34                 temp3[i3]=0;
     13
     14void Project_CursorResInsert(void){
     15    extern HANDLE hHeap;
     16    extern LPSTR CursorFileFilter;
     17    int i3;
     18    char temporary[MAX_PATH];
     19
     20    //"カーソル ファイルを指定してください"
     21    if(!GetFilePathDialog(hOwner,temporary,CursorFileFilter,STRING_FILEOPENTITLE_CURSOR,TRUE)) return;
     22
     23    ActiveBasic::Common::ResourceItem item;
     24    item.filepath = projectInfo.GetWorkDir().GetRelationalPath( temporary );
     25
     26    for(i3=1;;i3++){
     27        sprintf(temporary,"IDC_CURSOR%d",i3);
     28        bool isDuplicate = false;
     29        BOOST_FOREACH( const ActiveBasic::Common::ResourceItem &resourceItem, projectInfo.resourceManager.cursorResources )
     30        {
     31            if( resourceItem.idName == temporary )
     32            {
     33                isDuplicate = true;
    3534                break;
    3635            }
    37             temp3[i3]=buffer[i2];
    38         }
    39         if(temp3[0]=='\0') break;
    40 
    41         //Type
    42         while(buffer[i2]==' '||buffer[i2]=='\t') i2++;
    43         for(i3=0;;i2++,i3++){
    44             if(!IsVariableChar(buffer[i2])){
    45                 temporary[i3]=0;
    46                 break;
    47             }
    48             temporary[i3]=buffer[i2];
    49         }
    50 
    51         //FileName
    52         while(buffer[i2]==' '||buffer[i2]=='\t') i2++;
    53         if(buffer[i2]!='\"'){
    54             //エラー
    55             return;
    56         }
    57         for(i2++,i3=0;;i2++,i3++){
    58             if(buffer[i2]=='\"'){
    59                 temp2[i3]=0;
    60                 break;
    61             }
    62             temp2[i3]=buffer[i2];
    63         }
    64 
    65         if(lstrcmpi(temporary,"CURSOR")==0){
    66             projectInfo.res.pCursorResInfo=(RESITEMINFO *)HeapReAlloc(hHeap,0,projectInfo.res.pCursorResInfo,(projectInfo.res.NumberOfCursorRes+1)*sizeof(RESITEMINFO));
    67 
    68             projectInfo.res.pCursorResInfo[projectInfo.res.NumberOfCursorRes].IdName=
    69                 (char *)HeapAlloc(hHeap,0,lstrlen(temp3)+1);
    70             lstrcpy(projectInfo.res.pCursorResInfo[projectInfo.res.NumberOfCursorRes].IdName,temp3);
    71 
    72             projectInfo.res.pCursorResInfo[projectInfo.res.NumberOfCursorRes].path=
    73                 (char *)HeapAlloc(hHeap,0,lstrlen(temp2)+1);
    74             lstrcpy(projectInfo.res.pCursorResInfo[projectInfo.res.NumberOfCursorRes].path,temp2);
    75 
    76             projectInfo.res.NumberOfCursorRes++;
    77         }
    78         else if(lstrcmpi(temporary,"BITMAP")==0){
    79             projectInfo.res.pBitmapResInfo=(RESITEMINFO *)HeapReAlloc(hHeap,0,projectInfo.res.pBitmapResInfo,(projectInfo.res.NumberOfBitmapRes+1)*sizeof(RESITEMINFO));
    80 
    81             projectInfo.res.pBitmapResInfo[projectInfo.res.NumberOfBitmapRes].IdName=
    82                 (char *)HeapAlloc(hHeap,0,lstrlen(temp3)+1);
    83             lstrcpy(projectInfo.res.pBitmapResInfo[projectInfo.res.NumberOfBitmapRes].IdName,temp3);
    84 
    85             projectInfo.res.pBitmapResInfo[projectInfo.res.NumberOfBitmapRes].path=
    86                 (char *)HeapAlloc(hHeap,0,lstrlen(temp2)+1);
    87             lstrcpy(projectInfo.res.pBitmapResInfo[projectInfo.res.NumberOfBitmapRes].path,temp2);
    88 
    89             projectInfo.res.NumberOfBitmapRes++;
    90         }
    91         else if(lstrcmpi(temporary,"ICON")==0){
    92             projectInfo.res.pIconResInfo=(RESITEMINFO *)HeapReAlloc(hHeap,0,projectInfo.res.pIconResInfo,(projectInfo.res.NumberOfIconRes+1)*sizeof(RESITEMINFO));
    93 
    94             projectInfo.res.pIconResInfo[projectInfo.res.NumberOfIconRes].IdName=
    95                 (char *)HeapAlloc(hHeap,0,lstrlen(temp3)+1);
    96             lstrcpy(projectInfo.res.pIconResInfo[projectInfo.res.NumberOfIconRes].IdName,temp3);
    97 
    98             projectInfo.res.pIconResInfo[projectInfo.res.NumberOfIconRes].path=
    99                 (char *)HeapAlloc(hHeap,0,lstrlen(temp2)+1);
    100             lstrcpy(projectInfo.res.pIconResInfo[projectInfo.res.NumberOfIconRes].path,temp2);
    101 
    102             projectInfo.res.NumberOfIconRes++;
    103         }
    104         else if(lstrcmpi(temporary,"RT_MANIFEST")==0){
    105             //無視
    106         }
    107         else{
    108             //エラー
    109             return;
    110         }
    111 
    112         i2++;
    113         while(buffer[i2]==' '||buffer[i2]=='\t') i2++;
    114         if(buffer[i2]=='\0') break;
    115         else if(buffer[i2]!='\n'){
    116             //エラー
    117             return;
    118         }
    119         i2++;
    120     }
    121 
    122     HeapDefaultFree(buffer);
    123 }
    124 
    125 void Project_CursorResInsert(void){
    126     extern HANDLE hHeap;
    127     extern LPSTR CursorFileFilter;
    128     int i2,i3;
    129     char temporary[MAX_PATH];
    130 
    131     //"カーソル ファイルを指定してください"
    132     if(!GetFilePathDialog(hOwner,temporary,CursorFileFilter,STRING_FILEOPENTITLE_CURSOR,TRUE)) return;
    133 
    134     lstrcpy( temporary, projectInfo.GetWorkDir().GetRelationalPath( temporary ).c_str() );
    135 
    136     projectInfo.res.pCursorResInfo=(RESITEMINFO *)HeapReAlloc(hHeap,0,projectInfo.res.pCursorResInfo,(projectInfo.res.NumberOfCursorRes+1)*sizeof(RESITEMINFO));
    137 
    138     projectInfo.res.pCursorResInfo[projectInfo.res.NumberOfCursorRes].path=
    139         (char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
    140     lstrcpy(projectInfo.res.pCursorResInfo[projectInfo.res.NumberOfCursorRes].path,temporary);
    141 
    142     for(i3=1;;i3++){
    143         sprintf(temporary,"IDC_CURSOR%d",i3);
    144         for(i2=0;i2<projectInfo.res.NumberOfCursorRes;i2++){
    145             if(lstrcmp(temporary,projectInfo.res.pCursorResInfo[i2].IdName)==0) break;
    146         }
    147         if(i2==projectInfo.res.NumberOfCursorRes) break;
    148     }
    149 
    150     projectInfo.res.pCursorResInfo[projectInfo.res.NumberOfCursorRes].IdName=
    151         (char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
    152     lstrcpy(projectInfo.res.pCursorResInfo[projectInfo.res.NumberOfCursorRes].IdName,temporary);
     36        }
     37
     38        if( !isDuplicate )
     39        {
     40            break;
     41        }
     42    }
     43    item.idName = temporary;
    15344
    15445    //ツリービューに追加
     
    15950    tv.item.iImage=6;
    16051    tv.item.iSelectedImage=6;
    161     tv.hParent=projectInfo.res.hCursorTreeItem;
     52    tv.hParent = hCursorTreeItemForProjectView;
    16253    tv.item.pszText=temporary;
    16354
    164     projectInfo.res.pCursorResInfo[projectInfo.res.NumberOfCursorRes].hTreeItem=
    165         TreeView_InsertItem(hMaterialTreeView,&tv);
    166 
    167     TreeView_SelectItem(hMaterialTreeView,projectInfo.res.pCursorResInfo[projectInfo.res.NumberOfCursorRes].hTreeItem);
    168 
    169     projectInfo.res.NumberOfCursorRes++;
     55    item.hTreeItem = TreeView_InsertItem(hMaterialTreeView,&tv);
     56
     57    TreeView_SelectItem( hMaterialTreeView, item.hTreeItem );
     58
     59    projectInfo.resourceManager.cursorResources.push_back( item );
     60
    17061    projectInfo.ModifuOfResource=1;
    17162}
    17263void Project_Cursor_Delete(int CursorInfoNum){
    173     int i;
    174 
    17564    //ツリービューから削除
    17665    extern HWND hMaterialTreeView;
    177     TreeView_DeleteItem(hMaterialTreeView,projectInfo.res.pCursorResInfo[CursorInfoNum].hTreeItem);
     66    TreeView_DeleteItem(hMaterialTreeView,projectInfo.resourceManager.cursorResources[CursorInfoNum].hTreeItem);
    17867
    17968    //projectInfo.pCursorInfo構造体から削除
    180     HeapDefaultFree(projectInfo.res.pCursorResInfo[CursorInfoNum].IdName);
    181     HeapDefaultFree(projectInfo.res.pCursorResInfo[CursorInfoNum].path);
    182     projectInfo.res.NumberOfCursorRes--;
    183     for(i=CursorInfoNum;i<projectInfo.res.NumberOfCursorRes;i++)
    184         projectInfo.res.pCursorResInfo[i]=projectInfo.res.pCursorResInfo[i+1];
     69    Jenga::Common::EraseVectorItem<ActiveBasic::Common::ResourceItems>( projectInfo.resourceManager.cursorResources, CursorInfoNum );
    18570
    18671    projectInfo.ModifuOfResource=1;
     
    19479    TVITEM tvItem;
    19580
    196     if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_INPUTID),hOwner,(DLGPROC)DlgProject_ResourceID_Input,(long)projectInfo.res.pCursorResInfo[CursorInfoNum].IdName)) return;
     81    if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_INPUTID),hOwner,(DLGPROC)DlgProject_ResourceID_Input,(long)projectInfo.resourceManager.cursorResources[CursorInfoNum].idName.c_str())) return;
    19782
    19883    //重複チェック
    199     for(i2=0;i2<projectInfo.res.NumberOfCursorRes;i2++){
     84    for(i2=0;i2<projectInfo.resourceManager.cursorResources.size();i2++){
    20085        if(i2==CursorInfoNum) continue;
    201         if(lstrcmp(NewIdName,projectInfo.res.pCursorResInfo[i2].IdName)==0){
     86        if( projectInfo.resourceManager.cursorResources[i2].idName == NewIdName )
     87        {
    20288            //"ID \"%s\" は既にプロジェクト内に存在します。"
    20389            sprintf(temporary,STRING_DUPLICATIONERROR_ID_IN_PROJECT,NewIdName);
     
    20793    }
    20894
    209     HeapDefaultFree(projectInfo.res.pCursorResInfo[CursorInfoNum].IdName);
    210     projectInfo.res.pCursorResInfo[CursorInfoNum].IdName=(char *)HeapAlloc(hHeap,0,lstrlen(NewIdName)+1);
    211     lstrcpy(projectInfo.res.pCursorResInfo[CursorInfoNum].IdName,NewIdName);
    212 
    213     tvItem.hItem=projectInfo.res.pCursorResInfo[CursorInfoNum].hTreeItem;
     95    projectInfo.resourceManager.cursorResources[CursorInfoNum].idName = NewIdName;
     96
     97    tvItem.hItem=projectInfo.resourceManager.cursorResources[CursorInfoNum].hTreeItem;
    21498    tvItem.mask=TVIF_TEXT;
    215     tvItem.pszText=projectInfo.res.pCursorResInfo[CursorInfoNum].IdName;
    216     tvItem.cchTextMax=lstrlen(projectInfo.res.pCursorResInfo[CursorInfoNum].IdName)+1;
     99    lstrcpy( temporary, projectInfo.resourceManager.cursorResources[CursorInfoNum].idName.c_str() );
     100    tvItem.pszText=temporary;
     101    tvItem.cchTextMax=lstrlen(temporary)+1;
    217102    TreeView_SetItem(hMaterialTreeView,&tvItem);
    218103
     
    220105
    221106    TreeView_SortChildren(hMaterialTreeView,
    222         TreeView_GetParent(hMaterialTreeView,projectInfo.res.pCursorResInfo[CursorInfoNum].hTreeItem),
     107        TreeView_GetParent(hMaterialTreeView,projectInfo.resourceManager.cursorResources[CursorInfoNum].hTreeItem),
    223108        0);
    224109}
     
    233118    if(!GetFilePathDialog(hOwner,temporary,BitmapFileFilter,STRING_FILEOPENTITLE_BITMAP,TRUE)) return;
    234119
    235     lstrcpy( temporary, projectInfo.GetWorkDir().GetRelationalPath( temporary ).c_str() );
    236 
    237     projectInfo.res.pBitmapResInfo=(RESITEMINFO *)HeapReAlloc(hHeap,0,projectInfo.res.pBitmapResInfo,(projectInfo.res.NumberOfBitmapRes+1)*sizeof(RESITEMINFO));
    238 
    239     projectInfo.res.pBitmapResInfo[projectInfo.res.NumberOfBitmapRes].path=
    240         (char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
    241     lstrcpy(projectInfo.res.pBitmapResInfo[projectInfo.res.NumberOfBitmapRes].path,temporary);
     120    ActiveBasic::Common::ResourceItem item;
     121    item.filepath = projectInfo.GetWorkDir().GetRelationalPath( temporary );
    242122
    243123    for(i3=1;;i3++){
    244124        sprintf(temporary,"IDB_BITMAP%d",i3);
    245         for(i2=0;i2<projectInfo.res.NumberOfBitmapRes;i2++){
    246             if(lstrcmp(temporary,projectInfo.res.pBitmapResInfo[i2].IdName)==0) break;
    247         }
    248         if(i2==projectInfo.res.NumberOfBitmapRes) break;
    249     }
    250 
    251     projectInfo.res.pBitmapResInfo[projectInfo.res.NumberOfBitmapRes].IdName=
    252         (char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
    253     lstrcpy(projectInfo.res.pBitmapResInfo[projectInfo.res.NumberOfBitmapRes].IdName,temporary);
     125        bool isDuplicate = false;
     126        BOOST_FOREACH( const ActiveBasic::Common::ResourceItem &resourceItem, projectInfo.resourceManager.bitmapResources )
     127        {
     128            if( resourceItem.idName == temporary )
     129            {
     130                isDuplicate = true;
     131                break;
     132            }
     133        }
     134
     135        if( !isDuplicate )
     136        {
     137            break;
     138        }
     139    }
     140    item.idName = temporary;
    254141
    255142    //ツリービューに追加
     
    260147    tv.item.iImage=5;
    261148    tv.item.iSelectedImage=5;
    262     tv.hParent=projectInfo.res.hBitmapTreeItem;
     149    tv.hParent = hBitmapTreeItemForProjectView;
    263150    tv.item.pszText=temporary;
    264151
    265     projectInfo.res.pBitmapResInfo[projectInfo.res.NumberOfBitmapRes].hTreeItem=
    266         TreeView_InsertItem(hMaterialTreeView,&tv);
    267 
    268     TreeView_SelectItem(hMaterialTreeView,projectInfo.res.pBitmapResInfo[projectInfo.res.NumberOfBitmapRes].hTreeItem);
    269 
    270     projectInfo.res.NumberOfBitmapRes++;
     152    item.hTreeItem = TreeView_InsertItem(hMaterialTreeView,&tv);
     153
     154    TreeView_SelectItem(hMaterialTreeView,item.hTreeItem);
     155
     156    projectInfo.resourceManager.bitmapResources.push_back( item );
     157
    271158    projectInfo.ModifuOfResource=1;
    272159
     
    283170}
    284171void Project_Bitmap_Delete(int BitmapInfoNum){
    285     int i;
    286 
    287172    //ツリービューから削除
    288173    extern HWND hMaterialTreeView;
    289     TreeView_DeleteItem(hMaterialTreeView,projectInfo.res.pBitmapResInfo[BitmapInfoNum].hTreeItem);
     174    TreeView_DeleteItem(hMaterialTreeView,projectInfo.resourceManager.bitmapResources[BitmapInfoNum].hTreeItem);
    290175
    291176    //projectInfo.pBitmapInfo構造体から削除
    292     HeapDefaultFree(projectInfo.res.pBitmapResInfo[BitmapInfoNum].IdName);
    293     HeapDefaultFree(projectInfo.res.pBitmapResInfo[BitmapInfoNum].path);
    294     projectInfo.res.NumberOfBitmapRes--;
    295     for(i=BitmapInfoNum;i<projectInfo.res.NumberOfBitmapRes;i++)
    296         projectInfo.res.pBitmapResInfo[i]=projectInfo.res.pBitmapResInfo[i+1];
     177    Jenga::Common::EraseVectorItem<ActiveBasic::Common::ResourceItems>( projectInfo.resourceManager.bitmapResources, BitmapInfoNum );
    297178
    298179    projectInfo.ModifuOfResource=1;
     
    306187    TVITEM tvItem;
    307188
    308     if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_INPUTID),hOwner,(DLGPROC)DlgProject_ResourceID_Input,(long)projectInfo.res.pBitmapResInfo[BitmapInfoNum].IdName)) return;
     189    if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_INPUTID),hOwner,(DLGPROC)DlgProject_ResourceID_Input,(long)projectInfo.resourceManager.bitmapResources[BitmapInfoNum].idName.c_str())) return;
    309190
    310191    //重複チェック
    311     for(i2=0;i2<projectInfo.res.NumberOfBitmapRes;i2++){
     192    for(i2=0;i2<projectInfo.resourceManager.bitmapResources.size();i2++){
    312193        if(i2==BitmapInfoNum) continue;
    313         if(lstrcmp(NewIdName,projectInfo.res.pBitmapResInfo[i2].IdName)==0){
     194        if( projectInfo.resourceManager.bitmapResources[i2].idName == NewIdName )
     195        {
    314196            //"ID \"%s\" は既にプロジェクト内に存在します。"
    315197            sprintf(temporary,STRING_DUPLICATIONERROR_ID_IN_PROJECT,NewIdName);
     
    319201    }
    320202
    321     HeapDefaultFree(projectInfo.res.pBitmapResInfo[BitmapInfoNum].IdName);
    322     projectInfo.res.pBitmapResInfo[BitmapInfoNum].IdName=(char *)HeapAlloc(hHeap,0,lstrlen(NewIdName)+1);
    323     lstrcpy(projectInfo.res.pBitmapResInfo[BitmapInfoNum].IdName,NewIdName);
    324 
    325     tvItem.hItem=projectInfo.res.pBitmapResInfo[BitmapInfoNum].hTreeItem;
     203    projectInfo.resourceManager.bitmapResources[BitmapInfoNum].idName = NewIdName;
     204
     205    tvItem.hItem=projectInfo.resourceManager.bitmapResources[BitmapInfoNum].hTreeItem;
    326206    tvItem.mask=TVIF_TEXT;
    327     tvItem.pszText=projectInfo.res.pBitmapResInfo[BitmapInfoNum].IdName;
    328     tvItem.cchTextMax=lstrlen(projectInfo.res.pBitmapResInfo[BitmapInfoNum].IdName)+1;
     207    lstrcpy( temporary, projectInfo.resourceManager.bitmapResources[BitmapInfoNum].idName.c_str() );
     208    tvItem.pszText = temporary;
     209    tvItem.cchTextMax=lstrlen(temporary)+1;
    329210    TreeView_SetItem(hMaterialTreeView,&tvItem);
    330211
     
    332213
    333214    TreeView_SortChildren(hMaterialTreeView,
    334         TreeView_GetParent(hMaterialTreeView,projectInfo.res.pBitmapResInfo[BitmapInfoNum].hTreeItem),
     215        TreeView_GetParent(hMaterialTreeView,projectInfo.resourceManager.bitmapResources[BitmapInfoNum].hTreeItem),
    335216        0);
    336217}
     
    344225    if(!GetFilePathDialog(hOwner,temporary,IconFileFilter,STRING_FILEOPENTITLE_ICON,TRUE)) return;
    345226
    346     lstrcpy( temporary, projectInfo.GetWorkDir().GetRelationalPath( temporary ).c_str() );
    347 
    348     projectInfo.res.pIconResInfo=(RESITEMINFO *)HeapReAlloc(hHeap,0,projectInfo.res.pIconResInfo,(projectInfo.res.NumberOfIconRes+1)*sizeof(RESITEMINFO));
    349 
    350     projectInfo.res.pIconResInfo[projectInfo.res.NumberOfIconRes].path=
    351         (char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
    352     lstrcpy(projectInfo.res.pIconResInfo[projectInfo.res.NumberOfIconRes].path,temporary);
     227    ActiveBasic::Common::ResourceItem item;
     228    item.filepath = projectInfo.GetWorkDir().GetRelationalPath( temporary );
    353229
    354230    for(i3=1;;i3++){
    355231        sprintf(temporary,"IDI_ICON%d",i3);
    356         for(i2=0;i2<projectInfo.res.NumberOfIconRes;i2++){
    357             if(lstrcmp(temporary,projectInfo.res.pIconResInfo[i2].IdName)==0) break;
    358         }
    359         if(i2==projectInfo.res.NumberOfIconRes) break;
    360     }
    361 
    362     projectInfo.res.pIconResInfo[projectInfo.res.NumberOfIconRes].IdName=
    363         (char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
    364     lstrcpy(projectInfo.res.pIconResInfo[projectInfo.res.NumberOfIconRes].IdName,temporary);
     232        bool isDuplicate = false;
     233        BOOST_FOREACH( const ActiveBasic::Common::ResourceItem &resourceItem, projectInfo.resourceManager.iconResources )
     234        {
     235            if( resourceItem.idName == temporary )
     236            {
     237                isDuplicate = true;
     238                break;
     239            }
     240        }
     241
     242        if( !isDuplicate )
     243        {
     244            break;
     245        }
     246    }
     247    item.idName = temporary;
    365248
    366249    //ツリービューに追加
     
    371254    tv.item.iImage=4;
    372255    tv.item.iSelectedImage=4;
    373     tv.hParent=projectInfo.res.hIconTreeItem;
    374     if(projectInfo.res.NumberOfIconRes==0) lstrcat(temporary," (Main)");
     256    tv.hParent = hIconTreeItemForProjectView;
     257    if(projectInfo.resourceManager.iconResources.size()==0) lstrcat(temporary," (Main)");
    375258    tv.item.pszText=temporary;
    376259
    377     projectInfo.res.pIconResInfo[projectInfo.res.NumberOfIconRes].hTreeItem=
     260    item.hTreeItem=
    378261        TreeView_InsertItem(hMaterialTreeView,&tv);
    379262
    380     TreeView_SelectItem(hMaterialTreeView,projectInfo.res.pIconResInfo[projectInfo.res.NumberOfIconRes].hTreeItem);
    381 
    382     projectInfo.res.NumberOfIconRes++;
     263    TreeView_SelectItem(hMaterialTreeView,item.hTreeItem);
     264
     265    projectInfo.resourceManager.iconResources.push_back( item );
     266
    383267    projectInfo.ModifuOfResource=1;
    384268
     
    401285    //ツリービューから削除
    402286    extern HWND hMaterialTreeView;
    403     TreeView_DeleteItem(hMaterialTreeView,projectInfo.res.pIconResInfo[IconInfoNum].hTreeItem);
     287    TreeView_DeleteItem(hMaterialTreeView,projectInfo.resourceManager.iconResources[IconInfoNum].hTreeItem);
    404288
    405289    //projectInfo.pIconInfo構造体から削除
    406     HeapDefaultFree(projectInfo.res.pIconResInfo[IconInfoNum].IdName);
    407     HeapDefaultFree(projectInfo.res.pIconResInfo[IconInfoNum].path);
    408     projectInfo.res.NumberOfIconRes--;
    409     for(i2=IconInfoNum;i2<projectInfo.res.NumberOfIconRes;i2++) projectInfo.res.pIconResInfo[i2]=projectInfo.res.pIconResInfo[i2+1];
    410 
    411     if(IconInfoNum==0&&projectInfo.res.NumberOfIconRes){
     290    Jenga::Common::EraseVectorItem<ActiveBasic::Common::ResourceItems>( projectInfo.resourceManager.iconResources, IconInfoNum );
     291
     292    if(IconInfoNum==0&&projectInfo.resourceManager.iconResources.size()){
    412293        tv.mask=TVIF_TEXT|TVIF_HANDLE;
    413294        tv.pszText=temporary;
    414295        tv.cchTextMax=MAX_PATH;
    415         tv.hItem=projectInfo.res.pIconResInfo[0].hTreeItem;
     296        tv.hItem=projectInfo.resourceManager.iconResources[0].hTreeItem;
    416297        TreeView_GetItem(hMaterialTreeView,&tv);
    417298        lstrcat(tv.pszText," (Main)");
     
    439320    TVITEM tvItem;
    440321
    441     if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_INPUTID),hOwner,(DLGPROC)DlgProject_ResourceID_Input,(long)projectInfo.res.pIconResInfo[IconInfoNum].IdName)) return;
     322    if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_INPUTID),hOwner,(DLGPROC)DlgProject_ResourceID_Input,(long)projectInfo.resourceManager.iconResources[IconInfoNum].idName.c_str())) return;
    442323
    443324    //重複チェック
    444     for(i2=0;i2<projectInfo.res.NumberOfIconRes;i2++){
     325    for(i2=0;i2<projectInfo.resourceManager.iconResources.size();i2++){
    445326        if(i2==IconInfoNum) continue;
    446         if(lstrcmp(NewIdName,projectInfo.res.pIconResInfo[i2].IdName)==0){
     327        if( projectInfo.resourceManager.iconResources[i2].idName == NewIdName )
     328        {
    447329            //"ID \"%s\" は既にプロジェクト内に存在します。"
    448330            sprintf(temporary,STRING_DUPLICATIONERROR_ID_IN_PROJECT,NewIdName);
     
    452334    }
    453335
    454     HeapDefaultFree(projectInfo.res.pIconResInfo[IconInfoNum].IdName);
    455     projectInfo.res.pIconResInfo[IconInfoNum].IdName=(char *)HeapAlloc(hHeap,0,lstrlen(NewIdName)+1);
    456     lstrcpy(projectInfo.res.pIconResInfo[IconInfoNum].IdName,NewIdName);
    457 
    458     tvItem.hItem=projectInfo.res.pIconResInfo[IconInfoNum].hTreeItem;
     336    projectInfo.resourceManager.iconResources[IconInfoNum].idName = NewIdName;
     337
     338    tvItem.hItem=projectInfo.resourceManager.iconResources[IconInfoNum].hTreeItem;
    459339    tvItem.mask=TVIF_TEXT;
    460340    if(IconInfoNum==0){
    461         sprintf(temporary,"%s (Main)",projectInfo.res.pIconResInfo[IconInfoNum].IdName);
    462         tvItem.pszText=temporary;
    463     }
    464     else tvItem.pszText=projectInfo.res.pIconResInfo[IconInfoNum].IdName;
    465     tvItem.cchTextMax=lstrlen(projectInfo.res.pIconResInfo[IconInfoNum].IdName)+1;
     341        sprintf(temporary,"%s (Main)",projectInfo.resourceManager.iconResources[IconInfoNum].idName.c_str());
     342    }
     343    else
     344    {
     345        sprintf(temporary,"%s",projectInfo.resourceManager.iconResources[IconInfoNum].idName.c_str());
     346    }
     347    tvItem.pszText=temporary;
     348    tvItem.cchTextMax=lstrlen(temporary)+1;
    466349    TreeView_SetItem(hMaterialTreeView,&tvItem);
    467350
     
    469352
    470353    TreeView_SortChildren(hMaterialTreeView,
    471         TreeView_GetParent(hMaterialTreeView,projectInfo.res.pIconResInfo[IconInfoNum].hTreeItem),
     354        TreeView_GetParent(hMaterialTreeView,projectInfo.resourceManager.iconResources[IconInfoNum].hTreeItem),
    472355        0);
    473356}
Note: See TracChangeset for help on using the changeset viewer.