#include "common.h" #if defined(JPN) //日本語 #include "pj_msg_jpn.h" #else //英語 #include "pj_msg_eng.h" #endif void GetResourceData(void){ extern HANDLE hHeap; extern PROJECTINFO ProjectInfo; int i2,i3; char *buffer,temporary[MAX_PATH],temp2[MAX_PATH],temp3[MAX_PATH]; HANDLE hFile; lstrcpy(temporary,ProjectInfo.ResourceFileName); GetFullPath(temporary,ProjectInfo.dir); hFile=CreateFile(temporary,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if(hFile==INVALID_HANDLE_VALUE) return; i2=GetFileSize(hFile,NULL); buffer=(char *)HeapAlloc(hHeap,0,i2+i2+1); ReadFile(hFile,buffer,i2,(DWORD *)&i3,NULL); CloseHandle(hFile); buffer[i3]=0; ChangeReturnCode(buffer); i2=0; while(1){ //ID while(buffer[i2]==' '||buffer[i2]=='\t') i2++; for(i3=0;;i2++,i3++){ if(!IsVariableChar(buffer[i2])){ temp3[i3]=0; break; } temp3[i3]=buffer[i2]; } if(temp3[0]=='\0') break; //Type while(buffer[i2]==' '||buffer[i2]=='\t') i2++; for(i3=0;;i2++,i3++){ if(!IsVariableChar(buffer[i2])){ temporary[i3]=0; break; } temporary[i3]=buffer[i2]; } //FileName while(buffer[i2]==' '||buffer[i2]=='\t') i2++; if(buffer[i2]!='\"'){ //エラー return; } for(i2++,i3=0;;i2++,i3++){ if(buffer[i2]=='\"'){ temp2[i3]=0; break; } temp2[i3]=buffer[i2]; } if(lstrcmpi(temporary,"CURSOR")==0){ ProjectInfo.res.pCursorResInfo=(RESITEMINFO *)HeapReAlloc(hHeap,0,ProjectInfo.res.pCursorResInfo,(ProjectInfo.res.NumberOfCursorRes+1)*sizeof(RESITEMINFO)); ProjectInfo.res.pCursorResInfo[ProjectInfo.res.NumberOfCursorRes].IdName= (char *)HeapAlloc(hHeap,0,lstrlen(temp3)+1); lstrcpy(ProjectInfo.res.pCursorResInfo[ProjectInfo.res.NumberOfCursorRes].IdName,temp3); ProjectInfo.res.pCursorResInfo[ProjectInfo.res.NumberOfCursorRes].path= (char *)HeapAlloc(hHeap,0,lstrlen(temp2)+1); lstrcpy(ProjectInfo.res.pCursorResInfo[ProjectInfo.res.NumberOfCursorRes].path,temp2); ProjectInfo.res.NumberOfCursorRes++; } else if(lstrcmpi(temporary,"BITMAP")==0){ ProjectInfo.res.pBitmapResInfo=(RESITEMINFO *)HeapReAlloc(hHeap,0,ProjectInfo.res.pBitmapResInfo,(ProjectInfo.res.NumberOfBitmapRes+1)*sizeof(RESITEMINFO)); ProjectInfo.res.pBitmapResInfo[ProjectInfo.res.NumberOfBitmapRes].IdName= (char *)HeapAlloc(hHeap,0,lstrlen(temp3)+1); lstrcpy(ProjectInfo.res.pBitmapResInfo[ProjectInfo.res.NumberOfBitmapRes].IdName,temp3); ProjectInfo.res.pBitmapResInfo[ProjectInfo.res.NumberOfBitmapRes].path= (char *)HeapAlloc(hHeap,0,lstrlen(temp2)+1); lstrcpy(ProjectInfo.res.pBitmapResInfo[ProjectInfo.res.NumberOfBitmapRes].path,temp2); ProjectInfo.res.NumberOfBitmapRes++; } else if(lstrcmpi(temporary,"ICON")==0){ ProjectInfo.res.pIconResInfo=(RESITEMINFO *)HeapReAlloc(hHeap,0,ProjectInfo.res.pIconResInfo,(ProjectInfo.res.NumberOfIconRes+1)*sizeof(RESITEMINFO)); ProjectInfo.res.pIconResInfo[ProjectInfo.res.NumberOfIconRes].IdName= (char *)HeapAlloc(hHeap,0,lstrlen(temp3)+1); lstrcpy(ProjectInfo.res.pIconResInfo[ProjectInfo.res.NumberOfIconRes].IdName,temp3); ProjectInfo.res.pIconResInfo[ProjectInfo.res.NumberOfIconRes].path= (char *)HeapAlloc(hHeap,0,lstrlen(temp2)+1); lstrcpy(ProjectInfo.res.pIconResInfo[ProjectInfo.res.NumberOfIconRes].path,temp2); ProjectInfo.res.NumberOfIconRes++; } else if(lstrcmpi(temporary,"RT_MANIFEST")==0){ //無視 } else{ //エラー return; } i2++; while(buffer[i2]==' '||buffer[i2]=='\t') i2++; if(buffer[i2]=='\0') break; else if(buffer[i2]!='\n'){ //エラー return; } i2++; } //リソースが空の場合 if(ProjectInfo.res.NumberOfCursorRes==0&& ProjectInfo.res.NumberOfBitmapRes==0&& ProjectInfo.res.NumberOfIconRes==0) ProjectInfo.ResourceFileName[0]=0; HeapDefaultFree(buffer); } void Project_CursorResInsert(void){ extern HANDLE hHeap; extern LPSTR CursorFileFilter; extern PROJECTINFO ProjectInfo; int i2,i3; char temporary[MAX_PATH]; if(!ProjectInfo.ResourceFileName[0]) sprintf(ProjectInfo.ResourceFileName,"%s.rc",ProjectInfo.name); //"カーソル ファイルを指定してください" if(!GetFilePathDialog(hOwner,temporary,CursorFileFilter,STRING_FILEOPENTITLE_CURSOR,TRUE)) return; GetRelationalPath(temporary,ProjectInfo.dir); ProjectInfo.res.pCursorResInfo=(RESITEMINFO *)HeapReAlloc(hHeap,0,ProjectInfo.res.pCursorResInfo,(ProjectInfo.res.NumberOfCursorRes+1)*sizeof(RESITEMINFO)); ProjectInfo.res.pCursorResInfo[ProjectInfo.res.NumberOfCursorRes].path= (char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1); lstrcpy(ProjectInfo.res.pCursorResInfo[ProjectInfo.res.NumberOfCursorRes].path,temporary); for(i3=1;;i3++){ sprintf(temporary,"IDC_CURSOR%d",i3); for(i2=0;i2SelectingItem[0]==SELECT_WINDOW) ChangePropertyWindow(i2,GetWndInfoNum(MdiInfo[i2].path)); } } } void Project_Bitmap_Delete(int BitmapInfoNum){ extern PROJECTINFO ProjectInfo; int i; //ツリービューから削除 extern HWND hMaterialTreeView; TreeView_DeleteItem(hMaterialTreeView,ProjectInfo.res.pBitmapResInfo[BitmapInfoNum].hTreeItem); //ProjectInfo.pBitmapInfo構造体から削除 HeapDefaultFree(ProjectInfo.res.pBitmapResInfo[BitmapInfoNum].IdName); HeapDefaultFree(ProjectInfo.res.pBitmapResInfo[BitmapInfoNum].path); ProjectInfo.res.NumberOfBitmapRes--; for(i=BitmapInfoNum;iSelectingItem[0]==SELECT_WINDOW) ChangePropertyWindow(i2,GetWndInfoNum(MdiInfo[i2].path)); } } } void Project_Icon_Delete(int IconInfoNum){ extern HANDLE hHeap; extern PROJECTINFO ProjectInfo; int i2; char temporary[MAX_PATH]; TVITEM tv; //ツリービューから削除 extern HWND hMaterialTreeView; TreeView_DeleteItem(hMaterialTreeView,ProjectInfo.res.pIconResInfo[IconInfoNum].hTreeItem); //ProjectInfo.pIconInfo構造体から削除 HeapDefaultFree(ProjectInfo.res.pIconResInfo[IconInfoNum].IdName); HeapDefaultFree(ProjectInfo.res.pIconResInfo[IconInfoNum].path); ProjectInfo.res.NumberOfIconRes--; for(i2=IconInfoNum;i2SelectingItem[0]==SELECT_WINDOW) ChangePropertyWindow(i2,GetWndInfoNum(MdiInfo[i2].path)); } } } void Project_Icon_RenameID(int IconInfoNum){ extern HANDLE hHeap; extern PROJECTINFO ProjectInfo; extern char NewIdName[MAX_PATH]; extern HWND hMaterialTreeView; int i2; char temporary[MAX_PATH]; TVITEM tvItem; if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_INPUTID),hOwner,DlgProject_ResourceID_Input,(long)ProjectInfo.res.pIconResInfo[IconInfoNum].IdName)) return; //重複チェック for(i2=0;i2