source: dev/trunk/ab5.0/abdev/abdev/Common.h@ 651

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

・BreakPoint周りをリファクタリング
・FileTree周りをリファクタリング

File size: 32.1 KB
Line 
1#pragma once
2
3#define OEMRESOURCE
4#define _CRT_SECURE_NO_DEPRECATE //セキュリティ警告を出さない
5#define _CRT_NONSTDC_NO_DEPRECATE
6#include <windows.h>
7#include <stdio.h>
8#include <string.h>
9#include <commctrl.h>
10#include "htmlhelp.h"
11#include <shlobj.h>
12#include <zmouse.h>
13#include <math.h>
14#include <limits.h>
15#include <process.h>
16#include <wininet.h>
17
18#include "nkf_class.h"
19#include "WebSearch.h"
20#include "ruler.h"
21#include "TabCtrl.h"
22#include "ExtensionLink.h"
23#include "HtmlAnalysis.h"
24#include "FileTree.h"
25#include "menu.h"
26#include "LuxCtrl.h"
27#include "MdiTextEdit.h"
28#include "BREGEXP.H"
29#include "../compiler_x86/CommandValue.h"
30
31
32#include "Attach.h"
33#include "Debugger.h"
34
35
36#pragma comment(lib, "wininet.lib")
37
38
39
40#ifdef THETEXT
41
42////////////////////////////
43// TheTextのバージョン情報
44////////////////////////////
45#define APPLICATION_NAME "TheText"
46#define VERSION_APPLI_NAME APPLICATION_NAME
47#define VERSION_STRING "1.02"
48
49#else
50
51/////////////////////////////////////////////////
52// ActiveBasic/ProjectEditorのバージョン情報
53/////////////////////////////////////////////////
54#define APPLICATION_NAME "ActiveBasic 5.0"
55#define VERSION_APPLI_NAME APPLICATION_NAME
56#define VERSION_STRING "5.00.00"
57
58#endif
59
60
61
62#ifndef IMAGE_FILE_MACHINE_AMD64
63#define IMAGE_FILE_MACHINE_AMD64 0x8664 // AMD64 (K8)
64#endif
65
66
67#if defined(JPN)
68
69#ifdef THETEXT
70//TheText日本語
71#include "../res_TheText/resource.h"
72#include "common_msg_jpn.h"
73#else
74//日本語
75#include "../res/resource.h"
76#include "common_msg_jpn.h"
77#endif
78
79#else
80//英語
81#include "../res_e/resource.h"
82#include "common_msg_eng.h"
83#endif
84
85//アイコンリソース
86#include "../icon_res/resource.h"
87
88
89
90
91#define GENERAL_SIZE 8192
92#define MAX_ARRAYDIM 16
93
94#define MAX_WNDNUM 255
95
96
97#ifdef _AMD64_
98#else
99typedef long LONG_PTR;
100typedef DWORD ULONG_PTR;
101#endif
102
103//ファイルタイプ
104#define FT_BASICPROGRAM 1
105#define FT_SUBPROGRAM 2
106#define FT_TEXT 3
107#define FT_PROJECT 4
108#define FT_ICON 5
109#define FT_HTML 6
110#define FT_OTHER 0
111
112#define BMPNUM_STANDARDTOOLBAR 10 //hDefaultToolbarのビットマップ数
113#define SEPNUM_STANDARDTOOLBAR 4 //hDefaultToolbarのセパレータ数
114#define BMPNUM_DEBUGGERTOOLBAR 8 //hDebuggerToolbarのビットマップ数
115#define SEPNUM_DEBUGGERTOOLBAR 2 //hDebuggerToolbarのセパレータ数
116#define BMPNUM_RADTOOLBAR 18 //コントロール挿入用ツールバーのビットマップ数(区切り用BMPを最後の1つに用意する)
117#define SEPNUM_RADTOOLBAR 3 //コントロール挿入用ツールバーのセパレータ数
118
119//MDIクライアントウィンドウ下のドキュメントウィンドウタイプ
120#define WNDTYPE_BASIC 1
121#define WNDTYPE_TEXT 2
122#define WNDTYPE_RAD 3
123#define WNDTYPE_MENU 4
124#define WNDTYPE_ICONEDIT 5
125#define WNDTYPE_HTML 6
126
127#define IS_DOCUMENT_TEXT(a) (a==WNDTYPE_BASIC||a==WNDTYPE_TEXT||a==WNDTYPE_HTML)
128
129#define IS_RETURN(buffer,p) (buffer[p]=='\r'&&buffer[p+1]=='\n')
130#define IS_BLANK(c) (c==' '||c=='\t')
131
132//Rebarコントロールの個数(レバー追加)
133#define MAX_REBARBANDS 5
134
135//RebarコントロールのID(レバー追加)
136#define ID_DOCCOMBO 1
137#define ID_STANDARDTOOLBAR 2
138#define ID_RELEASETOOLBAR 3
139#define ID_DEBUGGERTOOLBAR 4
140#define ID_SELECTCOMPILERCOMBO 5
141#define ID_WEB_SEARCH 6
142
143//検索コンボボックスの最大リスト数
144#define MAX_FINDLIST 20
145
146#define ID_FIRSTCHILD 100
147
148
149//タブカラー
150#define TABCOLOR_GRAY RGB(230,230,230) //灰色
151#define TABCOLOR_WHITE RGB(255,255,255) //白
152#define TABCOLOR_RED RGB(255,200,200) //赤
153#define TABCOLOR_GREEN RGB(200,255,200) //緑
154#define TABCOLOR_BLUE RGB(200,220,255) //青
155#define TABCOLOR_YELLOW RGB(255,255,180) //黄色
156
157
158#define WM_RESETCARETPOS WM_USER+80 //オートスクロールスレッドからのキャレット設定
159
160#define WM_SEARCH_TAB_CREATE WM_USER+90 //Web検索のタブアイテムの生成メッセージ
161#define WM_SEARCH_TAB_CLOSE WM_USER+91 //Web検索のタブアイテムの破棄メッセージ
162
163//SideWeb
164#define WM_BROWS_CREATE WM_USER+100
165#define WM_BROWS_DESTROY WM_USER+101
166#define WM_BROWS_GO WM_USER+102
167#define WM_BROWS_NAVI WM_USER+103
168
169
170
171#define MAX_HASH 32768
172
173
174//////////////////////////////////
175// メインウィンドウのタイマーID
176
177#define ID_TIMER_BACKUP 10
178#define ID_DEBUGSAFTY 20
179
180// ここまで
181//////////////////////////////////
182
183
184
185extern HANDLE hHeap;
186extern HINSTANCE hInst,hResInst,hIconResInst;
187extern HWND hOwner;
188extern HWND hClient;
189extern int ScreenX,ScreenY;
190extern char pj_editor_Dir[MAX_PATH];
191
192
193//アルファブレンド用のAPI
194#define WS_EX_LAYERED 0x00080000
195#define LWA_ALPHA 0x00000002
196typedef BOOL (WINAPI *FWINLAYER)(HWND hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags );
197
198
199
200//新規プロジェクトのベース
201#define BASE_VOID 0
202#define BASE_PROMPT 1
203#define BASE_NORMAL 2
204
205struct POINTANDSIZE{
206 POINT pos;
207 SIZE size;
208};
209
210
211
212//////////////////////////////////////////
213// リソース ヘッダ(アイコン、カーソル用)
214typedef struct{
215 WORD idReserved;
216 WORD idType;
217 WORD idCount;
218}ICONDIR,CURSORDIR;
219
220////////////////////////////
221//.icoファイルのヘッダ情報
222struct ICONDIRENTRY{
223 BYTE bWidth;
224 BYTE bHeight;
225 BYTE bColorCount;
226 BYTE bReserved;
227 WORD wPlanes;
228 WORD wBitCount;
229 DWORD dwBytesInRes;
230 DWORD dwImageOffset;
231};
232
233
234/////////////////////
235//MDIウィンドウ情報
236
237#define MAX_UNDONUM 300//512未完成
238#define MAX_ICONEDIT_UNDONUM 32
239
240#define TEXTEDIT_UNDO_KEY 1
241#define TEXTEDIT_UNDO_PASTE 2
242#define TEXTEDIT_UNDO_SELKEY 3
243struct TEXTEDIT_UNDOSTATE{
244 int NowPos;
245 int Command[MAX_UNDONUM];
246 char *KeyStr[MAX_UNDONUM];
247 char *DelStr[MAX_UNDONUM];
248 CHARRANGE Range[MAX_UNDONUM];
249 CHARRANGE DelRange[MAX_UNDONUM];
250};
251
252struct RAD_UNDOSTATE_NAME{
253 std::string name;
254};
255#define RAD_UNDO_INSERTWND 1
256#define RAD_UNDO_DELETEWND 2
257#define RAD_UNDO_INSERTITEM 3
258#define RAD_UNDO_DELETEITEM 4
259#define RAD_UNDO_NAME 5
260#define RAD_UNDO_CAPTION 6
261#define RAD_UNDO_FONT 7
262#define RAD_UNDO_BGCOLOR 8
263#define RAD_UNDO_WINDOWMENU 9
264#define RAD_UNDO_ICONRES 10
265#define RAD_UNDO_STYLE 11
266#define RAD_UNDO_EXSTYLE 12
267#define RAD_UNDO_POSITION 13
268#define RAD_UNDO_IMAGESTATE 14
269#define RAD_UNDO_TYPE 15
270struct RAD_UNDOSTATE{
271 int NowPos;
272 int Command[MAX_UNDONUM];
273 int SelectItemNum[MAX_UNDONUM];
274 DWORD lpdwData[MAX_UNDONUM];
275};
276
277#define MAX_RAD_SELITEM 255
278struct MDIRADINFO{
279 //Radツール用
280
281 HWND hTools;
282
283 HWND hProperty;
284 HWND hProp_Dlg;
285
286 HWND hSupport;
287
288 HWND hRad;
289
290 HBITMAP hBitmap;
291 HBITMAP hOldBitmap;
292 HDC hMemDC;
293 int SelectingItem[MAX_RAD_SELITEM];
294 int ButtonSelect;
295
296 //ウィンドウクライアント領域
297 POINT ClientPos;
298 SIZE ClientSize;
299
300 //変更情報
301 RAD_UNDOSTATE undo;
302};
303
304struct MDIMENUINFO{
305 HWND hList;
306 HWND hMenuEdit;
307 HWND hEdit_Dlg;
308};
309
310#define ICONTYPE_16_16 0
311#define ICONTYPE_16_256 1
312#define ICONTYPE_32_16 2
313#define ICONTYPE_32_256 3
314struct ICONEDIT_UNDOSTATE{
315 int NowPos;
316 BYTE *lpData[MAX_ICONEDIT_UNDONUM];
317};
318struct MDIICONEDITINFO{
319 HWND hMain;
320 HWND hToolDlg;
321 HWND hButtonsDlg;
322 HWND hColorDlg;
323
324 HDC memdc;
325 HBITMAP hMemBmp;
326
327 HBITMAP hSelectingBmp;
328 int SelectLevel;
329 RECT DraggingRect;
330
331 int num;
332 int SelectIconNum;
333 union{
334 BYTE *pIconImage[8]; //アイコンのイメージデータ配列(マップ配列、カラー配列、マスク配列)
335 BITMAPINFOHEADER *pBmpHdr[8];
336 };
337 DWORD dwBytesInRes[8];
338
339 DWORD NowTool;
340 COLORREF MainColor;
341 COLORREF SubColor;
342
343 ICONEDIT_UNDOSTATE undo[8];
344 BOOL bModify;
345};
346
347struct MDIINFO{
348 HWND hwnd;
349 int DocType;
350 std::string title;
351 std::string path;
352
353 union{
354 MDIRADINFO *MdiRadInfo;
355 MDIMENUINFO *MdiMenuInfo;
356 MDIICONEDITINFO *MdiIconEditInfo;
357 CMdiTextEdit *pMdiTextEdit;
358 };
359
360 char *IndentStr;
361};
362extern std::vector<MDIINFO *> MdiInfo;
363
364//RADツールのマウスドラッグ
365#define FRAME_CHANGEPOS_START 1 //----- ここから -----
366#define FRAME_UPPER_LEFT 1
367#define FRAME_UPPER_RIGHT 2
368#define FRAME_LOWER_LEFT 3
369#define FRAME_LOWER_RIGHT 4
370#define FRAME_LEFT 5
371#define FRAME_RIGHT 6
372#define FRAME_UPPER 7
373#define FRAME_LOWER 8
374#define FRAME_INSIDE 9
375#define FRAME_CHANGEPOS_END 9 //----- ここまで -----
376#define ITEM_MAKING 10
377#define SELECTING_FRAME 11
378
379//アイテムの大きさの限界値
380#define MIN_ITEM_X 12
381#define MIN_ITEM_Y 9
382
383//選択アイテム
384#define SELECT_WINDOW -1
385#define NON_TOOL -1
386
387struct RADINFO{
388 int NowDragging;
389 POINT DragStartPos;
390 RECT DragStartRect[MAX_RAD_SELITEM];
391 RECT DraggingRect[MAX_RAD_SELITEM];
392 RECT OldDraggingRect[MAX_RAD_SELITEM];
393};
394
395
396//////////////////
397//リソース情報
398extern HTREEITEM hCursorTreeItemForProjectView;
399extern HTREEITEM hBitmapTreeItemForProjectView;
400extern HTREEITEM hIconTreeItemForProjectView;
401
402
403////////////////////
404//プロジェクト情報
405
406#define PROJECT_VERSION 10
407
408class CFileInfo{
409 std::string filepath;
410public:
411 HTREEITEM m_hTreeItem;
412 CFileInfo( const std::string &filepath, HTREEITEM hTreeItem );
413
414 const std::string &GetPath() const
415 {
416 return filepath;
417 }
418
419 void GetFullPath(char *buffer);
420};
421class CDBFileInfo{
422public:
423 int iNum;
424 CFileInfo **ppobj_FileInfo;
425
426 CDBFileInfo();
427 ~CDBFileInfo();
428
429 void add(char *path,HTREEITEM hTreeItem);
430 void del(HTREEITEM hTreeItem);
431 const std::string &GetPath(HTREEITEM hTreeItem);
432 BOOL IsMainFile(HTREEITEM hTreeItem);
433
434 void SetTreeItem(int index,HTREEITEM hTreeItem);
435 void ResetTree(void);
436
437 BOOL dupli_check(char *path);
438};
439struct FILEINFO{
440 char *pPath;
441 HTREEITEM hTreeItem;
442};
443
444struct PROCINFO{
445 char *name;
446 int FileNum;
447 HTREEITEM hTreeItem;
448
449 int code_pos;
450};
451struct INCPROCINFO{
452 char *name;
453 char *Parms;
454 char *type;
455};
456
457//ダイアログアイテムの種類
458#define CT_BUTTON 1
459#define CT_CHECKBOX 2
460#define CT_COMBOBOX 3
461#define CT_EDIT 4
462#define CT_GROUPBOX 5
463#define CT_HSCROLLBAR 6
464#define CT_IMAGEBOX 7
465#define CT_LISTBOX 8
466#define CT_LISTVIEW 9
467#define CT_RADIOBUTTON 10
468#define CT_STATIC 11
469#define CT_TREEVIEW 12
470#define CT_VSCROLLBAR 13
471#define CT_UPDOWN 14
472#define CT_PROGRESSBAR 15
473#define CT_TRACKBAR 16
474#define CT_MENU 99
475
476//イベント タイプ
477#define EVENTTYPE_DEFAULT 0
478#define EVENTTYPE_MENU 1
479#define EVENTTYPE_MMSYS 2
480
481
482struct NEWPROJECTINFO{
483 char name[MAX_PATH];
484 DWORD dwTypeID;
485 _int8 ShowHelloWorld;
486 DWORD dwOption;
487};
488struct MENU_INFO{
489 char *IdName;
490 char *caption;
491 UINT type;
492 UINT state;
493
494 int NumberOfMenu;
495 MENU_INFO *pMenuInfo;
496
497 HTREEITEM hTreeItem;
498};
499#define MT_EXE 0 //EXEモジュールタイプ
500#define MT_DLL 1 //DLLモジュールタイプ
501#define MT_SLL 2 //SLLモジュールタイプ
502#define PJ_OP_SOURCE_MASK 0x00FFFFFF
503#define PJ_OP_MMSYSTEM 0x00000001
504#define PJ_OP_COMMCTRL 0x00000002
505#define PJ_OP_RICHEDIT 0x00000004
506#define PJ_OP_WINSOCK 0x00000008
507#define PJ_OP_STRICT 0x00010000 // #strictディレクティブは今は使われていない
508#define PJ_OP_RC_MANIFEST 0x00020000
509#define PJ_OP_UNICODE 0x00040000
510
511
512
513struct SAVEREBAR{
514 int RebarID;
515 int RebarLength;
516 int IsBandBreak;
517};
518
519struct ITEMEVENTINFO{
520 char *IdName;
521 char **pEventNames;
522 int ClassID;
523 int EventNum;
524};
525
526#define PARAMETER_HINT_MAX_SIZE 8192
527struct METHODCHECKINFO{
528 HWND hWnd;
529 LOGFONT LogFont;
530 HFONT hFont;
531 HFONT hBoldFont;
532 char BeforeMethodName[VN_SIZE];
533 char msg[PARAMETER_HINT_MAX_SIZE];
534 int ParmNum;
535 int HeadPos;
536};
537
538
539/////////////////////
540// コード補完機能
541/////////////////////
542
543#define ACCESS_NON 0
544#define ACCESS_PRIVATE 1
545#define ACCESS_PUBLIC 2
546#define ACCESS_PROTECTED 3
547#define ACCESS_PAIRCOMMAND 4
548#define ACCESS_HTML_GENERAL_PARAM 5
549#define ACCESS_HTML_PARAM 6
550struct MEMBERINFO{
551 //クラス名
552 char *pName;
553 DWORD dwProc;
554 DWORD dwAccess;
555
556 int code_pos;
557};
558struct COMPLEMENT_WINDOW_INFO{
559 HWND hWnd;
560 HWND hList;
561
562 int iPos;
563 int iLength;
564
565 MEMBERINFO *pMemberInfo;
566 int MemberNum;
567
568 //ペアステートメントのインデント格納用
569 char szIndent[255];
570};
571
572
573
574class CSettingFile{
575 BOOL GetDataLine(const char *name,char *parms);
576protected:
577 char *buffer;
578
579 BOOL GetWholeValue(const char *name,int *pi32data);
580 bool GetBoolean( const char *name,bool &b );
581 BOOL Get3WholeValue(char *name,int *pd1,int *pd2,int *pd3);
582 BOOL GetRGBValue(char *name,COLORREF *prgb);
583 BOOL GetStringValue(char *name,char *str);
584 BOOL GetRectValue(char *name,RECT *prc);
585 BOOL GetLogFont(char *name,LOGFONT *plf);
586 BOOL GetRebarBand(SAVEREBAR *psr,int num);
587
588 void SetWholeValue( const char *name,long i32data);
589 void SetBoolean( const char *name,bool b);
590 void Set3WholeValue(char *name,long d1,long d2,long d3);
591 void SetRGBValue(char *name,COLORREF rgb);
592 void SetStringValue(char *name,char *str);
593 void SetRectValue(char *name,RECT *prc);
594 void SetLogFont(char *name,LOGFONT *plf);
595 void SetRebarBand(SAVEREBAR *psr,int num);
596};
597#include "DesignTheme.h"
598
599
600
601//ProjectEditor.cpp
602void HeapDefaultFree(LPVOID lpMem);
603void ToBigChar(char str[]);
604int GetWndNum(HWND hChild);
605int GetNowWndNum(void);
606int GetFileNum(int WndNum);
607void SendTextEditResizeEvent(HWND hwnd);
608void RedrawAllWindow(void);
609int DocumentModifyCheck(HWND hChild);
610void SetStatusText(char *MenuText);
611void ResetState_UndoMenu(void);
612void ResetState_EditMenu(void);
613void ResetState_DocMenu(void);
614void DuplicateTitleCheck(char *lpszTitle);
615HWND NewTextEditWindow(char *filepath,_int8 DocumentType,COLORREF TabColor=TABCOLOR_GRAY);
616void CloseDocWindow(int WndNum);
617void ResizeTextEditWnd(HWND hwnd,int cx,int cy);
618#define FLAG_DBLCLK 1
619#define FLAG_BEAMCURSOR 2
620int RegWndClass(WNDPROC WndProc,char *lpClassName,HBRUSH hBackBrush,DWORD dwFlag);
621
622//Backup.cpp
623void CreateBackupDir(void);
624void backup(void *dummy);
625BOOL restore(void);
626
627//DialogBoxes.cpp
628void SetPosCenter(HWND hParent,HWND hwnd);
629void SetPosCenter(HWND hwnd);
630BOOL SetFontDialog(HWND hwnd,LOGFONT *lf,BOOL bFixedPitchOnly,int *lpiPointSize=0);
631void DlgNewProjectWizard(HWND hwnd);
632BOOL CALLBACK DlgNewFile(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
633void DlgProjectOptionSetting(HWND hwnd);
634void DlgOptionSetting(HWND hwnd);
635BOOL CALLBACK DialogAbout(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
636
637//FileOperation.cpp
638void MakeUserSettingDir(void);
639char *ReadBuffer( const std::string &path );
640char *ReadBuffer_NonErrMsg( const std::string &path );
641_int8 WriteBuffer(const std::string &path,const char *buffer,int length, bool isEnableError = true);
642_int8 WriteBuffer_NonErrMsg(const std::string &path,char *buffer,int length);
643void GetRelationalPath(char *path,char *dir);
644void GetFullPath(char *path,const char *dir);
645void RemoveDirectoryStrong(const char *dirPath);
646BOOL GetFilePathDialog(HWND hwnd,char *filename,LPSTR Filter,LPSTR Title,_int8 IsOpen);
647BOOL GetFolder(HWND hWnd,char *folder,char *OpenFolderTitle);
648int GetFileExtension( const char *path );
649HWND OpenFileWithExtension( const std::string &filePath );
650BOOL SaveDocument(HWND hChild,char *SaveFileName);
651BOOL ShortPathToLongPath(char ShortPath[MAX_PATH],char *LongPath);
652bool IsExistFile( const char *FilePath );
653bool IsExistDirectory( const char *DirPath );
654
655//rebar.cpp
656#define MAX_BAND 255
657typedef HWND (*AddBandProc)(HWND hRebar,int num,char *lpszText);
658class CDBRebarBand{
659 int BandId[MAX_BAND];
660 AddBandProc pAddProc[MAX_BAND];
661 int iMaxBandNum;
662public:
663 HWND hRebar;
664 CDBRebarBand();
665 ~CDBRebarBand();
666 void add(int band_id,AddBandProc add_proc);
667 HWND call_add(int band_id,int num,char *lpszText);
668};
669class CMainRebar{
670 CDBRebarBand *pobj_DBRebarBand;
671
672 void SetupRebar(HWND hwnd);
673public:
674 HWND hParent;
675 HWND hRebar;
676
677 CMainRebar(HWND hwnd_parent);
678 ~CMainRebar();
679
680 void ResetInitRebar();
681 void ResetRebar();
682 void SaveRebarState(void);
683 void ChangeRebarBand(int BandID);
684 void menu_popup(HWND hwnd,int PosX,int PosY);
685};
686extern CMainRebar *pobj_Rebar;
687void ResetRebarData(void);
688LRESULT CALLBACK DefaultToolbarProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
689LRESULT CALLBACK DocComboProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
690LRESULT CALLBACK DebuggerToolbarProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
691
692//SubOperation.cpp
693void ScreenToClient(HWND hwnd,RECT *pRect);
694void ClientToScreen(HWND hwnd,RECT *pRect);
695BOOL IsWow64(void);
696void URLEncode(LPSTR pszSrc);
697void Digit(int num,char *buffer);
698void RectNaturalFormat(RECT *ReadRect,RECT *CopyRect);
699void RectNaturalFormat(int *x1,int *y1,int *x2,int *y2);
700void KillSpaces(char *str1,char *str2);
701void RemoveStringQuotes(char *str);
702void SlideString(char *str,int slide);
703void SlideBuffer(char *buffer,int length,int slide);
704BOOL IsVariableTopChar(char c);
705BOOL IsVariableChar(char c);
706BOOL IsCommandBackDelimitation(char *buffer,int pos);
707BOOL IsCommandDelimitation(char *buffer,int p);
708char *ComparisonString( char *str1, char *str2, bool isBigSmall, bool isWordUnit );
709int GetOneParameter(char *Parameter,int pos,char *retAns);
710int GetStringInPare(char *buffer,char *ReadBuffer);
711int GetStringInBracket(char *buffer,char *ReadBuffer);
712void JumpBlank(char *pBuf,int *piPos);
713BOOL CheckParenthesis(char *buffer);
714DWORD GetValue(char *value);
715BOOL IsManagementCommand(int ComNum);
716int IsBasicReservedWord(char *str);
717HBITMAP CreateGradationBitmap(SIZE *pSize,COLORREF color1,COLORREF color2);
718HBITMAP CreateVertGradationBitmap(SIZE *pSize,COLORREF color1,COLORREF color2);
719HBITMAP CreateHorzGradationBitmap(SIZE *pSize,COLORREF color1,COLORREF color2);
720HICON CreateGrayIcon(HICON hBaseIcon);
721void GetSize(SIZE *pSize,RECT *pRect);
722BOOL HitTest(RECT *pRect,POINT *pPos);
723BOOL Rectangle(HDC hdc,RECT *pRect);
724void ComboBox_SetSelText(HWND hCombo,char *lpszText);
725void SetCursorByState(int state);
726void SetTextEditColorDesign(TEXTEDIT_COLOR_INFO *pColorInfo,CTheme *pobj_Theme,BOOL bRedraw);
727BOOL SetupProjectEditor(void);
728void EndProjectEditor(void);
729BOOL SetRunning(HWND hChild);
730BOOL IsNeedCompile( const std::string &filepath, BOOL bDebug );
731std::string GetLastErrorString();
732
733//DocumentAdvice.cpp
734void MenuAdvice(WPARAM msg);
735void ShowToolTipText(LPTOOLTIPTEXT TipText);
736char *IncludeFiles(char *buffer);
737void AddParameterHints_ToProject(char *path);
738
739
740
741/////////////////////
742// テキスト エディタ
743/////////////////////
744
745#define CONTROL_TAB_SPACE_DEFAULT 10 //エディタ画面左端のコントロールタブ(通常)
746
747//DrawBuffer.cpp
748void TextEdit_DrawBuffer(HDC hdc,int WndNum);
749
750//TextEditor.cpp
751int GetControlTabSpace(int WndNum,int *piCount=0);
752void ResetTextEditFont(HWND hwnd);
753void SetTextEditWordColor(int WndNum);
754BOOL IsHiragana(char *pBuf);
755BOOL IsAlphabet(char c);
756BOOL IsReturnCode(char *pBuf);
757void ResetScrollbar(int WndNum,int max_x,int max_y);
758#define WORDCARET_BEFORE 1
759#define WORDCARET_AFTER 2
760void TextEdit_GetWordCaret(HWND hwnd,int WndNum,POINT *pPos,int *piStart,int *piEnd,BOOL bBeforeAfterFlag);
761void CancelBeforeAutoIndent(int WndNum);
762LRESULT CALLBACK TextEditProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
763
764//Caret.cpp
765BOOL IsRightTurn(char *pBuf,int i,int now_x);
766int GetBufferIndexFromCaretPos(char *pBuf,int now_x,int now_y);
767void GetCaretPosFromBufferIndex(char *pBuf,int index,POINT *pCaretPos);
768void TextEdit_GetSel(int WndNum,CHARRANGE *pCharRange);
769void TextEdit_GetSelText(int WndNum,CHARRANGE *pCharRange,char *buffer);
770void GetScrollBaseCaretPos(int WndNum,int *pNaturalBaseX,int *pNaturalBaseY);
771void GetNaturalBaseCaretPos(int WndNum,int *pScrollBaseX,int *pScrollBaseY);
772void TextEdit_SetSel(int WndNum,int StartIndex,int EndIndex,BOOL bShowCenter=0);
773void TextEdit_SelectOneLine(int WndNum,int code_pos,BOOL bShowCenter=0);
774void ResetCaretPos(int WndNum,BOOL bInputAndReset=0);
775BOOL TextEdit_ScrollCaret(int WndNum,BOOL bScrollOneStep_x,BOOL bShowCenter=0);
776void CaretPos_LooseToNatural(int WndNum,int loose_x,int loose_y,POINT *pCaretPos);
777void GetNaturalCaretPos_Click(int WndNum,int mouse_x,int mouse_y,POINT *pCaretPos);
778void GetNaturalCaretPos_Left(int WndNum);
779void GetNaturalCaretPos_Right(int WndNum,POINT *pCaretPos);
780void GetNaturalCaretPos_Up(int WndNum,POINT *pCaretPos);
781void GetNaturalCaretPos_Down(int WndNum,POINT *pCaretPos);
782void GetNaturalCaretPos_PageUp(int WndNum,POINT *pCaretPos);
783void GetNaturalCaretPos_PageDown(int WndNum,POINT *pCaretPos);
784
785//Replace.cpp
786void TextEdit_Replace(int WndNum,char *str,BOOL bRedraw);
787void TextEdit_ReplaceUpdateUndoData(int WndNum,char *str,BOOL bPaste,BOOL bRedraw);
788void TextEdit_Convert(int id);
789
790//TextEditor_UndoRedo.cpp
791void TextEdit_UndoCommand(int WndNum);
792void TextEdit_RedoCommand(int WndNum);
793void TextEdit_NoticeChanging(int WndNum,int Command,char *KeyStr,char *DelStr,CHARRANGE *Range,CHARRANGE *DelRange);
794void TextEdit_DeleteUndoData(TEXTEDIT_UNDOSTATE *pUndoState,int pos);
795
796//Search.cpp
797void AddFindData(HWND hwnd,char ppData[MAX_FINDLIST][MAX_PATH],char *str);
798BOOL CALLBACK DlgFind(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
799BOOL CALLBACK DlgPermutation(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
800
801//analysis.cpp
802BOOL GetVarFormatString(char *buffer,char *array,char *array2,char *NestMember,int *pRefType);
803BOOL CheckReferType(char *ClassName,BOOL bArray,char *VarArray,int VarRefType);
804void GetOriginalClassName(char *ClassName);
805int GetClassPos(char *pBuf,char *ClassName,DWORD *pdwClassType);
806BOOL GetClassNameFromClassMember(char *pBuf,int iPos,char *VarName,char *ClassName,BOOL *pbArray);
807void GetCodeAreaType(char *pBuf,int iPos,int *piProcPos,char *NowClass);
808BOOL GetVariableClassName(char *pEditBuf,int iPos,char *VarName,char *ClassName,BOOL *pbArray);
809
810//EndPairCommandComplement.cpp
811BOOL GetEndPairCommandInfo(char *buffer,int p);
812BOOL IsNeedNewIndentCommand(char *name);
813void GetWithObjectVariable(char *buffer,int p,char *pObjectVar);
814
815//Complement.cpp
816void DeleteComplementInfo(void);
817BOOL GetComplementInfo(char *variable,char *pEditBuf,int iPos);
818void CodeComplement(int WndNum,int iPos);
819LRESULT CALLBACK ComplementWindow(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
820
821//ParameterHint.cpp
822char *GetUserSourceCode(void);
823void ChangeReturnCode(char *buffer);
824void DeleteComment(char *buffer);
825LRESULT CALLBACK MethodCheckWindow(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
826void ShowParameterHint(int WndNum);
827
828//CodeFormatter.cpp
829char *CodeFormatter(char *lpszReadBuffer);
830
831#ifdef THETEXT
832//StringCount.cpp
833BOOL CALLBACK DlgStringCount(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
834#endif
835
836//Print.cpp
837class CPage{
838public:
839 PAGESETUPDLG psd;
840 CPage();
841 ~CPage();
842
843 BOOL SetupDlg(void);
844};
845extern CPage obj_Page;
846LRESULT CALLBACK PreviewWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
847void Preview(void);
848void Printout(void);
849
850//History.cpp
851#define IS_FILEHISTORY_COMMAND(a) (100<=a&&a<=199)
852class CHistory{
853 int iNum;
854 int iMaxHistoryNum;
855
856 int m_BaseID;
857public:
858 char *lpszPath[255];
859
860 CHistory(int BaseID);
861 ~CHistory();
862
863 void load(char *path);
864 void save(char *path);
865
866 void add(char *path);
867 void insert(const char *path);
868
869 void ResetFileMenu(CSubMenuEx *pobj_SubMenu,BOOL bOwnerDraw);
870};
871
872
873
874
875//////////////////////
876/* プロジェクト解析 */
877
878//CClassInfo.cpp
879class CClassInfo{
880public:
881 char ClassName[VN_SIZE];
882 MEMBERINFO *pMemberInfo;
883 int MemberNum;
884 CClassInfo();
885 ~CClassInfo();
886 int Analyze(char *pBuf,int *p);
887};
888
889//ClassTree.cpp
890struct TREEHASH{
891 HTREEITEM hItem;
892 int iFileNum;
893 TREEHASH *pNextData;
894};
895#define CTV_ROOT 1 //ルート
896#define CTV_FOLDER 2 //フォルダ
897#define CTV_GLOBAL_PROC 3 //プロシージャ
898#define CTV_CLASS 4 //クラス
899#define CTV_PUBLIC_MEMBER 5 //公開cメンバ変数
900#define CTV_PUBLIC_METHOD 6 //公開メソッド
901#define CTV_PRIVATE_MEMBER 7 //非公開メンバ変数
902#define CTV_PRIVATE_METHOD 8 //非公開メソッド
903class CClassTreeView{
904 HWND hTreeWnd;
905 int iNowFile;
906 TREEHASH tree_data[MAX_HASH];
907
908 HTREEITEM hGlobalProcedureFolder;
909 HTREEITEM hNowClassFolder;
910
911 int hash_default(LONG_PTR lpdata);
912
913 void AddValidItem(HTREEITEM hItem,int iFileNum);
914 BOOL delete_check(HTREEITEM hItem);
915 void DeleteInvalidItems(HTREEITEM hItem);
916 void DeleteTreeHash(TREEHASH *pth);
917
918 HTREEITEM insert(HTREEITEM hParentItem,int flag,char *lpszName,int iFileNum);
919
920public:
921 HTREEITEM hRootFolder;
922
923 int NumberOfProcedures;
924 PROCINFO *pProcInfo;
925
926 BOOL bCloseSwitch;
927 BOOL bShowSwitch;
928
929 CClassTreeView();
930 ~CClassTreeView();
931 void init(HWND hwnd,int iFileNum);
932
933 void InsertRootFolder(void);
934 void InsertGlobalProcedureFolder(void);
935 HTREEITEM InsertGlobalProcedure(int flag,char *lpszName,int iFileNum);
936 HTREEITEM insert_code_item(HTREEITEM hParentItem,int flag,char *lpszName,int iFileNum,char *pBuf,int p);
937 void InsertClassFolder(char *lpszName,int iFileNum,char *pBuf,int p);
938 void InsertClassMember(int flag,char *lpszName,int iFileNum,char *pBuf,int p);
939 void finish();
940};
941extern CClassTreeView *pobj_ClassTreeView;
942void ResetClassTree(int iFileNum);
943
944//ProjectControl.cpp
945void ResizeProjectView_ToolWindow(void);
946LRESULT CALLBACK ProjectView_ToolWindowProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
947void ShowFileView();
948void ShowClassView();
949void ShowMaterialView();
950LRESULT CALLBACK ProjectViewProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
951void Project_File_Insert(char *path);
952void Project_File_Delete(HTREEITEM hTreeItem);
953void MakeNewProject(void);
954BOOL ProjectModifyCheck(BOOL bRun);
955void MakeWorkFile(void);
956void SaveProject(void);
957BOOL SetProjectToRun(void);
958BOOL IsNeedCompileForProject(BOOL bDebug);
959
960//WindowControl.cpp
961int GetWndInfoNum( const std::string &name );
962ActiveBasic::PM::WindowInfo *GetWndInfo( const std::string &name );
963HGLOBAL Rad_GetChildInfoClipboardData(int WndNum,int WndInfoNum);
964void Rad_PasteChildInfoClipboardData(int WndNum,HGLOBAL hGlobal);
965char *PermutationWndPgmTemplate(char *pBuf,const char *pPjName, char *pWndName, char *pHandleName, char *pProcName);
966const std::string PermutationWndPgmTemplate( const std::string &templateFilePath, const std::string &projectName, std::string &windowName, std::string &handleName, std::string &procName );
967void GetItemClassName(char *buffer,int Control);
968void SaveWindowProgram();
969void SaveWindowFile( char *path, const ActiveBasic::PM::WindowInfos &windowInfos );
970_int8 OpenWindowFile(char *path);
971void GetDefaultWindowFont(LOGFONT *LogFont);
972void Project_Window_Insert(void);
973void Project_Window_Delete(int WndInfoNum);
974
975//Resource.cpp
976void Project_CursorResInsert(void);
977void Project_Cursor_Delete(int CursorInfoNum);
978void Project_Cursor_RenameID(int CursorInfoNum);
979void Project_BitmapResInsert(void);
980void Project_Bitmap_Delete(int IconInfoNum);
981void Project_Bitmap_RenameID(int BitmapInfoNum);
982void Project_IconResInsert(void);
983void Project_Icon_Delete(int IconInfoNum);
984void Project_Icon_RenameID(int IconInfoNum);
985BOOL CALLBACK DlgProject_ResourceID_Input(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
986
987
988
989///////////////////
990/* RADウィンドウ */
991
992//RadProc.cpp
993void NewRadWindow( const ActiveBasic::PM::WindowInfo &windowInfo );
994int 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);
995void DeleteDlgItem(int WndNum,int WndInfoNum,int ItemNum,BOOL bNoticeChanging);
996void CursorPos_GlobalToLocal(HWND hwnd,long *x,long *y);
997void DrawSelectingRect(HWND hwnd,int WndNum,int WndInfoNum,int ButtonSelect);
998void ChangePropertyWindow(int WndNum,int WndInfoNum);
999void ResetScrollbarOfRadEditor(int WndNum,int weight,int height);
1000LRESULT CALLBACK RadWindow(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1001void ResizeToRadToolWindows(int WndNum,int weight,int height);
1002LRESULT CALLBACK MDIClientWindow_Rad(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1003
1004//DrawWindow.cpp
1005void DrawRadWindow(int WndNum,const ActiveBasic::PM::WindowInfo *pWindowInfo);
1006
1007//Rad_UndoRedo.cpp
1008void Rad_UndoCommand(int WndNum);
1009void Rad_RedoCommand(int WndNum);
1010void Rad_DeleteUndoData(int WndNum,int pos);
1011void Rad_NoticeChanging(int WndNum,int Command,int SelectItemNum,DWORD dwData);
1012
1013//RadToolsAndPropertyProc.cpp
1014LRESULT CALLBACK RadToolsWindow(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1015BOOL CALLBACK RadProperty_WindowProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1016BOOL CALLBACK DlgRadProperty_Item_RenameCaption(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1017BOOL CALLBACK RadProperty_ButtonProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1018BOOL CALLBACK RadProperty_CheckBoxProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1019BOOL CALLBACK RadProperty_ComboBoxProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1020BOOL CALLBACK RadProperty_EditProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1021BOOL CALLBACK RadProperty_GroupBoxProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1022BOOL CALLBACK RadProperty_ImageBoxProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1023BOOL CALLBACK RadProperty_ListBoxProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1024BOOL CALLBACK RadProperty_ListViewProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1025BOOL CALLBACK RadProperty_ProgressBarProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1026BOOL CALLBACK RadProperty_RadioButtonProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1027BOOL CALLBACK RadProperty_ScrollBarProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1028BOOL CALLBACK RadProperty_StaticProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1029BOOL CALLBACK RadProperty_TrackBarProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1030BOOL CALLBACK RadProperty_TreeViewProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1031BOOL CALLBACK RadProperty_UpDownProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1032LRESULT CALLBACK RadPropertyWindow(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1033
1034//MessageCallOperation.cpp
1035char **GetProcedureNamesOfMessageCall(int WndInfoNum,ITEMEVENTINFO **ppItemEventInfo,int *num,BOOL *pbAlways);
1036void SelectProcedureOfMessageCall(int WndInfoNum,char *ProcedureName,char *Parameter);
1037BOOL CALLBACK DlgEventCode(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1038
1039//RadSupport.cpp
1040LRESULT CALLBACK TestWindowProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1041void SetSupportDlgData(int WndNum, const ActiveBasic::PM::WindowInfo &windowInfo );
1042BOOL CALLBACK DlgRadSupport(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1043
1044
1045
1046////////////////////
1047/* MENUウィンドウ */
1048
1049//MenuProc.cpp
1050int GetMenuInfoNum(const std::string &name);
1051void HeapMenuDataFree(MENU_INFO *pMenuInfo,int ItemNum,int *NumberOfFreedItem);
1052BOOL CALLBACK DlgProject_MenuID_Input(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1053void Project_Menu_Insert(void);
1054void Project_Menu_Delete(int MenuInfoNum);
1055void NewMenuWindow(MENU_INFO *pMenuInfo);
1056BOOL CALLBACK MenuEditDlg(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1057LRESULT CALLBACK MenuEditWindow(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1058LRESULT CALLBACK MDIClientWindow_Menu(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1059
1060
1061
1062//////////////////////////////////
1063/* アイコン エディタ ウィンドウ */
1064
1065//IconEditor.cpp
1066void AddIconType(int WndNum,int IconType);
1067void DeleteIconType(int WndNum);
1068void NewIconEditWindow(const char *filepath);
1069void SaveIconFile(char *filepath,HWND hwnd);
1070LRESULT CALLBACK MDIClientWindow_IconEdit(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1071
1072//IconEditor_Main.cpp
1073HGLOBAL IconEdit_GetChildInfoClipboardData(int WndNum);
1074void IconEdit_PasteChildInfoClipboardData(int WndNum,HBITMAP hBmp);
1075void IconEdit_PasteImage(int WndNum);
1076void DrawIconToMemBmp(int WndNum,RECT *pRect);
1077void IconEdit_EraseRect(int WndNum,RECT *pRect);
1078LRESULT CALLBACK IconEditWindowProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1079
1080//IconEditor_Tool.cpp
1081BOOL CALLBACK DlgIconButtons(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1082BOOL CALLBACK DlgIconToolProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1083
1084//IconEditor_Color.cpp
1085BOOL CALLBACK DlgIconColorProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1086
1087//IconEditor_UndoRedo.cpp
1088void IconEdit_UndoCommand(int WndNum);
1089void IconEdit_RedoCommand(int WndNum);
1090void IconEdit_NoticeChanging(int WndNum);
1091
1092
1093
1094
1095
1096#include "NonVolatile.h"
1097
1098
1099
1100
1101#ifdef _DEBUG
1102/*Debug*/
1103
1104#define HeapAlloc CheckHeapAlloc
1105#define HeapReAlloc CheckHeapReAlloc
1106LPVOID CheckHeapAlloc(HANDLE hHeap,DWORD dwFlags,DWORD dwBytes);
1107LPVOID CheckHeapReAlloc(HANDLE hHeap,DWORD dwFlags,LPVOID lpMem,DWORD dwBytes);
1108
1109#define DeleteObject CheckDeleteObject
1110BOOL CheckDeleteObject(HGDIOBJ hObject);
1111
1112#endif
Note: See TracBrowser for help on using the repository browser.