#pragma once #define OEMRESOURCE #define _CRT_SECURE_NO_DEPRECATE //セキュリティ警告を出さない #define _CRT_NONSTDC_NO_DEPRECATE #include #include #include #include #include "htmlhelp.h" #include #include #include #include #include #include #include "nkf_class.h" #include "WebSearch.h" #include "ruler.h" #include "TabCtrl.h" #include "ExtensionLink.h" #include "HtmlAnalysis.h" #include "FileTree.h" #include "menu.h" #include "LuxCtrl.h" #include "MdiTextEdit.h" #include "BREGEXP.H" #include "../compiler_x86/CommandValue.h" #include "Attach.h" #include "Debugger.h" #pragma comment(lib, "wininet.lib") #ifdef THETEXT //////////////////////////// // TheTextのバージョン情報 //////////////////////////// #define APPLICATION_NAME "TheText" #define VERSION_APPLI_NAME APPLICATION_NAME #define VERSION_STRING "1.02" #else ///////////////////////////////////////////////// // ActiveBasic/ProjectEditorのバージョン情報 ///////////////////////////////////////////////// #define APPLICATION_NAME "ActiveBasic 5.0" #define VERSION_APPLI_NAME APPLICATION_NAME #define VERSION_STRING "5.00.00" #endif #ifndef IMAGE_FILE_MACHINE_AMD64 #define IMAGE_FILE_MACHINE_AMD64 0x8664 // AMD64 (K8) #endif #if defined(JPN) #ifdef THETEXT //TheText日本語 #include "../res_TheText/resource.h" #include "common_msg_jpn.h" #else //日本語 #include "../res/resource.h" #include "common_msg_jpn.h" #endif #else //英語 #include "../res_e/resource.h" #include "common_msg_eng.h" #endif //アイコンリソース #include "../icon_res/resource.h" #define GENERAL_SIZE 8192 #define MAX_ARRAYDIM 16 #define MAX_WNDNUM 255 #ifdef _AMD64_ #else typedef long LONG_PTR; typedef DWORD ULONG_PTR; #endif //ファイルタイプ #define FT_BASICPROGRAM 1 #define FT_SUBPROGRAM 2 #define FT_TEXT 3 #define FT_PROJECT 4 #define FT_ICON 5 #define FT_HTML 6 #define FT_OTHER 0 #define BMPNUM_STANDARDTOOLBAR 10 //hDefaultToolbarのビットマップ数 #define SEPNUM_STANDARDTOOLBAR 4 //hDefaultToolbarのセパレータ数 #define BMPNUM_DEBUGGERTOOLBAR 8 //hDebuggerToolbarのビットマップ数 #define SEPNUM_DEBUGGERTOOLBAR 2 //hDebuggerToolbarのセパレータ数 #define BMPNUM_RADTOOLBAR 18 //コントロール挿入用ツールバーのビットマップ数(区切り用BMPを最後の1つに用意する) #define SEPNUM_RADTOOLBAR 3 //コントロール挿入用ツールバーのセパレータ数 //MDIクライアントウィンドウ下のドキュメントウィンドウタイプ #define WNDTYPE_BASIC 1 #define WNDTYPE_TEXT 2 #define WNDTYPE_RAD 3 #define WNDTYPE_MENU 4 #define WNDTYPE_ICONEDIT 5 #define WNDTYPE_HTML 6 #define IS_DOCUMENT_TEXT(a) (a==WNDTYPE_BASIC||a==WNDTYPE_TEXT||a==WNDTYPE_HTML) #define IS_RETURN(buffer,p) (buffer[p]=='\r'&&buffer[p+1]=='\n') #define IS_BLANK(c) (c==' '||c=='\t') //Rebarコントロールの個数(レバー追加) #define MAX_REBARBANDS 5 //RebarコントロールのID(レバー追加) #define ID_DOCCOMBO 1 #define ID_STANDARDTOOLBAR 2 #define ID_RELEASETOOLBAR 3 #define ID_DEBUGGERTOOLBAR 4 #define ID_SELECTCOMPILERCOMBO 5 #define ID_WEB_SEARCH 6 //検索コンボボックスの最大リスト数 #define MAX_FINDLIST 20 #define ID_FIRSTCHILD 100 //タブカラー #define TABCOLOR_GRAY RGB(230,230,230) //灰色 #define TABCOLOR_WHITE RGB(255,255,255) //白 #define TABCOLOR_RED RGB(255,200,200) //赤 #define TABCOLOR_GREEN RGB(200,255,200) //緑 #define TABCOLOR_BLUE RGB(200,220,255) //青 #define TABCOLOR_YELLOW RGB(255,255,180) //黄色 #define WM_RESETCARETPOS WM_USER+80 //オートスクロールスレッドからのキャレット設定 #define WM_SEARCH_TAB_CREATE WM_USER+90 //Web検索のタブアイテムの生成メッセージ #define WM_SEARCH_TAB_CLOSE WM_USER+91 //Web検索のタブアイテムの破棄メッセージ //SideWeb #define WM_BROWS_CREATE WM_USER+100 #define WM_BROWS_DESTROY WM_USER+101 #define WM_BROWS_GO WM_USER+102 #define WM_BROWS_NAVI WM_USER+103 #define MAX_HASH 32768 ////////////////////////////////// // メインウィンドウのタイマーID #define ID_TIMER_BACKUP 10 #define ID_DEBUGSAFTY 20 // ここまで ////////////////////////////////// extern HANDLE hHeap; extern HINSTANCE hInst,hResInst,hIconResInst; extern HWND hOwner; extern HWND hClient; extern int ScreenX,ScreenY; extern char pj_editor_Dir[MAX_PATH]; //アルファブレンド用のAPI #define WS_EX_LAYERED 0x00080000 #define LWA_ALPHA 0x00000002 typedef BOOL (WINAPI *FWINLAYER)(HWND hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags ); //新規プロジェクトのベース #define BASE_VOID 0 #define BASE_PROMPT 1 #define BASE_NORMAL 2 struct POINTANDSIZE{ POINT pos; SIZE size; }; ////////////////////////////////////////// // リソース ヘッダ(アイコン、カーソル用) typedef struct{ WORD idReserved; WORD idType; WORD idCount; }ICONDIR,CURSORDIR; //////////////////////////// //.icoファイルのヘッダ情報 struct ICONDIRENTRY{ BYTE bWidth; BYTE bHeight; BYTE bColorCount; BYTE bReserved; WORD wPlanes; WORD wBitCount; DWORD dwBytesInRes; DWORD dwImageOffset; }; ///////////////////// //MDIウィンドウ情報 #define MAX_UNDONUM 300//512未完成 #define MAX_ICONEDIT_UNDONUM 32 #define TEXTEDIT_UNDO_KEY 1 #define TEXTEDIT_UNDO_PASTE 2 #define TEXTEDIT_UNDO_SELKEY 3 struct TEXTEDIT_UNDOSTATE{ int NowPos; int Command[MAX_UNDONUM]; char *KeyStr[MAX_UNDONUM]; char *DelStr[MAX_UNDONUM]; CHARRANGE Range[MAX_UNDONUM]; CHARRANGE DelRange[MAX_UNDONUM]; }; struct RAD_UNDOSTATE_NAME{ std::string name; }; #define RAD_UNDO_INSERTWND 1 #define RAD_UNDO_DELETEWND 2 #define RAD_UNDO_INSERTITEM 3 #define RAD_UNDO_DELETEITEM 4 #define RAD_UNDO_NAME 5 #define RAD_UNDO_CAPTION 6 #define RAD_UNDO_FONT 7 #define RAD_UNDO_BGCOLOR 8 #define RAD_UNDO_WINDOWMENU 9 #define RAD_UNDO_ICONRES 10 #define RAD_UNDO_STYLE 11 #define RAD_UNDO_EXSTYLE 12 #define RAD_UNDO_POSITION 13 #define RAD_UNDO_IMAGESTATE 14 #define RAD_UNDO_TYPE 15 struct RAD_UNDOSTATE{ int NowPos; int Command[MAX_UNDONUM]; int SelectItemNum[MAX_UNDONUM]; DWORD lpdwData[MAX_UNDONUM]; }; #define MAX_RAD_SELITEM 255 struct MDIRADINFO{ //Radツール用 HWND hTools; HWND hProperty; HWND hProp_Dlg; HWND hSupport; HWND hRad; HBITMAP hBitmap; HBITMAP hOldBitmap; HDC hMemDC; int SelectingItem[MAX_RAD_SELITEM]; int ButtonSelect; //ウィンドウクライアント領域 POINT ClientPos; SIZE ClientSize; //変更情報 RAD_UNDOSTATE undo; }; struct MDIMENUINFO{ HWND hList; HWND hMenuEdit; HWND hEdit_Dlg; }; #define ICONTYPE_16_16 0 #define ICONTYPE_16_256 1 #define ICONTYPE_32_16 2 #define ICONTYPE_32_256 3 struct ICONEDIT_UNDOSTATE{ int NowPos; BYTE *lpData[MAX_ICONEDIT_UNDONUM]; }; struct MDIICONEDITINFO{ HWND hMain; HWND hToolDlg; HWND hButtonsDlg; HWND hColorDlg; HDC memdc; HBITMAP hMemBmp; HBITMAP hSelectingBmp; int SelectLevel; RECT DraggingRect; int num; int SelectIconNum; union{ BYTE *pIconImage[8]; //アイコンのイメージデータ配列(マップ配列、カラー配列、マスク配列) BITMAPINFOHEADER *pBmpHdr[8]; }; DWORD dwBytesInRes[8]; DWORD NowTool; COLORREF MainColor; COLORREF SubColor; ICONEDIT_UNDOSTATE undo[8]; BOOL bModify; }; struct MDIINFO{ HWND hwnd; int DocType; std::string title; std::string path; union{ MDIRADINFO *MdiRadInfo; MDIMENUINFO *MdiMenuInfo; MDIICONEDITINFO *MdiIconEditInfo; CMdiTextEdit *pMdiTextEdit; }; char *IndentStr; }; extern std::vector MdiInfo; //RADツールのマウスドラッグ #define FRAME_CHANGEPOS_START 1 //----- ここから ----- #define FRAME_UPPER_LEFT 1 #define FRAME_UPPER_RIGHT 2 #define FRAME_LOWER_LEFT 3 #define FRAME_LOWER_RIGHT 4 #define FRAME_LEFT 5 #define FRAME_RIGHT 6 #define FRAME_UPPER 7 #define FRAME_LOWER 8 #define FRAME_INSIDE 9 #define FRAME_CHANGEPOS_END 9 //----- ここまで ----- #define ITEM_MAKING 10 #define SELECTING_FRAME 11 //アイテムの大きさの限界値 #define MIN_ITEM_X 12 #define MIN_ITEM_Y 9 //選択アイテム #define SELECT_WINDOW -1 #define NON_TOOL -1 struct RADINFO{ int NowDragging; POINT DragStartPos; RECT DragStartRect[MAX_RAD_SELITEM]; RECT DraggingRect[MAX_RAD_SELITEM]; RECT OldDraggingRect[MAX_RAD_SELITEM]; }; ////////////////// //リソース情報 extern HTREEITEM hCursorTreeItemForProjectView; extern HTREEITEM hBitmapTreeItemForProjectView; extern HTREEITEM hIconTreeItemForProjectView; //////////////////// //プロジェクト情報 #define PROJECT_VERSION 10 struct PROCINFO{ char *name; HTREEITEM hTreeItem; HTREEITEM hFileTreeItem; int code_pos; }; struct INCPROCINFO{ char *name; char *Parms; char *type; }; //ダイアログアイテムの種類 #define CT_BUTTON 1 #define CT_CHECKBOX 2 #define CT_COMBOBOX 3 #define CT_EDIT 4 #define CT_GROUPBOX 5 #define CT_HSCROLLBAR 6 #define CT_IMAGEBOX 7 #define CT_LISTBOX 8 #define CT_LISTVIEW 9 #define CT_RADIOBUTTON 10 #define CT_STATIC 11 #define CT_TREEVIEW 12 #define CT_VSCROLLBAR 13 #define CT_UPDOWN 14 #define CT_PROGRESSBAR 15 #define CT_TRACKBAR 16 #define CT_MENU 99 //イベント タイプ #define EVENTTYPE_DEFAULT 0 #define EVENTTYPE_MENU 1 #define EVENTTYPE_MMSYS 2 struct NEWPROJECTINFO{ char name[MAX_PATH]; DWORD dwTypeID; _int8 ShowHelloWorld; DWORD dwOption; }; struct MENU_INFO{ char *IdName; char *caption; UINT type; UINT state; int NumberOfMenu; MENU_INFO *pMenuInfo; HTREEITEM hTreeItem; }; #define MT_EXE 0 //EXEモジュールタイプ #define MT_DLL 1 //DLLモジュールタイプ #define MT_SLL 2 //SLLモジュールタイプ #define PJ_OP_SOURCE_MASK 0x00FFFFFF #define PJ_OP_MMSYSTEM 0x00000001 #define PJ_OP_COMMCTRL 0x00000002 #define PJ_OP_RICHEDIT 0x00000004 #define PJ_OP_WINSOCK 0x00000008 #define PJ_OP_STRICT 0x00010000 // #strictディレクティブは今は使われていない #define PJ_OP_RC_MANIFEST 0x00020000 #define PJ_OP_UNICODE 0x00040000 struct SAVEREBAR{ int RebarID; int RebarLength; int IsBandBreak; }; struct ITEMEVENTINFO{ char *IdName; char **pEventNames; int ClassID; int EventNum; }; #define PARAMETER_HINT_MAX_SIZE 8192 struct METHODCHECKINFO{ HWND hWnd; LOGFONT LogFont; HFONT hFont; HFONT hBoldFont; char BeforeMethodName[VN_SIZE]; char msg[PARAMETER_HINT_MAX_SIZE]; int ParmNum; int HeadPos; }; ///////////////////// // コード補完機能 ///////////////////// #define ACCESS_NON 0 #define ACCESS_PRIVATE 1 #define ACCESS_PUBLIC 2 #define ACCESS_PROTECTED 3 #define ACCESS_PAIRCOMMAND 4 #define ACCESS_HTML_GENERAL_PARAM 5 #define ACCESS_HTML_PARAM 6 struct MEMBERINFO{ //クラス名 char *pName; DWORD dwProc; DWORD dwAccess; int code_pos; }; struct COMPLEMENT_WINDOW_INFO{ HWND hWnd; HWND hList; int iPos; int iLength; MEMBERINFO *pMemberInfo; int MemberNum; //ペアステートメントのインデント格納用 char szIndent[255]; }; class CSettingFile{ BOOL GetDataLine(const char *name,char *parms); protected: char *buffer; BOOL GetWholeValue(const char *name,int *pi32data); bool GetBoolean( const char *name,bool &b ); BOOL Get3WholeValue(char *name,int *pd1,int *pd2,int *pd3); BOOL GetRGBValue(char *name,COLORREF *prgb); BOOL GetStringValue(char *name,char *str); BOOL GetRectValue(char *name,RECT *prc); BOOL GetLogFont(char *name,LOGFONT *plf); BOOL GetRebarBand(SAVEREBAR *psr,int num); void SetWholeValue( const char *name,long i32data); void SetBoolean( const char *name,bool b); void Set3WholeValue(char *name,long d1,long d2,long d3); void SetRGBValue(char *name,COLORREF rgb); void SetStringValue(char *name,char *str); void SetRectValue(char *name,RECT *prc); void SetLogFont(char *name,LOGFONT *plf); void SetRebarBand(SAVEREBAR *psr,int num); }; #include "DesignTheme.h" //ProjectEditor.cpp void HeapDefaultFree(LPVOID lpMem); void ToBigChar(char str[]); int GetWndNum(HWND hChild); int GetNowWndNum(void); void SendTextEditResizeEvent(HWND hwnd); void RedrawAllWindow(void); int DocumentModifyCheck(HWND hChild); void SetStatusText(char *MenuText); void ResetState_UndoMenu(void); void ResetState_EditMenu(void); void ResetState_DocMenu(void); void DuplicateTitleCheck(char *lpszTitle); HWND NewTextEditWindow(char *filepath,_int8 DocumentType,COLORREF TabColor=TABCOLOR_GRAY); void CloseDocWindow(int WndNum); void ResizeTextEditWnd(HWND hwnd,int cx,int cy); #define FLAG_DBLCLK 1 #define FLAG_BEAMCURSOR 2 int RegWndClass(WNDPROC WndProc,char *lpClassName,HBRUSH hBackBrush,DWORD dwFlag); //Backup.cpp void CreateBackupDir(void); void backup(void *dummy); BOOL restore(void); //DialogBoxes.cpp void SetPosCenter(HWND hParent,HWND hwnd); void SetPosCenter(HWND hwnd); BOOL SetFontDialog(HWND hwnd,LOGFONT *lf,BOOL bFixedPitchOnly,int *lpiPointSize=0); void DlgNewProjectWizard(HWND hwnd); BOOL CALLBACK DlgNewFile(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); void DlgProjectOptionSetting(HWND hwnd); void DlgOptionSetting(HWND hwnd); BOOL CALLBACK DialogAbout(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); //FileOperation.cpp void MakeUserSettingDir(void); char *ReadBuffer( const std::string &path ); char *ReadBuffer_NonErrMsg( const std::string &path ); _int8 WriteBuffer(const std::string &path,const char *buffer,int length, bool isEnableError = true); _int8 WriteBuffer_NonErrMsg(const std::string &path,char *buffer,int length); void GetRelationalPath(char *path,char *dir); void GetFullPath(char *path,const char *dir); void RemoveDirectoryStrong(const char *dirPath); BOOL GetFilePathDialog(HWND hwnd,char *filename,LPSTR Filter,LPSTR Title,_int8 IsOpen); BOOL GetFolder(HWND hWnd,char *folder,char *OpenFolderTitle); int GetFileExtension( const char *path ); HWND OpenFileWithExtension( const std::string &filePath ); BOOL SaveDocument(HWND hChild,char *SaveFileName); BOOL ShortPathToLongPath(char ShortPath[MAX_PATH],char *LongPath); bool IsExistFile( const char *FilePath ); bool IsExistDirectory( const char *DirPath ); //rebar.cpp #define MAX_BAND 255 typedef HWND (*AddBandProc)(HWND hRebar,int num,char *lpszText); class CDBRebarBand{ int BandId[MAX_BAND]; AddBandProc pAddProc[MAX_BAND]; int iMaxBandNum; public: HWND hRebar; CDBRebarBand(); ~CDBRebarBand(); void add(int band_id,AddBandProc add_proc); HWND call_add(int band_id,int num,char *lpszText); }; class CMainRebar{ CDBRebarBand *pobj_DBRebarBand; void SetupRebar(HWND hwnd); public: HWND hParent; HWND hRebar; CMainRebar(HWND hwnd_parent); ~CMainRebar(); void ResetInitRebar(); void ResetRebar(); void SaveRebarState(void); void ChangeRebarBand(int BandID); void menu_popup(HWND hwnd,int PosX,int PosY); }; extern CMainRebar *pobj_Rebar; void ResetRebarData(void); LRESULT CALLBACK DefaultToolbarProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); LRESULT CALLBACK DocComboProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); LRESULT CALLBACK DebuggerToolbarProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); //SubOperation.cpp void ScreenToClient(HWND hwnd,RECT *pRect); void ClientToScreen(HWND hwnd,RECT *pRect); BOOL IsWow64(void); void URLEncode(LPSTR pszSrc); void Digit(int num,char *buffer); void RectNaturalFormat(RECT *ReadRect,RECT *CopyRect); void RectNaturalFormat(int *x1,int *y1,int *x2,int *y2); void KillSpaces(char *str1,char *str2); void RemoveStringQuotes(char *str); void SlideString(char *str,int slide); void SlideBuffer(char *buffer,int length,int slide); BOOL IsVariableTopChar(char c); BOOL IsVariableChar(char c); BOOL IsCommandBackDelimitation(char *buffer,int pos); BOOL IsCommandDelimitation(char *buffer,int p); char *ComparisonString( char *str1, char *str2, bool isBigSmall, bool isWordUnit ); int GetOneParameter(char *Parameter,int pos,char *retAns); int GetStringInPare(char *buffer,char *ReadBuffer); int GetStringInBracket(char *buffer,char *ReadBuffer); void JumpBlank(char *pBuf,int *piPos); BOOL CheckParenthesis(char *buffer); DWORD GetValue(char *value); BOOL IsManagementCommand(int ComNum); int IsBasicReservedWord(char *str); HBITMAP CreateGradationBitmap(SIZE *pSize,COLORREF color1,COLORREF color2); HBITMAP CreateVertGradationBitmap(SIZE *pSize,COLORREF color1,COLORREF color2); HBITMAP CreateHorzGradationBitmap(SIZE *pSize,COLORREF color1,COLORREF color2); HICON CreateGrayIcon(HICON hBaseIcon); void GetSize(SIZE *pSize,RECT *pRect); BOOL HitTest(RECT *pRect,POINT *pPos); BOOL Rectangle(HDC hdc,RECT *pRect); void ComboBox_SetSelText(HWND hCombo,char *lpszText); void SetCursorByState(int state); void SetTextEditColorDesign(TEXTEDIT_COLOR_INFO *pColorInfo,CTheme *pobj_Theme,BOOL bRedraw); BOOL SetupProjectEditor(void); void EndProjectEditor(void); BOOL SetRunning(HWND hChild); BOOL IsNeedCompile( const std::string &filepath, BOOL bDebug ); std::string GetLastErrorString(); //DocumentAdvice.cpp void MenuAdvice(WPARAM msg); void ShowToolTipText(LPTOOLTIPTEXT TipText); char *IncludeFiles(char *buffer); void AddParameterHints_ToProject(char *path); ///////////////////// // テキスト エディタ ///////////////////// #define CONTROL_TAB_SPACE_DEFAULT 10 //エディタ画面左端のコントロールタブ(通常) //DrawBuffer.cpp void TextEdit_DrawBuffer(HDC hdc,int WndNum); //TextEditor.cpp int GetControlTabSpace(int WndNum,int *piCount=0); void ResetTextEditFont(HWND hwnd); void SetTextEditWordColor(int WndNum); BOOL IsHiragana(char *pBuf); BOOL IsAlphabet(char c); BOOL IsReturnCode(char *pBuf); void ResetScrollbar(int WndNum,int max_x,int max_y); #define WORDCARET_BEFORE 1 #define WORDCARET_AFTER 2 void TextEdit_GetWordCaret(HWND hwnd,int WndNum,POINT *pPos,int *piStart,int *piEnd,BOOL bBeforeAfterFlag); void CancelBeforeAutoIndent(int WndNum); LRESULT CALLBACK TextEditProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); //Caret.cpp BOOL IsRightTurn(char *pBuf,int i,int now_x); int GetBufferIndexFromCaretPos(char *pBuf,int now_x,int now_y); void GetCaretPosFromBufferIndex(char *pBuf,int index,POINT *pCaretPos); void TextEdit_GetSel(int WndNum,CHARRANGE *pCharRange); void TextEdit_GetSelText(int WndNum,CHARRANGE *pCharRange,char *buffer); void GetScrollBaseCaretPos(MDIINFO *pMdiInfo,int *pNaturalBaseX,int *pNaturalBaseY); void GetNaturalBaseCaretPos(int WndNum,int *pScrollBaseX,int *pScrollBaseY); void TextEdit_SetSel(int WndNum,int StartIndex,int EndIndex,BOOL bShowCenter=0); void TextEdit_SelectOneLine(int WndNum,int code_pos,BOOL bShowCenter=0); void ResetCaretPos(int WndNum,BOOL bInputAndReset=0); BOOL TextEdit_ScrollCaret(int WndNum,BOOL bScrollOneStep_x,BOOL bShowCenter=0); void CaretPos_LooseToNatural(int WndNum,int loose_x,int loose_y,POINT *pCaretPos); void GetNaturalCaretPos_Click(int WndNum,int mouse_x,int mouse_y,POINT *pCaretPos); void GetNaturalCaretPos_Left(int WndNum); void GetNaturalCaretPos_Right(int WndNum,POINT *pCaretPos); void GetNaturalCaretPos_Up(int WndNum,POINT *pCaretPos); void GetNaturalCaretPos_Down(int WndNum,POINT *pCaretPos); void GetNaturalCaretPos_PageUp(int WndNum,POINT *pCaretPos); void GetNaturalCaretPos_PageDown(int WndNum,POINT *pCaretPos); //Replace.cpp void TextEdit_Replace(int WndNum,char *str,BOOL bRedraw); void TextEdit_ReplaceUpdateUndoData(int WndNum,char *str,BOOL bPaste,BOOL bRedraw); void TextEdit_Convert(int id); //TextEditor_UndoRedo.cpp void TextEdit_UndoCommand(int WndNum); void TextEdit_RedoCommand(int WndNum); void TextEdit_NoticeChanging(int WndNum,int Command,char *KeyStr,char *DelStr,CHARRANGE *Range,CHARRANGE *DelRange); void TextEdit_DeleteUndoData(TEXTEDIT_UNDOSTATE *pUndoState,int pos); //Search.cpp void AddFindData(HWND hwnd,char ppData[MAX_FINDLIST][MAX_PATH],char *str); BOOL CALLBACK DlgFind(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); BOOL CALLBACK DlgPermutation(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); //analysis.cpp BOOL GetVarFormatString(char *buffer,char *array,char *array2,char *NestMember,int *pRefType); BOOL CheckReferType(char *ClassName,BOOL bArray,char *VarArray,int VarRefType); void GetOriginalClassName(char *ClassName); int GetClassPos(char *pBuf,char *ClassName,DWORD *pdwClassType); BOOL GetClassNameFromClassMember(char *pBuf,int iPos,char *VarName,char *ClassName,BOOL *pbArray); void GetCodeAreaType(char *pBuf,int iPos,int *piProcPos,char *NowClass); BOOL GetVariableClassName(char *pEditBuf,int iPos,char *VarName,char *ClassName,BOOL *pbArray); //EndPairCommandComplement.cpp BOOL GetEndPairCommandInfo(char *buffer,int p); BOOL IsNeedNewIndentCommand(char *name); void GetWithObjectVariable(char *buffer,int p,char *pObjectVar); //Complement.cpp void DeleteComplementInfo(void); BOOL GetComplementInfo(char *variable,char *pEditBuf,int iPos); void CodeComplement(int WndNum,int iPos); LRESULT CALLBACK ComplementWindow(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); //ParameterHint.cpp char *GetUserSourceCode(void); void ChangeReturnCode(char *buffer); void DeleteComment(char *buffer); LRESULT CALLBACK MethodCheckWindow(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); void ShowParameterHint(int WndNum); //CodeFormatter.cpp char *CodeFormatter(char *lpszReadBuffer); #ifdef THETEXT //StringCount.cpp BOOL CALLBACK DlgStringCount(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); #endif //Print.cpp class CPage{ public: PAGESETUPDLG psd; CPage(); ~CPage(); BOOL SetupDlg(void); }; extern CPage obj_Page; LRESULT CALLBACK PreviewWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); void Preview(void); void Printout(void); //History.cpp #define IS_FILEHISTORY_COMMAND(a) (100<=a&&a<=199) class CHistory{ int iNum; int iMaxHistoryNum; int m_BaseID; public: char *lpszPath[255]; CHistory(int BaseID); ~CHistory(); void load(char *path); void save(char *path); void add(char *path); void insert(const char *path); void ResetFileMenu(CSubMenuEx *pobj_SubMenu,BOOL bOwnerDraw); }; ////////////////////// /* プロジェクト解析 */ //CClassInfo.cpp class CClassInfo{ public: char ClassName[VN_SIZE]; MEMBERINFO *pMemberInfo; int MemberNum; CClassInfo(); ~CClassInfo(); int Analyze(char *pBuf,int *p); }; //ClassTree.cpp struct TREEHASH{ HTREEITEM hItem; HTREEITEM hFileTreeItem; TREEHASH *pNextData; }; #define CTV_ROOT 1 //ルート #define CTV_FOLDER 2 //フォルダ #define CTV_GLOBAL_PROC 3 //プロシージャ #define CTV_CLASS 4 //クラス #define CTV_PUBLIC_MEMBER 5 //公開cメンバ変数 #define CTV_PUBLIC_METHOD 6 //公開メソッド #define CTV_PRIVATE_MEMBER 7 //非公開メンバ変数 #define CTV_PRIVATE_METHOD 8 //非公開メソッド class CClassTreeView{ HWND hTreeWnd; HTREEITEM hNowFileTreeItem; TREEHASH tree_data[MAX_HASH]; HTREEITEM hGlobalProcedureFolder; HTREEITEM hNowClassFolder; int hash_default(LONG_PTR lpdata); void AddValidItem(HTREEITEM hItem,HTREEITEM hFileTreeItem); BOOL delete_check(HTREEITEM hItem); void DeleteInvalidItems(HTREEITEM hItem); void DeleteTreeHash(TREEHASH *pth); HTREEITEM insert(HTREEITEM hParentItem,int flag,char *lpszName,HTREEITEM hFileTreeItem); public: HTREEITEM hRootFolder; int NumberOfProcedures; PROCINFO *pProcInfo; BOOL bCloseSwitch; BOOL bShowSwitch; CClassTreeView(); ~CClassTreeView(); void init(HWND hwnd,HTREEITEM hFileTreeItem); void InsertRootFolder(void); void InsertGlobalProcedureFolder(void); HTREEITEM InsertGlobalProcedure(int flag,char *lpszName,HTREEITEM hFileTreeItem); HTREEITEM insert_code_item(HTREEITEM hParentItem,int flag,char *lpszName,HTREEITEM hFileTreeItem,char *pBuf,int p); void InsertClassFolder(char *lpszName,HTREEITEM hFileTreeItem,char *pBuf,int p); void InsertClassMember(int flag,char *lpszName,HTREEITEM hFileTreeItem,char *pBuf,int p); void finish(); }; extern CClassTreeView *pobj_ClassTreeView; void ResetClassTree(HTREEITEM hFileTreeItem); //ProjectControl.cpp void ResizeProjectView_ToolWindow(void); LRESULT CALLBACK ProjectView_ToolWindowProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); void ShowFileView(); void ShowClassView(); void ShowMaterialView(); LRESULT CALLBACK ProjectViewProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); void Project_File_Insert(char *path); void Project_File_Delete(HTREEITEM hTreeItem); void MakeNewProject(void); BOOL ProjectModifyCheck(BOOL bRun); void MakeWorkFile(void); void SaveProject(void); BOOL SetProjectToRun(void); BOOL IsNeedCompileForProject(BOOL bDebug); //WindowControl.cpp int GetWndInfoNum( const std::string &name ); ActiveBasic::PM::WindowInfo *GetWndInfo( const std::string &name ); HGLOBAL Rad_GetChildInfoClipboardData(int WndNum,int WndInfoNum); void Rad_PasteChildInfoClipboardData(int WndNum,HGLOBAL hGlobal); char *PermutationWndPgmTemplate(char *pBuf,const char *pPjName, char *pWndName, char *pHandleName, char *pProcName); const std::string PermutationWndPgmTemplate( const std::string &templateFilePath, const std::string &projectName, std::string &windowName, std::string &handleName, std::string &procName ); void GetItemClassName(char *buffer,int Control); void SaveWindowProgram(); void SaveWindowFile( char *path, const ActiveBasic::PM::WindowInfos &windowInfos ); _int8 OpenWindowFile(char *path); void GetDefaultWindowFont(LOGFONT *LogFont); void Project_Window_Insert(void); void Project_Window_Delete(int WndInfoNum); //Resource.cpp void Project_CursorResInsert(void); void Project_Cursor_Delete(int CursorInfoNum); void Project_Cursor_RenameID(int CursorInfoNum); void Project_BitmapResInsert(void); void Project_Bitmap_Delete(int IconInfoNum); void Project_Bitmap_RenameID(int BitmapInfoNum); void Project_IconResInsert(void); void Project_Icon_Delete(int IconInfoNum); void Project_Icon_RenameID(int IconInfoNum); BOOL CALLBACK DlgProject_ResourceID_Input(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); /////////////////// /* RADウィンドウ */ //RadProc.cpp void NewRadWindow( const ActiveBasic::PM::WindowInfo &windowInfo ); int InsertDlgItem(int WndNum,int WndInfoNum,int ItemNum,POINT *pPos,SIZE *pSize,const char *IdName,const char *caption,DWORD style_or_WndNum,DWORD ExStyle,int Control,ActiveBasic::PM::ImageReferenceType::EnumType ImageType,const char *ImagePath,DWORD dwInsertType); void DeleteDlgItem(int WndNum,int WndInfoNum,int ItemNum,BOOL bNoticeChanging); void CursorPos_GlobalToLocal(HWND hwnd,long *x,long *y); void DrawSelectingRect(HWND hwnd,int WndNum,int WndInfoNum,int ButtonSelect); void ChangePropertyWindow(int WndNum,int WndInfoNum); void ResetScrollbarOfRadEditor(int WndNum,int weight,int height); LRESULT CALLBACK RadWindow(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); void ResizeToRadToolWindows(int WndNum,int weight,int height); LRESULT CALLBACK MDIClientWindow_Rad(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); //DrawWindow.cpp void DrawRadWindow(int WndNum,const ActiveBasic::PM::WindowInfo *pWindowInfo); //Rad_UndoRedo.cpp void Rad_UndoCommand(int WndNum); void Rad_RedoCommand(int WndNum); void Rad_DeleteUndoData(int WndNum,int pos); void Rad_NoticeChanging(int WndNum,int Command,int SelectItemNum,DWORD dwData); //RadToolsAndPropertyProc.cpp LRESULT CALLBACK RadToolsWindow(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); BOOL CALLBACK RadProperty_WindowProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); BOOL CALLBACK DlgRadProperty_Item_RenameCaption(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); BOOL CALLBACK RadProperty_ButtonProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); BOOL CALLBACK RadProperty_CheckBoxProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); BOOL CALLBACK RadProperty_ComboBoxProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); BOOL CALLBACK RadProperty_EditProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); BOOL CALLBACK RadProperty_GroupBoxProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); BOOL CALLBACK RadProperty_ImageBoxProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); BOOL CALLBACK RadProperty_ListBoxProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); BOOL CALLBACK RadProperty_ListViewProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); BOOL CALLBACK RadProperty_ProgressBarProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); BOOL CALLBACK RadProperty_RadioButtonProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); BOOL CALLBACK RadProperty_ScrollBarProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); BOOL CALLBACK RadProperty_StaticProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); BOOL CALLBACK RadProperty_TrackBarProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); BOOL CALLBACK RadProperty_TreeViewProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); BOOL CALLBACK RadProperty_UpDownProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); LRESULT CALLBACK RadPropertyWindow(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); //MessageCallOperation.cpp char **GetProcedureNamesOfMessageCall(int WndInfoNum,ITEMEVENTINFO **ppItemEventInfo,int *num,BOOL *pbAlways); void SelectProcedureOfMessageCall(int WndInfoNum,char *ProcedureName,char *Parameter); BOOL CALLBACK DlgEventCode(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); //RadSupport.cpp LRESULT CALLBACK TestWindowProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); void SetSupportDlgData(int WndNum, const ActiveBasic::PM::WindowInfo &windowInfo ); BOOL CALLBACK DlgRadSupport(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); //////////////////// /* MENUウィンドウ */ //MenuProc.cpp int GetMenuInfoNum(const std::string &name); void HeapMenuDataFree(MENU_INFO *pMenuInfo,int ItemNum,int *NumberOfFreedItem); BOOL CALLBACK DlgProject_MenuID_Input(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); void Project_Menu_Insert(void); void Project_Menu_Delete(int MenuInfoNum); void NewMenuWindow(MENU_INFO *pMenuInfo); BOOL CALLBACK MenuEditDlg(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); LRESULT CALLBACK MenuEditWindow(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); LRESULT CALLBACK MDIClientWindow_Menu(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); ////////////////////////////////// /* アイコン エディタ ウィンドウ */ //IconEditor.cpp void AddIconType(int WndNum,int IconType); void DeleteIconType(int WndNum); void NewIconEditWindow(const char *filepath); void SaveIconFile(char *filepath,HWND hwnd); LRESULT CALLBACK MDIClientWindow_IconEdit(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); //IconEditor_Main.cpp HGLOBAL IconEdit_GetChildInfoClipboardData(int WndNum); void IconEdit_PasteChildInfoClipboardData(int WndNum,HBITMAP hBmp); void IconEdit_PasteImage(int WndNum); void DrawIconToMemBmp(int WndNum,RECT *pRect); void IconEdit_EraseRect(int WndNum,RECT *pRect); LRESULT CALLBACK IconEditWindowProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); //IconEditor_Tool.cpp BOOL CALLBACK DlgIconButtons(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); BOOL CALLBACK DlgIconToolProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); //IconEditor_Color.cpp BOOL CALLBACK DlgIconColorProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); //IconEditor_UndoRedo.cpp void IconEdit_UndoCommand(int WndNum); void IconEdit_RedoCommand(int WndNum); void IconEdit_NoticeChanging(int WndNum); #include "NonVolatile.h" #ifdef _DEBUG /*Debug*/ #define HeapAlloc CheckHeapAlloc #define HeapReAlloc CheckHeapReAlloc LPVOID CheckHeapAlloc(HANDLE hHeap,DWORD dwFlags,DWORD dwBytes); LPVOID CheckHeapReAlloc(HANDLE hHeap,DWORD dwFlags,LPVOID lpMem,DWORD dwBytes); #define DeleteObject CheckDeleteObject BOOL CheckDeleteObject(HGDIOBJ hObject); #endif