source: dev/trunk/ab5.0/abdev/abdev/ExtensionLink.cpp@ 625

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

・WindowInfoクラスをリファクタリング
・MdiInfoを単純配列からvectorに変更した。

File size: 17.7 KB
Line 
1#include "stdafx.h"
2
3#include "common.h"
4
5
6#ifndef ListView_SetCheckState
7 #define ListView_SetCheckState(hwndLV, i, fCheck) \
8 ListView_SetItemState(hwndLV, i, \
9 INDEXTOSTATEIMAGEMASK((fCheck)+1), LVIS_STATEIMAGEMASK)
10#endif
11
12
13
14COneExt::COneExt(BOOL bReg,char *lpszExtension,char *lpszNote,BOOL bWindowsSearch,COLORREF tab_color){
15 m_bReg=bReg;
16 lstrcpy(m_szExtension,lpszExtension);
17 lstrcpy(m_szNote,lpszNote);
18 m_bWindowsSearch=bWindowsSearch;
19 TabColor=tab_color;
20}
21COneExt::~COneExt(){
22}
23
24CExtLink::CExtLink(){
25 ppobj_ExtItems=(COneExt **)malloc(1);
26 iExtItemNum=0;
27}
28CExtLink::~CExtLink(){
29 int i;
30 for(i=0;i<iExtItemNum;i++){
31 delete ppobj_ExtItems[i];
32 }
33 free(ppobj_ExtItems);
34 ppobj_ExtItems=0;
35}
36
37void CExtLink::load(char *path){
38 char *buffer;
39 buffer=ReadBuffer_NonErrMsg(path);
40 if(buffer){
41 int i=0;
42 char temporary[64],temp2[255],temp3[64],temp4[64];
43 while(1){
44 //関連付けをおこなうかどうかのチェック
45 BOOL bReg;
46 i=GetOneParameter(buffer,i,temporary);
47 if(temporary[0]=='\0') break;
48 bReg=atoi(temporary);
49
50 //拡張子
51 i=GetOneParameter(buffer,i,temporary);
52 if(temporary[0]=='\0') break;
53
54 //説明
55 i=GetOneParameter(buffer,i,temp2);
56 if(temp2[0]=='\0') break;
57
58 //Windows検索
59 i=GetOneParameter(buffer,i,temp3);
60 if(temp3[0]=='\0') break;
61
62 //タブの色
63 i=GetOneParameter(buffer,i,temp4);
64 if(temp4[0]=='\0') break;
65
66 DWORD dwColor;
67 sscanf(temp4,"%x",&dwColor);
68
69 add(bReg,temporary,temp2,atoi(temp3),(COLORREF)dwColor);
70
71 if(buffer[i]=='\r'&&buffer[i+1]=='\n'){
72 i+=2;
73 }
74 else break;
75 }
76
77 HeapDefaultFree(buffer);
78 }
79 else{
80 //デフォルト値をセット
81 SetInitData();
82 }
83}
84void CExtLink::save(char *path){
85 int i;
86 char buffer[8192];
87 buffer[0]=0;
88 for(i=0;i<iExtItemNum;i++){
89 sprintf(buffer+lstrlen(buffer),"%d,%s,%s,%d,%x\r\n",
90 ppobj_ExtItems[i]->m_bReg,
91 ppobj_ExtItems[i]->m_szExtension,
92 ppobj_ExtItems[i]->m_szNote,
93 ppobj_ExtItems[i]->m_bWindowsSearch,
94 ppobj_ExtItems[i]->TabColor);
95 }
96
97 //保存
98 WriteBuffer(path,buffer,lstrlen(buffer));
99}
100
101BOOL CExtLink::add(BOOL bReg,char *lpszExtension,char *lpszNote,BOOL bWindowsSearch,COLORREF tab_color){
102 //重複チェック
103 int i;
104 for(i=0;i<iExtItemNum;i++){
105 if(lstrcmpi(ppobj_ExtItems[i]->m_szExtension,lpszExtension)==0){
106 return 0;
107 }
108 }
109
110 ppobj_ExtItems=(COneExt **)realloc(ppobj_ExtItems,(iExtItemNum+1)*sizeof(COneExt*));
111 ppobj_ExtItems[iExtItemNum]=new COneExt(bReg,lpszExtension,lpszNote,bWindowsSearch,tab_color);
112 iExtItemNum++;
113
114 return 1;
115}
116void CExtLink::del(char *lpszExtension){
117 int i;
118 for(i=0;i<iExtItemNum;i++){
119 if(lstrcmpi(lpszExtension,ppobj_ExtItems[i]->m_szExtension)==0)
120 break;
121 }
122 if(i==iExtItemNum) return;
123
124 delete ppobj_ExtItems[i];
125
126 iExtItemNum--;
127 for(;i<iExtItemNum;i++){
128 ppobj_ExtItems[i]=ppobj_ExtItems[i+1];
129 }
130}
131
132void CExtLink::SetInitData(void){
133 ///////////////////////////////////
134 // 初期立ち上げ時用の値をセット
135 ///////////////////////////////////
136
137#ifdef THETEXT
138 add(1,"txt","テキスト ドキュメント",1,TABCOLOR_GRAY);
139 add(0,"htm","HTML ドキュメント",1,TABCOLOR_BLUE);
140 add(0,"html","HTML ドキュメント",1,TABCOLOR_BLUE);
141 add(1,"cgi","CGI ドキュメント",1,TABCOLOR_GREEN);
142 add(1,"pl","Perl ドキュメント",1,TABCOLOR_GREEN);
143 add(1,"php","PHP ドキュメント",1,TABCOLOR_RED);
144 add(1,"tpl","テンプレート ドキュメント",1,TABCOLOR_YELLOW);
145#else
146 add(1,"ab","Basic ソースコード",1,TABCOLOR_BLUE);
147 add(1,"abp","Basic ソースコード",1,TABCOLOR_BLUE);
148 add(1,"bas","Basic ソースコード",1,TABCOLOR_BLUE);
149 add(1,"sbp","サブソースコード",1,TABCOLOR_GREEN);
150 add(1,"pj","ActiveBasic プロジェクト ドキュメント",0,TABCOLOR_GRAY);
151#endif
152}
153
154void CExtLink::ResetListView(HWND hListView){
155 ListView_DeleteAllItems(hListView);
156
157 int i;
158 for(i=0; i < pobj_nv->pobj_ExtLink->iExtItemNum; i++){
159 LV_ITEM item;
160
161 //拡張子
162 item.mask=LVIF_TEXT;
163 item.pszText=ppobj_ExtItems[i]->m_szExtension;
164 item.iItem=i;
165 item.iSubItem=0;
166 ListView_InsertItem(hListView,&item);
167
168 //説明
169 item.pszText=ppobj_ExtItems[i]->m_szNote;
170 item.iItem=i;
171 item.iSubItem++;
172 ListView_SetItem(hListView,&item);
173
174 //Windows検索
175 if(ppobj_ExtItems[i]->m_bWindowsSearch)
176 item.pszText="有効";
177 else item.pszText="無効";
178 item.iItem=i;
179 item.iSubItem++;
180 ListView_SetItem(hListView,&item);
181
182 //タブの色
183 if(ppobj_ExtItems[i]->TabColor==TABCOLOR_GRAY) item.pszText="灰色";
184 else if(ppobj_ExtItems[i]->TabColor==TABCOLOR_WHITE) item.pszText="白";
185 else if(ppobj_ExtItems[i]->TabColor==TABCOLOR_RED) item.pszText="赤";
186 else if(ppobj_ExtItems[i]->TabColor==TABCOLOR_GREEN) item.pszText="緑";
187 else if(ppobj_ExtItems[i]->TabColor==TABCOLOR_BLUE) item.pszText="青";
188 else if(ppobj_ExtItems[i]->TabColor==TABCOLOR_YELLOW) item.pszText="黄色";
189 else item.pszText="ユーザー設定";
190 item.iItem=i;
191 item.iSubItem++;
192 ListView_SetItem(hListView,&item);
193
194 //チェックマーク
195 ListView_SetCheckState(hListView,i,ppobj_ExtItems[i]->m_bReg);
196 }
197}
198
199COLORREF CExtLink::GetTabColorFromFilePath( const std::string &filepath )
200{
201 //拡張子を識別し、タブの色を決定
202 char szExt[255],*lpszTemp;
203 _splitpath(filepath.c_str(),NULL,NULL,NULL,szExt);
204 if(szExt[0]=='.') lpszTemp=szExt+1;
205 else lpszTemp=szExt;
206 for(int i=0;i<iExtItemNum;i++){
207 if(lstrcmpi(lpszTemp,ppobj_ExtItems[i]->m_szExtension)==0){
208 return ppobj_ExtItems[i]->TabColor;
209 }
210 }
211 return TABCOLOR_GRAY;
212}
213
214
215BOOL CALLBACK DlgFileLinkAdd(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
216 static COneExt *pobj_OneExt;
217
218 static int TabColor;
219 switch(message){
220 case WM_INITDIALOG:
221 if(lParam){
222 pobj_OneExt=(COneExt *)lParam;
223
224 SetDlgItemText(hwnd,IDC_EXTENSION,pobj_OneExt->m_szExtension);
225 SetDlgItemText(hwnd,IDC_NOTE,pobj_OneExt->m_szNote);
226 TabColor=pobj_OneExt->TabColor;
227
228 if(pobj_OneExt->m_bWindowsSearch)
229 SendDlgItemMessage(hwnd,IDC_SEARCH_ON,BM_SETCHECK,BST_CHECKED,0);
230 else
231 SendDlgItemMessage(hwnd,IDC_SEARCH_OFF,BM_SETCHECK,BST_CHECKED,0);
232
233 EnableWindow(GetDlgItem(hwnd,IDC_EXTENSION),0);
234
235 SetFocus(GetDlgItem(hwnd,IDC_NOTE));
236 }
237 else{
238 pobj_OneExt=0;
239 TabColor=TABCOLOR_GRAY;
240
241 SendDlgItemMessage(hwnd,IDC_SEARCH_ON,BM_SETCHECK,BST_CHECKED,0);
242
243 SetFocus(GetDlgItem(hwnd,IDC_EXTENSION));
244 }
245
246 SendMessage(hwnd,WM_COMMAND,IDC_EXTENSION,0);
247
248 break;
249 case WM_DRAWITEM:
250 LPDRAWITEMSTRUCT pds;
251 pds=(LPDRAWITEMSTRUCT)lParam;
252
253 HBRUSH hBrush,hOldBrush;
254
255 if(wParam==IDC_COLOR_BUTTON){
256 //////////////
257 // 色を描画
258 //////////////
259
260 //ペンとブラシを生成
261 HPEN hPen,hOldPen;
262 hPen=(HPEN)GetStockObject(WHITE_PEN);
263 hBrush=CreateSolidBrush(TabColor);
264
265 //塗りつぶす
266 hOldPen=(HPEN)SelectObject(pds->hDC,hPen);
267 hOldBrush=(HBRUSH)SelectObject(pds->hDC,hBrush);
268 Rectangle(pds->hDC,0,0,pds->rcItem.right,pds->rcItem.bottom);
269 SelectObject(pds->hDC,hOldPen);
270 SelectObject(pds->hDC,hOldBrush);
271
272 //ブラシを破棄
273 DeleteObject(hBrush);
274 }
275 return 1;
276 case WM_COMMAND:
277 switch(LOWORD(wParam)){
278 case IDOK:
279 char szExtension[64];
280 GetDlgItemText(hwnd,IDC_EXTENSION,szExtension,64);
281
282 char szNote[255];
283 GetDlgItemText(hwnd,IDC_NOTE,szNote,255);
284
285 BOOL bWindowsSearch;
286 if(SendDlgItemMessage(hwnd,IDC_SEARCH_ON,BM_GETCHECK,0,0))
287 bWindowsSearch=1;
288 else bWindowsSearch=0;
289
290 if(pobj_OneExt){
291 //変更
292 lstrcpy(pobj_OneExt->m_szNote,szNote);
293 pobj_OneExt->m_bWindowsSearch=bWindowsSearch;
294 pobj_OneExt->TabColor=TabColor;
295 }
296 else{
297 //追加
298 if(!pobj_nv->pobj_ExtLink->add(1,szExtension,szNote,bWindowsSearch,TabColor)){
299 char temporary[255];
300 sprintf(temporary,"拡張子 %s は既にリストに存在します。",szExtension);
301 MessageBox(hwnd,temporary,APPLICATION_NAME,MB_OK|MB_ICONEXCLAMATION);
302
303 return 1;
304 }
305 }
306
307 EndDialog(hwnd,1);
308 return 1;
309 case IDCANCEL:
310 EndDialog(hwnd,0);
311 return 1;
312 case IDC_COLOR_BUTTON:
313 POINT pos;
314 GetCursorPos(&pos);
315 extern HMENU hTabColorMenu;
316 TrackPopupMenu(hTabColorMenu,TPM_LEFTALIGN,pos.x,pos.y,0,hwnd,0);
317 return 1;
318
319 case IDC_EXTENSION:
320 if(GetWindowTextLength(GetDlgItem(hwnd,IDC_EXTENSION)))
321 EnableWindow(GetDlgItem(hwnd,IDOK),1);
322 else
323 EnableWindow(GetDlgItem(hwnd,IDOK),0);
324 return 1;
325
326 case IDM_USER_COLOR:
327 COLORREF colorUser;
328 colorUser=TabColor;
329 {
330 CHOOSECOLOR cc;
331 COLORREF CusColors[16]={
332 RGB(255,255,255),
333 RGB(0,0,0),
334 RGB(128,128,128),
335 RGB(192,192,192),
336 RGB(128,0,0),
337 RGB(255,0,0),
338 RGB(128,128,0),
339 RGB(255,255,0),
340 RGB(0,128,0),
341 RGB(0,255,0),
342 RGB(0,128,128),
343 RGB(0,255,255),
344 RGB(0,0,128),
345 RGB(0,0,255),
346 RGB(128,0,128),
347 RGB(255,0,255)};
348 cc.lStructSize=sizeof(CHOOSECOLOR);
349 cc.hwndOwner=hwnd;
350 cc.rgbResult=colorUser;
351 cc.lpCustColors=CusColors;
352 cc.Flags=CC_RGBINIT|CC_FULLOPEN;
353 if(!ChooseColor(&cc)){
354 return 0;
355 }
356 colorUser=cc.rgbResult;
357 }
358 case IDM_GRAY:
359 case IDM_WHITE:
360 case IDM_RED:
361 case IDM_GREEN:
362 case IDM_BLUE:
363 case IDM_YELLOW:
364 if(LOWORD(wParam)==IDM_GRAY) TabColor=TABCOLOR_GRAY;
365 if(LOWORD(wParam)==IDM_WHITE) TabColor=TABCOLOR_WHITE;
366 if(LOWORD(wParam)==IDM_RED) TabColor=TABCOLOR_RED;
367 if(LOWORD(wParam)==IDM_GREEN) TabColor=TABCOLOR_GREEN;
368 if(LOWORD(wParam)==IDM_BLUE) TabColor=TABCOLOR_BLUE;
369 if(LOWORD(wParam)==IDM_YELLOW) TabColor=TABCOLOR_YELLOW;
370 if(LOWORD(wParam)==IDM_USER_COLOR) TabColor=colorUser;
371 InvalidateRect(GetDlgItem(hwnd,IDC_COLOR_BUTTON),NULL,0);
372 return 1;
373 }
374 break;
375 }
376 return 0;
377}
378
379BOOL CALLBACK DlgLinkFile(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
380 int i;
381 HWND hListView;
382 char temporary[255];
383 switch(message){
384 case WM_INITDIALOG:
385 SetPosCenter(hwnd);
386
387
388
389 ///////////////////////////
390 // カラムの設定
391 ///////////////////////////
392
393 //拡張スタイル
394 DWORD dwStyle;
395 hListView=GetDlgItem(hwnd,IDC_EXTENSION_LIST);
396 dwStyle=ListView_GetExtendedListViewStyle(hListView);
397 dwStyle|=LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES;
398 ListView_SetExtendedListViewStyle(hListView,dwStyle);
399
400 LV_COLUMN ListView_Column;
401 ListView_Column.mask=LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
402 ListView_Column.fmt=LVCFMT_LEFT;
403
404 ListView_Column.cx=50;
405 ListView_Column.pszText="拡張子";
406 ListView_Column.iSubItem=0;
407 ListView_InsertColumn(hListView,ListView_Column.iSubItem,&ListView_Column);
408
409 ListView_Column.cx=150;
410 ListView_Column.pszText="説明";
411 ListView_Column.iSubItem++;
412 ListView_InsertColumn(hListView,ListView_Column.iSubItem,&ListView_Column);
413
414 ListView_Column.cx=90;
415 ListView_Column.pszText="Windows検索";
416 ListView_Column.iSubItem++;
417 ListView_InsertColumn(hListView,ListView_Column.iSubItem,&ListView_Column);
418
419 ListView_Column.cx=80;
420 ListView_Column.pszText="タブの色";
421 ListView_Column.iSubItem++;
422 ListView_InsertColumn(hListView,ListView_Column.iSubItem,&ListView_Column);
423
424
425 pobj_nv->pobj_ExtLink->ResetListView(hListView);
426 break;
427 case WM_COMMAND:
428 switch(LOWORD(wParam)){
429 case IDC_ADD_BUTTON:
430 if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_EXTENSION_ADD),hwnd,(DLGPROC)DlgFileLinkAdd,0)) return 1;
431
432 pobj_nv->pobj_ExtLink->ResetListView(GetDlgItem(hwnd,IDC_EXTENSION_LIST));
433
434 return 1;
435 case IDC_EDIT_BUTTON:
436 hListView=GetDlgItem(hwnd,IDC_EXTENSION_LIST);
437
438 for(i=0;i<ListView_GetItemCount(hListView);i++){
439 if(ListView_GetItemState(hListView,i,LVIS_SELECTED)){
440 break;
441 }
442 }
443 if(i==ListView_GetItemCount(hListView)) return 1;
444
445 if(!DialogBoxParam(hResInst,MAKEINTRESOURCE(IDD_EXTENSION_ADD),hwnd,(DLGPROC)DlgFileLinkAdd,(LPARAM)pobj_nv->pobj_ExtLink->ppobj_ExtItems[i])) return 1;
446
447 pobj_nv->pobj_ExtLink->ResetListView(GetDlgItem(hwnd,IDC_EXTENSION_LIST));
448
449 return 1;
450 case IDC_DELETE_BUTTON:
451 hListView=GetDlgItem(hwnd,IDC_EXTENSION_LIST);
452
453 for(i=0;i<ListView_GetItemCount(hListView);i++){
454 if(ListView_GetItemState(hListView,i,LVIS_SELECTED)){
455 ListView_GetItemText(hListView,i,0,temporary,255);
456
457 char temp2[255];
458 sprintf(temp2,"%s をリストから削除します。",temporary);
459 if(MessageBox(hwnd,temp2,APPLICATION_NAME,MB_OKCANCEL)==IDCANCEL) return 1;
460
461 ListView_DeleteItem(hListView,i);
462
463 pobj_nv->pobj_ExtLink->del(temporary);
464 break;
465 }
466 }
467 return 1;
468 case IDOK:
469 hListView=GetDlgItem(hwnd,IDC_EXTENSION_LIST);
470
471 for(i=0;i<ListView_GetItemCount(hListView);i++){
472 pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_bReg=ListView_GetCheckState(hListView,i);
473 }
474
475 if(MessageBox(hwnd,"指定された内容で拡張子に関するレジストリキーを登録します。よろしいですか?",APPLICATION_NAME,MB_YESNO)==IDNO)
476 return 1;
477
478 EndDialog(hwnd,1);
479 return 1;
480 case IDCANCEL:
481 hListView=GetDlgItem(hwnd,IDC_EXTENSION_LIST);
482
483 for(i=0;i<ListView_GetItemCount(hListView);i++){
484 pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_bReg=ListView_GetCheckState(hListView,i);
485 }
486 EndDialog(hwnd,0);
487 return 1;
488 }
489 break;
490 case WM_NOTIFY:
491 hListView=GetDlgItem(hwnd,IDC_EXTENSION_LIST);
492
493 NMHDR *hdr;
494 hdr=(NMHDR *)lParam;
495 if(hdr->hwndFrom==hListView&&hdr->code==NM_DBLCLK){
496 SendMessage(hwnd,WM_COMMAND,IDC_EDIT_BUTTON,0);
497 }
498 break;
499 }
500 return 0;
501}
502
503HKEY ClassRoot_CreateKey(char *path,char *lpszData){
504 HKEY hKey;
505 RegCreateKeyEx(HKEY_CLASSES_ROOT,path,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
506 RegSetValueEx(hKey,NULL,0,REG_SZ,(const unsigned char *)lpszData,lstrlen(lpszData));
507 return hKey;
508}
509void ExtensionLink(HWND hwnd){
510 int i;
511 HKEY hKey;
512
513 //初期状態の重複起動で関連付けを作動しないようにする
514 pobj_nv->save();
515
516 if(DialogBox(hResInst,MAKEINTRESOURCE(IDD_EXTENSION_LINK),hwnd,(DLGPROC)DlgLinkFile)==0) return;
517
518 char szApplicationPath[MAX_PATH];
519 GetModuleFileName(hInst,szApplicationPath,MAX_PATH);
520
521 char temporary[MAX_PATH],temp2[255],temp3[255];
522 for(i=0;i<pobj_nv->pobj_ExtLink->iExtItemNum;i++){
523 if(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_bReg==0) continue;
524
525 //「.拡張子」キー
526 sprintf(temp2,".%s",pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension);
527 sprintf(temp3,"%sfile",pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension);
528 hKey=ClassRoot_CreateKey(temp2,temp3);
529
530 sprintf(temp2,"text/plain",pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension);
531 RegSetValueEx(hKey,"Content Type",0,REG_SZ,(const unsigned char *)temp2,lstrlen(temp2));
532
533 RegCloseKey(hKey);
534
535
536 if(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_bWindowsSearch){
537 //検索対象に含める
538 sprintf(temporary,".%s\\PersistentHandler",pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension);
539 hKey=ClassRoot_CreateKey(temporary,"{5e941d80-bf96-11cd-b579-08002b30bfeb}");
540 RegCloseKey(hKey);
541 }
542 else{
543 //検索対象に含めない
544 sprintf(temporary,".%s\\PersistentHandler",pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension);
545 RegDeleteKey(HKEY_CLASSES_ROOT,temporary);
546 }
547
548
549 //説明
550 RegCreateKeyEx(HKEY_CLASSES_ROOT,temp3,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
551 RegSetValueEx(hKey,NULL,0,REG_SZ,
552 (const unsigned char *)pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szNote,
553 lstrlen(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szNote));
554 RegCloseKey(hKey);
555
556
557 //アプリケーションパス
558 sprintf(temporary,"\"%s\" \"%%1\"",szApplicationPath);
559 sprintf(temp2,"%s\\shell\\open\\command",temp3);
560 RegCreateKeyEx(HKEY_CLASSES_ROOT,temp2,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
561 RegSetValueEx(hKey,NULL,0,REG_SZ,(const unsigned char *)temporary,lstrlen(temporary));
562 RegCloseKey(hKey);
563
564
565#ifndef THETEXT
566 /////////////////////
567 // アイコン設定
568 // ※ProjectEditorのみ
569 /////////////////////
570
571 sprintf(temp2,"%s\\DefaultIcon",temp3);
572 if(lstrcmpi(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension,"bas")==0){
573 sprintf(temporary,"\"%s\",8",szApplicationPath);
574 RegCreateKeyEx(HKEY_CLASSES_ROOT,temp2,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
575 RegSetValueEx(hKey,NULL,0,REG_SZ,(const unsigned char *)temporary,lstrlen(temporary));
576 RegCloseKey(hKey);
577 }
578 if(lstrcmpi(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension,"ab")==0||
579 lstrcmpi(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension,"abp")==0){
580 sprintf(temporary,"\"%s\",8",szApplicationPath);
581 RegCreateKeyEx(HKEY_CLASSES_ROOT,temp2,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
582 RegSetValueEx(hKey,NULL,0,REG_SZ,(const unsigned char *)temporary,lstrlen(temporary));
583 RegCloseKey(hKey);
584 }
585 if(lstrcmpi(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension,"sbp")==0){
586 sprintf(temporary,"\"%s\",9",szApplicationPath);
587 RegCreateKeyEx(HKEY_CLASSES_ROOT,temp2,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
588 RegSetValueEx(hKey,NULL,0,REG_SZ,(const unsigned char *)temporary,lstrlen(temporary));
589 RegCloseKey(hKey);
590 }
591 if(lstrcmpi(pobj_nv->pobj_ExtLink->ppobj_ExtItems[i]->m_szExtension,"pj")==0){
592 sprintf(temporary,"\"%s\",7",szApplicationPath);
593 RegCreateKeyEx(HKEY_CLASSES_ROOT,temp2,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
594 RegSetValueEx(hKey,NULL,0,REG_SZ,(const unsigned char *)temporary,lstrlen(temporary));
595 RegCloseKey(hKey);
596 }
597#endif
598 }
599
600 //アイコンの関連付けを瞬時に反映させる
601 SHChangeNotify( SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL );
602}
Note: See TracBrowser for help on using the repository browser.