#include "stdafx.h" #include "common.h" #if defined(JPN) //日本語 #include "pj_msg_jpn.h" #else //英語 #include "pj_msg_eng.h" #endif void GetResourceData(void){ extern HANDLE hHeap; int i2,i3; char *buffer,temporary[MAX_PATH],temp2[MAX_PATH],temp3[MAX_PATH]; HANDLE hFile; lstrcpy(temporary,projectInfo.ResourceFileName); lstrcpy( temporary, projectInfo.GetWorkDir().GetFullPath( temporary ).c_str() ); 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; int i2,i3; char temporary[MAX_PATH]; if(!projectInfo.ResourceFileName[0]) sprintf(projectInfo.ResourceFileName,"%s.rc",projectInfo.GetName().c_str()); //"カーソル ファイルを指定してください" if(!GetFilePathDialog(hOwner,temporary,CursorFileFilter,STRING_FILEOPENTITLE_CURSOR,TRUE)) return; lstrcpy( temporary, projectInfo.GetWorkDir().GetRelationalPath( temporary ).c_str() ); 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){ 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; 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 char NewIdName[MAX_PATH]; extern HWND hMaterialTreeView; int i2; char temporary[MAX_PATH]; TVITEM tvItem; if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_INPUTID),hOwner,(DLGPROC)DlgProject_ResourceID_Input,(long)projectInfo.res.pIconResInfo[IconInfoNum].IdName)) return; //重複チェック for(i2=0;i2