#include "Common.h" void MenuAdvice(WPARAM msg){ ///////////////////////////////////////////////////// // コマンド解説(ステータスバーに表示されるテキスト) ///////////////////////////////////////////////////// extern char CmdMsg[255]; #if defined(JPN) //日本語 if(LOWORD(msg)==IDM_NEW) SetStatusText("新規にプロジェクトまたはドキュメントを作成します"); else if(LOWORD(msg)==IDM_OPEN) SetStatusText("既存のドキュメントを開きます"); else if(LOWORD(msg)==IDM_CLOSE) SetStatusText("作業中のファイルを閉じます"); else if(LOWORD(msg)==IDM_SAVE) SetStatusText("作業中のファイルを保存します"); else if(LOWORD(msg)==IDM_NEWSAVE) SetStatusText("作業中のファイルを新しい名前を付けて保存します"); else if(LOWORD(msg)==IDM_ALLSAVE) SetStatusText("開いているファイルをすべて保存します"); else if(LOWORD(msg)==IDM_PROJECT_OPEN) SetStatusText("既存のプロジェクトを開きます"); else if(LOWORD(msg)==IDM_PROJECT_SAVE) SetStatusText("作業中のプロジェクトを保存します"); else if(LOWORD(msg)==IDM_PROJECT_CLOSE) SetStatusText("作業中のプロジェクトを閉じます"); else if(LOWORD(msg)==IDM_EXIT) SetStatusText("アプリケーションの終了と内容の保存確認をします"); else if(LOWORD(msg)==IDM_UNDO) SetStatusText("直前の操作を元にもどします"); else if(LOWORD(msg)==IDM_REDO) SetStatusText("前の未完了操作を繰り返します"); else if(LOWORD(msg)==IDM_CUT) SetStatusText("選択範囲を切り取り、クリップボードへコピーします"); else if(LOWORD(msg)==IDM_COPY) SetStatusText("選択範囲をクリップボードへコピーします"); else if(LOWORD(msg)==IDM_PASTE) SetStatusText("挿入位置にクリップボードの内容を挿入します"); else if(LOWORD(msg)==IDM_DELETE) SetStatusText("選択範囲を削除します"); else if(LOWORD(msg)==IDM_ALLSELECT) SetStatusText("ファイル全体を選択します"); else if(LOWORD(msg)==IDM_FIND) SetStatusText("作業中のドキュメント内を検索します"); else if(LOWORD(msg)==IDM_PERMUTATION) SetStatusText("指定した文字列を他の文字列で置換します"); #ifdef THETEXT else if(LOWORD(msg)==IDM_STRING_COUNT) SetStatusText("作業中ドキュメントの文字数をカウントします"); #endif else if(LOWORD(msg)==IDM_PROJECTVIEW) SetStatusText("プロジェクトビューの表示/非表示を切り替えます"); else if(LOWORD(msg)==IDM_PROJECT_OPTION) SetStatusText("プロジェクトオプションの設定を行います"); else if(LOWORD(msg)==IDM_TOPMOST) SetStatusText("エディタの最前面表示ON/OFFを切り替えます"); else if(LOWORD(msg)==IDM_SET) SetStatusText("エディタオプションの設定を行います"); else if(LOWORD(msg)==IDM_DEBUG) SetStatusText("プログラムをデバッグ用にコンパイルし、デバッグ実行します"); else if(LOWORD(msg)==IDM_DEBUGCOMPILE) SetStatusText("プログラムをデバッグ用にコンパイルします"); else if(LOWORD(msg)==IDM_RELEASECOMPILE) SetStatusText("プログラムをリリース用にコンパイルします"); else if(LOWORD(msg)==IDM_TOPIC) SetStatusText("ヘルプファイルを開きます"); else if(LOWORD(msg)==IDM_ABOUT) SetStatusText("ActiveBasicのバージョン情報を表示します"); else SetStatusText(CmdMsg); #else //英語 if(LOWORD(msg)==IDM_NEW) SetStatusText("Create a new document"); else if(LOWORD(msg)==IDM_OPEN) SetStatusText("Open an existing document"); else if(LOWORD(msg)==IDM_CLOSE) SetStatusText("Close the active document"); else if(LOWORD(msg)==IDM_SAVE) SetStatusText("Save the active document"); else if(LOWORD(msg)==IDM_NEWSAVE) SetStatusText("Save the active document with a new name"); else if(LOWORD(msg)==IDM_ALLSAVE) SetStatusText("Save all the modified documents"); else if(LOWORD(msg)==IDM_PROJECT_OPEN) SetStatusText("Open an existing project"); else if(LOWORD(msg)==IDM_PROJECT_SAVE) SetStatusText("Save the active project"); else if(LOWORD(msg)==IDM_PROJECT_CLOSE) SetStatusText("Close the active project"); else if(LOWORD(msg)==IDM_EXIT) SetStatusText("Quit the application, prompts you to save modified documents"); else if(LOWORD(msg)==IDM_UNDO) SetStatusText("Undo the last action"); else if(LOWORD(msg)==IDM_REDO) SetStatusText("Redo the previously undone action"); else if(LOWORD(msg)==IDM_CUT) SetStatusText("Cut the selection and puts it on the Clipboard"); else if(LOWORD(msg)==IDM_COPY) SetStatusText("Copy the selection and puts it on the Clipboard"); else if(LOWORD(msg)==IDM_PASTE) SetStatusText("Insert Clipboard contents"); else if(LOWORD(msg)==IDM_DELETE) SetStatusText("Erase the selection"); else if(LOWORD(msg)==IDM_ALLSELECT) SetStatusText("Select the entire document"); else if(LOWORD(msg)==IDM_FIND) SetStatusText("Search for text in the active document"); else if(LOWORD(msg)==IDM_PERMUTATION) SetStatusText("Replace occurrences of search string"); else if(LOWORD(msg)==IDM_PROJECTVIEW) SetStatusText("Show or hide ProjectView"); else if(LOWORD(msg)==IDM_PROJECT_OPTION) SetStatusText("Set project options"); else if(LOWORD(msg)==IDM_TOPMOST) SetStatusText("Mark ProjectEditor stay on top of the other applications"); else if(LOWORD(msg)==IDM_SET) SetStatusText("Set editor options"); else if(LOWORD(msg)==IDM_DEBUG) SetStatusText("Debug the program"); else if(LOWORD(msg)==IDM_DEBUGCOMPILE) SetStatusText("Compile the program for debugging"); else if(LOWORD(msg)==IDM_RELEASECOMPILE) SetStatusText("Compile the program for release"); else if(LOWORD(msg)==IDM_TOPIC) SetStatusText("Open the Help topics"); else if(LOWORD(msg)==IDM_ABOUT) SetStatusText("Display information about ActiveBasic"); else SetStatusText(CmdMsg); #endif } void ShowToolTipText(LPTOOLTIPTEXT TipText){ //////////////////////////////////////////////////////////////////////////// // ツールチップ(ツールバーにポイントしたときにポップアップされるテキスト) //////////////////////////////////////////////////////////////////////////// #if defined(JPN) //日本語 if(TipText->hdr.idFrom==IDM_NEW) TipText->lpszText="新規作成 (Ctrl+N)"; else if(TipText->hdr.idFrom==IDM_OPEN) TipText->lpszText="開く (Ctrl+O)"; else if(TipText->hdr.idFrom==IDM_SAVE) TipText->lpszText="保存 (Ctrl+S)"; else if(TipText->hdr.idFrom==IDM_ALLSAVE) TipText->lpszText="すべて保存"; else if(TipText->hdr.idFrom==IDM_CUT) TipText->lpszText="切り取り (Ctrl+X)"; else if(TipText->hdr.idFrom==IDM_COPY) TipText->lpszText="コピー (Ctrl+C)"; else if(TipText->hdr.idFrom==IDM_PASTE) TipText->lpszText="貼り付け (Ctrl+V)"; else if(TipText->hdr.idFrom==IDM_UNDO) TipText->lpszText="元に戻す (Ctrl+Z)"; else if(TipText->hdr.idFrom==IDM_REDO) TipText->lpszText="やり直し (Ctrl+Y)"; else if(TipText->hdr.idFrom==IDM_FIND) TipText->lpszText="検索 (Ctrl+F)"; else if(TipText->hdr.idFrom==IDM_DEBUG) TipText->lpszText="デバッグ実行 (F5)"; else if(TipText->hdr.idFrom==IDM_DEBUGCOMPILE) TipText->lpszText="デバッグ ビルド (F7)"; else if(TipText->hdr.idFrom==IDM_RELEASECOMPILE) TipText->lpszText="リリース ビルド (F6)"; #else //英語 if(TipText->hdr.idFrom==IDM_NEW) TipText->lpszText="New Document (Ctrl+N)"; else if(TipText->hdr.idFrom==IDM_OPEN) TipText->lpszText="Open Document (Ctrl+O)"; else if(TipText->hdr.idFrom==IDM_SAVE) TipText->lpszText="Save Document (Ctrl+S)"; else if(TipText->hdr.idFrom==IDM_ALLSAVE) TipText->lpszText="Save All Document"; else if(TipText->hdr.idFrom==IDM_CUT) TipText->lpszText="Cut (Ctrl+X)"; else if(TipText->hdr.idFrom==IDM_COPY) TipText->lpszText="Copy (Ctrl+C)"; else if(TipText->hdr.idFrom==IDM_PASTE) TipText->lpszText="Paste (Ctrl+V)"; else if(TipText->hdr.idFrom==IDM_UNDO) TipText->lpszText="Undo (Ctrl+Z)"; else if(TipText->hdr.idFrom==IDM_REDO) TipText->lpszText="Redo (Ctrl+Y)"; else if(TipText->hdr.idFrom==IDM_FIND) TipText->lpszText="Find (Ctrl+F)"; else if(TipText->hdr.idFrom==IDM_DEBUG) TipText->lpszText="Run for Debugging (F2)"; else if(TipText->hdr.idFrom==IDM_DEBUGCOMPILE) TipText->lpszText="Compile for Debugging (F4)"; else if(TipText->hdr.idFrom==IDM_RELEASECOMPILE) TipText->lpszText="Compile for Release (F7)"; #endif MenuAdvice(TipText->hdr.idFrom); } char *reflexive_Include(char *buffer,char ***pppFilePath,int *pFileNum,char *pDefaultDir){ extern HANDLE hHeap; int i,i2,i3,i4,sw1,sw2,FileSize; char temporary[MAX_PATH],temp2[MAX_PATH+255],*temp3; DWORD AccBytes; //重複チェック用 char **ppFilePath; int FileNum; ppFilePath=*pppFilePath; FileNum=*pFileNum; for(i=0;;i++){ if( ( memcmp(buffer+i,"#include",8)==0 || memcmp(buffer+i,"#require",8)==0 )&&(!IsVariableChar(buffer[i+8]))){ i2=i+8; while(buffer[i2]==' '||buffer[i2]=='\t') i2++; sw1=0; if(buffer[i2]=='\"') i2++; else if(buffer[i2]=='<'){ i2++; sw1=1; } for(i3=0;;i2++,i3++){ if((buffer[i2]=='\"'&&sw1==0)||(buffer[i2]=='>'&&sw1==1)||(buffer[i2]=='\r'&&buffer[i2+1]=='\n')||buffer[i2]=='\0'){ temporary[i3]=0; break; } temporary[i3]=buffer[i2]; } while((!(buffer[i2]=='\r'&&buffer[i2+1]=='\n'))&&buffer[i2]!='\0') i2++; if(sw1){ sprintf(temp2,"%sInclude\\%s",pj_editor_Dir,temporary); lstrcpy(temporary,temp2); } else{ GetFullPath(temporary,pDefaultDir); } ////////////////// // 重複チェック ////////////////// for(i3=0,sw2=0;i3buffer); temp3=(char *)HeapAlloc(hHeap,0,FileSize+MEM_SPACE); memcpy(temp3,MdiInfo[i3].pMdiTextEdit->buffer,FileSize); temp3[FileSize]=0; } //新しい参照ディレクトリを取得 char DefaultDir[MAX_PATH+1024]; _splitpath(temporary,DefaultDir,temp2,0,0); lstrcat(DefaultDir,temp2); //インクルードの再帰呼び出し temp3=reflexive_Include(temp3,&ppFilePath,&FileNum,DefaultDir); FileSize=lstrlen(temp3); i4=lstrlen(buffer)+FileSize-(i2-i); if(FileSize>(i2-i)) buffer=(char *)HeapReAlloc(hHeap,0,buffer,i4+1+MEM_SPACE); SlideString(buffer+i2,FileSize-(i2-i)); memcpy(buffer+i,temp3,FileSize); HeapDefaultFree(temp3); i--; continue; } for(;;i++){ if(buffer[i]=='\0') break; if(buffer[i]=='\r'&&buffer[i+1]=='\n'){ i++; break; } } if(buffer[i]=='\0') break; } finish: //重複チェック用 *pppFilePath=ppFilePath; *pFileNum=FileNum; return buffer; } char *IncludeFiles(char *buffer){ extern HANDLE hHeap; int i; //参照ディレクトリ char *pDefaultDir; extern PROJECTINFO ProjectInfo; if(ProjectInfo.name[0]) pDefaultDir=ProjectInfo.dir; else pDefaultDir=pj_editor_Dir; //重複チェック用 char **ppFilePath; int FileNum; ppFilePath=(char **)HeapAlloc(hHeap,0,1); FileNum=0; buffer=reflexive_Include(buffer,&ppFilePath,&FileNum,pDefaultDir); for(i=0;i