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

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

MdiInfoをリファクタリング

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