source: dev/trunk/ab5.0/abdev/abdev/Resource.cpp@ 481

Last change on this file since 481 was 475, checked in by dai_9181, 16 years ago

構成管理を変更中・・・(いったんコミット)

File size: 18.2 KB
Line 
1#include "stdafx.h"
2
3#include "common.h"
4
5#if defined(JPN)
6//日本語
7#include "pj_msg_jpn.h"
8#else
9//英語
10#include "pj_msg_eng.h"
11#endif
12
13void GetResourceData(void){
14 extern HANDLE hHeap;
15 extern PROJECTINFO ProjectInfo;
16 int i2,i3;
17 char *buffer,temporary[MAX_PATH],temp2[MAX_PATH],temp3[MAX_PATH];
18 HANDLE hFile;
19
20 lstrcpy(temporary,ProjectInfo.ResourceFileName);
21 GetFullPath(temporary,ProjectInfo.dir);
22
23 hFile=CreateFile(temporary,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
24 if(hFile==INVALID_HANDLE_VALUE) return;
25 i2=GetFileSize(hFile,NULL);
26 buffer=(char *)HeapAlloc(hHeap,0,i2+i2+1);
27 ReadFile(hFile,buffer,i2,(DWORD *)&i3,NULL);
28 CloseHandle(hFile);
29 buffer[i3]=0;
30 ChangeReturnCode(buffer);
31
32 i2=0;
33 while(1){
34 //ID
35 while(buffer[i2]==' '||buffer[i2]=='\t') i2++;
36 for(i3=0;;i2++,i3++){
37 if(!IsVariableChar(buffer[i2])){
38 temp3[i3]=0;
39 break;
40 }
41 temp3[i3]=buffer[i2];
42 }
43 if(temp3[0]=='\0') break;
44
45 //Type
46 while(buffer[i2]==' '||buffer[i2]=='\t') i2++;
47 for(i3=0;;i2++,i3++){
48 if(!IsVariableChar(buffer[i2])){
49 temporary[i3]=0;
50 break;
51 }
52 temporary[i3]=buffer[i2];
53 }
54
55 //FileName
56 while(buffer[i2]==' '||buffer[i2]=='\t') i2++;
57 if(buffer[i2]!='\"'){
58 //エラー
59 return;
60 }
61 for(i2++,i3=0;;i2++,i3++){
62 if(buffer[i2]=='\"'){
63 temp2[i3]=0;
64 break;
65 }
66 temp2[i3]=buffer[i2];
67 }
68
69 if(lstrcmpi(temporary,"CURSOR")==0){
70 ProjectInfo.res.pCursorResInfo=(RESITEMINFO *)HeapReAlloc(hHeap,0,ProjectInfo.res.pCursorResInfo,(ProjectInfo.res.NumberOfCursorRes+1)*sizeof(RESITEMINFO));
71
72 ProjectInfo.res.pCursorResInfo[ProjectInfo.res.NumberOfCursorRes].IdName=
73 (char *)HeapAlloc(hHeap,0,lstrlen(temp3)+1);
74 lstrcpy(ProjectInfo.res.pCursorResInfo[ProjectInfo.res.NumberOfCursorRes].IdName,temp3);
75
76 ProjectInfo.res.pCursorResInfo[ProjectInfo.res.NumberOfCursorRes].path=
77 (char *)HeapAlloc(hHeap,0,lstrlen(temp2)+1);
78 lstrcpy(ProjectInfo.res.pCursorResInfo[ProjectInfo.res.NumberOfCursorRes].path,temp2);
79
80 ProjectInfo.res.NumberOfCursorRes++;
81 }
82 else if(lstrcmpi(temporary,"BITMAP")==0){
83 ProjectInfo.res.pBitmapResInfo=(RESITEMINFO *)HeapReAlloc(hHeap,0,ProjectInfo.res.pBitmapResInfo,(ProjectInfo.res.NumberOfBitmapRes+1)*sizeof(RESITEMINFO));
84
85 ProjectInfo.res.pBitmapResInfo[ProjectInfo.res.NumberOfBitmapRes].IdName=
86 (char *)HeapAlloc(hHeap,0,lstrlen(temp3)+1);
87 lstrcpy(ProjectInfo.res.pBitmapResInfo[ProjectInfo.res.NumberOfBitmapRes].IdName,temp3);
88
89 ProjectInfo.res.pBitmapResInfo[ProjectInfo.res.NumberOfBitmapRes].path=
90 (char *)HeapAlloc(hHeap,0,lstrlen(temp2)+1);
91 lstrcpy(ProjectInfo.res.pBitmapResInfo[ProjectInfo.res.NumberOfBitmapRes].path,temp2);
92
93 ProjectInfo.res.NumberOfBitmapRes++;
94 }
95 else if(lstrcmpi(temporary,"ICON")==0){
96 ProjectInfo.res.pIconResInfo=(RESITEMINFO *)HeapReAlloc(hHeap,0,ProjectInfo.res.pIconResInfo,(ProjectInfo.res.NumberOfIconRes+1)*sizeof(RESITEMINFO));
97
98 ProjectInfo.res.pIconResInfo[ProjectInfo.res.NumberOfIconRes].IdName=
99 (char *)HeapAlloc(hHeap,0,lstrlen(temp3)+1);
100 lstrcpy(ProjectInfo.res.pIconResInfo[ProjectInfo.res.NumberOfIconRes].IdName,temp3);
101
102 ProjectInfo.res.pIconResInfo[ProjectInfo.res.NumberOfIconRes].path=
103 (char *)HeapAlloc(hHeap,0,lstrlen(temp2)+1);
104 lstrcpy(ProjectInfo.res.pIconResInfo[ProjectInfo.res.NumberOfIconRes].path,temp2);
105
106 ProjectInfo.res.NumberOfIconRes++;
107 }
108 else if(lstrcmpi(temporary,"RT_MANIFEST")==0){
109 //無視
110 }
111 else{
112 //エラー
113 return;
114 }
115
116 i2++;
117 while(buffer[i2]==' '||buffer[i2]=='\t') i2++;
118 if(buffer[i2]=='\0') break;
119 else if(buffer[i2]!='\n'){
120 //エラー
121 return;
122 }
123 i2++;
124 }
125
126 //リソースが空の場合
127 if(ProjectInfo.res.NumberOfCursorRes==0&&
128 ProjectInfo.res.NumberOfBitmapRes==0&&
129 ProjectInfo.res.NumberOfIconRes==0)
130 ProjectInfo.ResourceFileName[0]=0;
131
132 HeapDefaultFree(buffer);
133}
134
135void Project_CursorResInsert(void){
136 extern HANDLE hHeap;
137 extern LPSTR CursorFileFilter;
138 extern PROJECTINFO ProjectInfo;
139 int i2,i3;
140 char temporary[MAX_PATH];
141
142 if(!ProjectInfo.ResourceFileName[0])
143 sprintf(ProjectInfo.ResourceFileName,"%s.rc",ProjectInfo.name);
144
145 //"カーソル ファイルを指定してください"
146 if(!GetFilePathDialog(hOwner,temporary,CursorFileFilter,STRING_FILEOPENTITLE_CURSOR,TRUE)) return;
147
148 GetRelationalPath(temporary,ProjectInfo.dir);
149
150 ProjectInfo.res.pCursorResInfo=(RESITEMINFO *)HeapReAlloc(hHeap,0,ProjectInfo.res.pCursorResInfo,(ProjectInfo.res.NumberOfCursorRes+1)*sizeof(RESITEMINFO));
151
152 ProjectInfo.res.pCursorResInfo[ProjectInfo.res.NumberOfCursorRes].path=
153 (char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
154 lstrcpy(ProjectInfo.res.pCursorResInfo[ProjectInfo.res.NumberOfCursorRes].path,temporary);
155
156 for(i3=1;;i3++){
157 sprintf(temporary,"IDC_CURSOR%d",i3);
158 for(i2=0;i2<ProjectInfo.res.NumberOfCursorRes;i2++){
159 if(lstrcmp(temporary,ProjectInfo.res.pCursorResInfo[i2].IdName)==0) break;
160 }
161 if(i2==ProjectInfo.res.NumberOfCursorRes) break;
162 }
163
164 ProjectInfo.res.pCursorResInfo[ProjectInfo.res.NumberOfCursorRes].IdName=
165 (char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
166 lstrcpy(ProjectInfo.res.pCursorResInfo[ProjectInfo.res.NumberOfCursorRes].IdName,temporary);
167
168 //ツリービューに追加
169 extern HWND hMaterialTreeView;
170 TV_INSERTSTRUCT tv;
171 tv.hInsertAfter=TVI_SORT;
172 tv.item.mask=TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
173 tv.item.iImage=6;
174 tv.item.iSelectedImage=6;
175 tv.hParent=ProjectInfo.res.hCursorTreeItem;
176 tv.item.pszText=temporary;
177
178 ProjectInfo.res.pCursorResInfo[ProjectInfo.res.NumberOfCursorRes].hTreeItem=
179 TreeView_InsertItem(hMaterialTreeView,&tv);
180
181 TreeView_SelectItem(hMaterialTreeView,ProjectInfo.res.pCursorResInfo[ProjectInfo.res.NumberOfCursorRes].hTreeItem);
182
183 ProjectInfo.res.NumberOfCursorRes++;
184 ProjectInfo.ModifuOfResource=1;
185}
186void Project_Cursor_Delete(int CursorInfoNum){
187 extern PROJECTINFO ProjectInfo;
188 int i;
189
190 //ツリービューから削除
191 extern HWND hMaterialTreeView;
192 TreeView_DeleteItem(hMaterialTreeView,ProjectInfo.res.pCursorResInfo[CursorInfoNum].hTreeItem);
193
194 //ProjectInfo.pCursorInfo構造体から削除
195 HeapDefaultFree(ProjectInfo.res.pCursorResInfo[CursorInfoNum].IdName);
196 HeapDefaultFree(ProjectInfo.res.pCursorResInfo[CursorInfoNum].path);
197 ProjectInfo.res.NumberOfCursorRes--;
198 for(i=CursorInfoNum;i<ProjectInfo.res.NumberOfCursorRes;i++)
199 ProjectInfo.res.pCursorResInfo[i]=ProjectInfo.res.pCursorResInfo[i+1];
200
201 ProjectInfo.ModifuOfResource=1;
202}
203void Project_Cursor_RenameID(int CursorInfoNum){
204 extern HANDLE hHeap;
205 extern PROJECTINFO ProjectInfo;
206 extern char NewIdName[MAX_PATH];
207 extern HWND hMaterialTreeView;
208 int i2;
209 char temporary[MAX_PATH];
210 TVITEM tvItem;
211
212 if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_INPUTID),hOwner,(DLGPROC)DlgProject_ResourceID_Input,(long)ProjectInfo.res.pCursorResInfo[CursorInfoNum].IdName)) return;
213
214 //重複チェック
215 for(i2=0;i2<ProjectInfo.res.NumberOfCursorRes;i2++){
216 if(i2==CursorInfoNum) continue;
217 if(lstrcmp(NewIdName,ProjectInfo.res.pCursorResInfo[i2].IdName)==0){
218 //"ID \"%s\" は既にプロジェクト内に存在します。"
219 sprintf(temporary,STRING_DUPLICATIONERROR_ID_IN_PROJECT,NewIdName);
220 MessageBox(hOwner,temporary,STRING_ERROR,MB_OK|MB_ICONEXCLAMATION);
221 return;
222 }
223 }
224
225 HeapDefaultFree(ProjectInfo.res.pCursorResInfo[CursorInfoNum].IdName);
226 ProjectInfo.res.pCursorResInfo[CursorInfoNum].IdName=(char *)HeapAlloc(hHeap,0,lstrlen(NewIdName)+1);
227 lstrcpy(ProjectInfo.res.pCursorResInfo[CursorInfoNum].IdName,NewIdName);
228
229 tvItem.hItem=ProjectInfo.res.pCursorResInfo[CursorInfoNum].hTreeItem;
230 tvItem.mask=TVIF_TEXT;
231 tvItem.pszText=ProjectInfo.res.pCursorResInfo[CursorInfoNum].IdName;
232 tvItem.cchTextMax=lstrlen(ProjectInfo.res.pCursorResInfo[CursorInfoNum].IdName)+1;
233 TreeView_SetItem(hMaterialTreeView,&tvItem);
234
235 ProjectInfo.ModifuOfResource=1;
236
237 TreeView_SortChildren(hMaterialTreeView,
238 TreeView_GetParent(hMaterialTreeView,ProjectInfo.res.pCursorResInfo[CursorInfoNum].hTreeItem),
239 0);
240}
241
242void Project_BitmapResInsert(void){
243 extern HANDLE hHeap;
244 extern LPSTR BitmapFileFilter;
245 extern PROJECTINFO ProjectInfo;
246 int i2,i3;
247 char temporary[MAX_PATH];
248
249 if(!ProjectInfo.ResourceFileName[0])
250 sprintf(ProjectInfo.ResourceFileName,"%s.rc",ProjectInfo.name);
251
252 //"ビットマップ ファイルを指定してください"
253 if(!GetFilePathDialog(hOwner,temporary,BitmapFileFilter,STRING_FILEOPENTITLE_BITMAP,TRUE)) return;
254
255 GetRelationalPath(temporary,ProjectInfo.dir);
256
257 ProjectInfo.res.pBitmapResInfo=(RESITEMINFO *)HeapReAlloc(hHeap,0,ProjectInfo.res.pBitmapResInfo,(ProjectInfo.res.NumberOfBitmapRes+1)*sizeof(RESITEMINFO));
258
259 ProjectInfo.res.pBitmapResInfo[ProjectInfo.res.NumberOfBitmapRes].path=
260 (char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
261 lstrcpy(ProjectInfo.res.pBitmapResInfo[ProjectInfo.res.NumberOfBitmapRes].path,temporary);
262
263 for(i3=1;;i3++){
264 sprintf(temporary,"IDB_BITMAP%d",i3);
265 for(i2=0;i2<ProjectInfo.res.NumberOfBitmapRes;i2++){
266 if(lstrcmp(temporary,ProjectInfo.res.pBitmapResInfo[i2].IdName)==0) break;
267 }
268 if(i2==ProjectInfo.res.NumberOfBitmapRes) break;
269 }
270
271 ProjectInfo.res.pBitmapResInfo[ProjectInfo.res.NumberOfBitmapRes].IdName=
272 (char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
273 lstrcpy(ProjectInfo.res.pBitmapResInfo[ProjectInfo.res.NumberOfBitmapRes].IdName,temporary);
274
275 //ツリービューに追加
276 extern HWND hMaterialTreeView;
277 TV_INSERTSTRUCT tv;
278 tv.hInsertAfter=TVI_SORT;
279 tv.item.mask=TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
280 tv.item.iImage=5;
281 tv.item.iSelectedImage=5;
282 tv.hParent=ProjectInfo.res.hBitmapTreeItem;
283 tv.item.pszText=temporary;
284
285 ProjectInfo.res.pBitmapResInfo[ProjectInfo.res.NumberOfBitmapRes].hTreeItem=
286 TreeView_InsertItem(hMaterialTreeView,&tv);
287
288 TreeView_SelectItem(hMaterialTreeView,ProjectInfo.res.pBitmapResInfo[ProjectInfo.res.NumberOfBitmapRes].hTreeItem);
289
290 ProjectInfo.res.NumberOfBitmapRes++;
291 ProjectInfo.ModifuOfResource=1;
292
293
294 ////////////////////////////////
295 // ウィンドウ プロパティを更新
296 extern MDIINFO MdiInfo[MAX_WNDNUM];
297 for(i2=0;i2<MAX_WNDNUM;i2++){
298 if(MdiInfo[i2].hwnd&&MdiInfo[i2].DocType==WNDTYPE_RAD){
299 if(MdiInfo[i2].MdiRadInfo->SelectingItem[0]==SELECT_WINDOW)
300 ChangePropertyWindow(i2,GetWndInfoNum(MdiInfo[i2].path));
301 }
302 }
303}
304void Project_Bitmap_Delete(int BitmapInfoNum){
305 extern PROJECTINFO ProjectInfo;
306 int i;
307
308 //ツリービューから削除
309 extern HWND hMaterialTreeView;
310 TreeView_DeleteItem(hMaterialTreeView,ProjectInfo.res.pBitmapResInfo[BitmapInfoNum].hTreeItem);
311
312 //ProjectInfo.pBitmapInfo構造体から削除
313 HeapDefaultFree(ProjectInfo.res.pBitmapResInfo[BitmapInfoNum].IdName);
314 HeapDefaultFree(ProjectInfo.res.pBitmapResInfo[BitmapInfoNum].path);
315 ProjectInfo.res.NumberOfBitmapRes--;
316 for(i=BitmapInfoNum;i<ProjectInfo.res.NumberOfBitmapRes;i++)
317 ProjectInfo.res.pBitmapResInfo[i]=ProjectInfo.res.pBitmapResInfo[i+1];
318
319 ProjectInfo.ModifuOfResource=1;
320}
321void Project_Bitmap_RenameID(int BitmapInfoNum){
322 extern HANDLE hHeap;
323 extern PROJECTINFO ProjectInfo;
324 extern char NewIdName[MAX_PATH];
325 extern HWND hMaterialTreeView;
326 int i2;
327 char temporary[MAX_PATH];
328 TVITEM tvItem;
329
330 if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_INPUTID),hOwner,(DLGPROC)DlgProject_ResourceID_Input,(long)ProjectInfo.res.pBitmapResInfo[BitmapInfoNum].IdName)) return;
331
332 //重複チェック
333 for(i2=0;i2<ProjectInfo.res.NumberOfBitmapRes;i2++){
334 if(i2==BitmapInfoNum) continue;
335 if(lstrcmp(NewIdName,ProjectInfo.res.pBitmapResInfo[i2].IdName)==0){
336 //"ID \"%s\" は既にプロジェクト内に存在します。"
337 sprintf(temporary,STRING_DUPLICATIONERROR_ID_IN_PROJECT,NewIdName);
338 MessageBox(hOwner,temporary,STRING_ERROR,MB_OK|MB_ICONEXCLAMATION);
339 return;
340 }
341 }
342
343 HeapDefaultFree(ProjectInfo.res.pBitmapResInfo[BitmapInfoNum].IdName);
344 ProjectInfo.res.pBitmapResInfo[BitmapInfoNum].IdName=(char *)HeapAlloc(hHeap,0,lstrlen(NewIdName)+1);
345 lstrcpy(ProjectInfo.res.pBitmapResInfo[BitmapInfoNum].IdName,NewIdName);
346
347 tvItem.hItem=ProjectInfo.res.pBitmapResInfo[BitmapInfoNum].hTreeItem;
348 tvItem.mask=TVIF_TEXT;
349 tvItem.pszText=ProjectInfo.res.pBitmapResInfo[BitmapInfoNum].IdName;
350 tvItem.cchTextMax=lstrlen(ProjectInfo.res.pBitmapResInfo[BitmapInfoNum].IdName)+1;
351 TreeView_SetItem(hMaterialTreeView,&tvItem);
352
353 ProjectInfo.ModifuOfResource=1;
354
355 TreeView_SortChildren(hMaterialTreeView,
356 TreeView_GetParent(hMaterialTreeView,ProjectInfo.res.pBitmapResInfo[BitmapInfoNum].hTreeItem),
357 0);
358}
359void Project_IconResInsert(void){
360 extern HANDLE hHeap;
361 extern LPSTR IconFileFilter;
362 extern PROJECTINFO ProjectInfo;
363 int i2,i3;
364 char temporary[MAX_PATH];
365
366 if(!ProjectInfo.ResourceFileName[0])
367 sprintf(ProjectInfo.ResourceFileName,"%s.rc",ProjectInfo.name);
368
369 //"アイコン ファイルを指定してください"
370 if(!GetFilePathDialog(hOwner,temporary,IconFileFilter,STRING_FILEOPENTITLE_ICON,TRUE)) return;
371
372 GetRelationalPath(temporary,ProjectInfo.dir);
373
374 ProjectInfo.res.pIconResInfo=(RESITEMINFO *)HeapReAlloc(hHeap,0,ProjectInfo.res.pIconResInfo,(ProjectInfo.res.NumberOfIconRes+1)*sizeof(RESITEMINFO));
375
376 ProjectInfo.res.pIconResInfo[ProjectInfo.res.NumberOfIconRes].path=
377 (char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
378 lstrcpy(ProjectInfo.res.pIconResInfo[ProjectInfo.res.NumberOfIconRes].path,temporary);
379
380 for(i3=1;;i3++){
381 sprintf(temporary,"IDI_ICON%d",i3);
382 for(i2=0;i2<ProjectInfo.res.NumberOfIconRes;i2++){
383 if(lstrcmp(temporary,ProjectInfo.res.pIconResInfo[i2].IdName)==0) break;
384 }
385 if(i2==ProjectInfo.res.NumberOfIconRes) break;
386 }
387
388 ProjectInfo.res.pIconResInfo[ProjectInfo.res.NumberOfIconRes].IdName=
389 (char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
390 lstrcpy(ProjectInfo.res.pIconResInfo[ProjectInfo.res.NumberOfIconRes].IdName,temporary);
391
392 //ツリービューに追加
393 extern HWND hMaterialTreeView;
394 TV_INSERTSTRUCT tv;
395 tv.hInsertAfter=TVI_SORT;
396 tv.item.mask=TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
397 tv.item.iImage=4;
398 tv.item.iSelectedImage=4;
399 tv.hParent=ProjectInfo.res.hIconTreeItem;
400 if(ProjectInfo.res.NumberOfIconRes==0) lstrcat(temporary," (Main)");
401 tv.item.pszText=temporary;
402
403 ProjectInfo.res.pIconResInfo[ProjectInfo.res.NumberOfIconRes].hTreeItem=
404 TreeView_InsertItem(hMaterialTreeView,&tv);
405
406 TreeView_SelectItem(hMaterialTreeView,ProjectInfo.res.pIconResInfo[ProjectInfo.res.NumberOfIconRes].hTreeItem);
407
408 ProjectInfo.res.NumberOfIconRes++;
409 ProjectInfo.ModifuOfResource=1;
410
411 ////////////////////////////////
412 // ウィンドウ プロパティを更新
413 extern MDIINFO MdiInfo[MAX_WNDNUM];
414 for(i2=0;i2<MAX_WNDNUM;i2++){
415 if(MdiInfo[i2].hwnd&&MdiInfo[i2].DocType==WNDTYPE_RAD){
416 if(MdiInfo[i2].MdiRadInfo->SelectingItem[0]==SELECT_WINDOW)
417 ChangePropertyWindow(i2,GetWndInfoNum(MdiInfo[i2].path));
418 }
419 }
420}
421void Project_Icon_Delete(int IconInfoNum){
422 extern HANDLE hHeap;
423 extern PROJECTINFO ProjectInfo;
424 int i2;
425 char temporary[MAX_PATH];
426 TVITEM tv;
427
428 //ツリービューから削除
429 extern HWND hMaterialTreeView;
430 TreeView_DeleteItem(hMaterialTreeView,ProjectInfo.res.pIconResInfo[IconInfoNum].hTreeItem);
431
432 //ProjectInfo.pIconInfo構造体から削除
433 HeapDefaultFree(ProjectInfo.res.pIconResInfo[IconInfoNum].IdName);
434 HeapDefaultFree(ProjectInfo.res.pIconResInfo[IconInfoNum].path);
435 ProjectInfo.res.NumberOfIconRes--;
436 for(i2=IconInfoNum;i2<ProjectInfo.res.NumberOfIconRes;i2++) ProjectInfo.res.pIconResInfo[i2]=ProjectInfo.res.pIconResInfo[i2+1];
437
438 if(IconInfoNum==0&&ProjectInfo.res.NumberOfIconRes){
439 tv.mask=TVIF_TEXT|TVIF_HANDLE;
440 tv.pszText=temporary;
441 tv.cchTextMax=MAX_PATH;
442 tv.hItem=ProjectInfo.res.pIconResInfo[0].hTreeItem;
443 TreeView_GetItem(hMaterialTreeView,&tv);
444 lstrcat(tv.pszText," (Main)");
445 TreeView_SetItem(hMaterialTreeView,&tv);
446 }
447
448 ProjectInfo.ModifuOfResource=1;
449
450 ////////////////////////////////
451 // ウィンドウ プロパティを更新
452 extern MDIINFO MdiInfo[MAX_WNDNUM];
453 for(i2=0;i2<MAX_WNDNUM;i2++){
454 if(MdiInfo[i2].hwnd&&MdiInfo[i2].DocType==WNDTYPE_RAD){
455 if(MdiInfo[i2].MdiRadInfo->SelectingItem[0]==SELECT_WINDOW)
456 ChangePropertyWindow(i2,GetWndInfoNum(MdiInfo[i2].path));
457 }
458 }
459}
460void Project_Icon_RenameID(int IconInfoNum){
461 extern HANDLE hHeap;
462 extern PROJECTINFO ProjectInfo;
463 extern char NewIdName[MAX_PATH];
464 extern HWND hMaterialTreeView;
465 int i2;
466 char temporary[MAX_PATH];
467 TVITEM tvItem;
468
469 if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_INPUTID),hOwner,(DLGPROC)DlgProject_ResourceID_Input,(long)ProjectInfo.res.pIconResInfo[IconInfoNum].IdName)) return;
470
471 //重複チェック
472 for(i2=0;i2<ProjectInfo.res.NumberOfIconRes;i2++){
473 if(i2==IconInfoNum) continue;
474 if(lstrcmp(NewIdName,ProjectInfo.res.pIconResInfo[i2].IdName)==0){
475 //"ID \"%s\" は既にプロジェクト内に存在します。"
476 sprintf(temporary,STRING_DUPLICATIONERROR_ID_IN_PROJECT,NewIdName);
477 MessageBox(hOwner,temporary,STRING_ERROR,MB_OK|MB_ICONEXCLAMATION);
478 return;
479 }
480 }
481
482 HeapDefaultFree(ProjectInfo.res.pIconResInfo[IconInfoNum].IdName);
483 ProjectInfo.res.pIconResInfo[IconInfoNum].IdName=(char *)HeapAlloc(hHeap,0,lstrlen(NewIdName)+1);
484 lstrcpy(ProjectInfo.res.pIconResInfo[IconInfoNum].IdName,NewIdName);
485
486 tvItem.hItem=ProjectInfo.res.pIconResInfo[IconInfoNum].hTreeItem;
487 tvItem.mask=TVIF_TEXT;
488 if(IconInfoNum==0){
489 sprintf(temporary,"%s (Main)",ProjectInfo.res.pIconResInfo[IconInfoNum].IdName);
490 tvItem.pszText=temporary;
491 }
492 else tvItem.pszText=ProjectInfo.res.pIconResInfo[IconInfoNum].IdName;
493 tvItem.cchTextMax=lstrlen(ProjectInfo.res.pIconResInfo[IconInfoNum].IdName)+1;
494 TreeView_SetItem(hMaterialTreeView,&tvItem);
495
496 ProjectInfo.ModifuOfResource=1;
497
498 TreeView_SortChildren(hMaterialTreeView,
499 TreeView_GetParent(hMaterialTreeView,ProjectInfo.res.pIconResInfo[IconInfoNum].hTreeItem),
500 0);
501}
502
503BOOL CALLBACK DlgProject_ResourceID_Input(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
504 extern char NewIdName[MAX_PATH];
505 switch(message){
506 case WM_INITDIALOG:
507 //"IDの変更"
508 SetWindowText(hwnd,STRING_RENAME_ID);
509
510 SetDlgItemText(hwnd,IDC_IDNAME,(char *)lParam);
511 SetPosCenter(hwnd);
512 break;
513 case WM_COMMAND:
514 switch(LOWORD(wParam)){
515 case IDOK:
516 GetDlgItemText(hwnd,IDC_IDNAME,NewIdName,MAX_PATH);
517 if(!NewIdName[0]){
518 //"ID名を入力して下さい。"
519 MessageBox(hwnd,STRING_ERROR_MUST_IDNAME,APPLICATION_NAME,MB_OK);
520 return 1;
521 }
522 EndDialog(hwnd,1);
523 return 1;
524 case IDCANCEL:
525 EndDialog(hwnd,0);
526 return 1;
527 }
528 break;
529 }
530 return 0;
531}
Note: See TracBrowser for help on using the repository browser.