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

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

"extern PROJECTINFO ProjectInfo;" をすべて除去した。
PROJECTINFO構造体の定義位置を移動した。

File size: 32.8 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 char *name;
260 char *HandleName;
261 char *CallBackName;
262};
263#define RAD_UNDO_INSERTWND 1
264#define RAD_UNDO_DELETEWND 2
265#define RAD_UNDO_INSERTITEM 3
266#define RAD_UNDO_DELETEITEM 4
267#define RAD_UNDO_NAME 5
268#define RAD_UNDO_CAPTION 6
269#define RAD_UNDO_FONT 7
270#define RAD_UNDO_BGCOLOR 8
271#define RAD_UNDO_WINDOWMENU 9
272#define RAD_UNDO_ICONRES 10
273#define RAD_UNDO_STYLE 11
274#define RAD_UNDO_EXSTYLE 12
275#define RAD_UNDO_POSITION 13
276#define RAD_UNDO_IMAGESTATE 14
277#define RAD_UNDO_TYPE 15
278struct RAD_UNDOSTATE{
279 int NowPos;
280 int Command[MAX_UNDONUM];
281 int SelectItemNum[MAX_UNDONUM];
282 DWORD lpdwData[MAX_UNDONUM];
283};
284
285#define MAX_RAD_SELITEM 255
286struct MDIRADINFO{
287 //Radツール用
288
289 HWND hTools;
290
291 HWND hProperty;
292 HWND hProp_Dlg;
293
294 HWND hSupport;
295
296 HWND hRad;
297
298 HBITMAP hBitmap;
299 HBITMAP hOldBitmap;
300 HDC hMemDC;
301 int SelectingItem[MAX_RAD_SELITEM];
302 int ButtonSelect;
303
304 //ウィンドウクライアント領域
305 POINT ClientPos;
306 SIZE ClientSize;
307
308 //変更情報
309 RAD_UNDOSTATE undo;
310};
311
312struct MDIMENUINFO{
313 HWND hList;
314 HWND hMenuEdit;
315 HWND hEdit_Dlg;
316};
317
318#define ICONTYPE_16_16 0
319#define ICONTYPE_16_256 1
320#define ICONTYPE_32_16 2
321#define ICONTYPE_32_256 3
322struct ICONEDIT_UNDOSTATE{
323 int NowPos;
324 BYTE *lpData[MAX_ICONEDIT_UNDONUM];
325};
326struct MDIICONEDITINFO{
327 HWND hMain;
328 HWND hToolDlg;
329 HWND hButtonsDlg;
330 HWND hColorDlg;
331
332 HDC memdc;
333 HBITMAP hMemBmp;
334
335 HBITMAP hSelectingBmp;
336 int SelectLevel;
337 RECT DraggingRect;
338
339 int num;
340 int SelectIconNum;
341 union{
342 BYTE *pIconImage[8]; //アイコンのイメージデータ配列(マップ配列、カラー配列、マスク配列)
343 BITMAPINFOHEADER *pBmpHdr[8];
344 };
345 DWORD dwBytesInRes[8];
346
347 DWORD NowTool;
348 COLORREF MainColor;
349 COLORREF SubColor;
350
351 ICONEDIT_UNDOSTATE undo[8];
352 BOOL bModify;
353};
354
355struct MDIINFO{
356 HWND hwnd;
357 int DocType;
358 char *title;
359 char *path;
360
361 union{
362 MDIRADINFO *MdiRadInfo;
363 MDIMENUINFO *MdiMenuInfo;
364 MDIICONEDITINFO *MdiIconEditInfo;
365 CMdiTextEdit *pMdiTextEdit;
366 };
367
368 char *IndentStr;
369};
370extern MDIINFO MdiInfo[MAX_WNDNUM];
371
372//RADツールのマウスドラッグ
373#define FRAME_CHANGEPOS_START 1 //----- ここから -----
374#define FRAME_UPPER_LEFT 1
375#define FRAME_UPPER_RIGHT 2
376#define FRAME_LOWER_LEFT 3
377#define FRAME_LOWER_RIGHT 4
378#define FRAME_LEFT 5
379#define FRAME_RIGHT 6
380#define FRAME_UPPER 7
381#define FRAME_LOWER 8
382#define FRAME_INSIDE 9
383#define FRAME_CHANGEPOS_END 9 //----- ここまで -----
384#define ITEM_MAKING 10
385#define SELECTING_FRAME 11
386
387//アイテムの大きさの限界値
388#define MIN_ITEM_X 12
389#define MIN_ITEM_Y 9
390
391//選択アイテム
392#define SELECT_WINDOW -1
393#define NON_TOOL -1
394
395struct RADINFO{
396 int NowDragging;
397 POINT DragStartPos;
398 RECT DragStartRect[MAX_RAD_SELITEM];
399 RECT DraggingRect[MAX_RAD_SELITEM];
400 RECT OldDraggingRect[MAX_RAD_SELITEM];
401};
402
403
404//////////////////
405//リソース情報
406struct RESITEMINFO{
407 char *IdName;
408 char *path;
409
410 HTREEITEM hTreeItem;
411};
412struct RESOURCEINFO{
413 int NumberOfCursorRes;
414 RESITEMINFO *pCursorResInfo;
415 HTREEITEM hCursorTreeItem;
416
417 int NumberOfBitmapRes;
418 RESITEMINFO *pBitmapResInfo;
419 HTREEITEM hBitmapTreeItem;
420
421 int NumberOfIconRes;
422 RESITEMINFO *pIconResInfo;
423 HTREEITEM hIconTreeItem;
424};
425
426
427////////////////////
428//プロジェクト情報
429
430#define PROJECT_VERSION 10
431
432class CFileInfo{
433public:
434 char *m_path;
435 HTREEITEM m_hTreeItem;
436 CFileInfo(char *path,HTREEITEM hTreeItem);
437 ~CFileInfo();
438
439 void GetFullPath(char *buffer);
440};
441class CDBFileInfo{
442public:
443 int iNum;
444 CFileInfo **ppobj_FileInfo;
445
446 CDBFileInfo();
447 ~CDBFileInfo();
448
449 void add(char *path,HTREEITEM hTreeItem);
450 void del(HTREEITEM hTreeItem);
451 char *GetPath(HTREEITEM hTreeItem);
452 BOOL IsMainFile(HTREEITEM hTreeItem);
453
454 void SetTreeItem(int index,HTREEITEM hTreeItem);
455 void ResetTree(void);
456
457 BOOL dupli_check(char *path);
458};
459struct FILEINFO{
460 char *pPath;
461 HTREEITEM hTreeItem;
462};
463
464struct PROCINFO{
465 char *name;
466 int FileNum;
467 HTREEITEM hTreeItem;
468
469 int code_pos;
470};
471struct INCPROCINFO{
472 char *name;
473 char *Parms;
474 char *type;
475};
476
477//ダイアログアイテムの種類
478#define CT_BUTTON 1
479#define CT_CHECKBOX 2
480#define CT_COMBOBOX 3
481#define CT_EDIT 4
482#define CT_GROUPBOX 5
483#define CT_HSCROLLBAR 6
484#define CT_IMAGEBOX 7
485#define CT_LISTBOX 8
486#define CT_LISTVIEW 9
487#define CT_RADIOBUTTON 10
488#define CT_STATIC 11
489#define CT_TREEVIEW 12
490#define CT_VSCROLLBAR 13
491#define CT_UPDOWN 14
492#define CT_PROGRESSBAR 15
493#define CT_TRACKBAR 16
494#define CT_MENU 99
495
496//イベント タイプ
497#define EVENTTYPE_DEFAULT 0
498#define EVENTTYPE_MENU 1
499#define EVENTTYPE_MMSYS 2
500
501//ウィンドウ タイプ
502#define WNDTYPE_DEFAULT 0
503#define WNDTYPE_MODALDLG 1
504#define WNDTYPE_MODELESSDLG 3
505
506//イメージタイプ
507#define IMGTYPE_FILE 0
508#define IMGTYPE_RES 1
509
510struct IMAGECTRLINFO{
511 int type;
512 char *path;
513};
514struct CHILDINFO{
515 char *IdName;
516 POINT pos;
517 SIZE size;
518 char *caption;
519 DWORD style;
520 DWORD ExStyle;
521 int Control;
522
523 IMAGECTRLINFO ImageCtrlInfo;
524};
525struct WINDOW_INFO{
526 //ウィンドウデータ
527 char *name;
528 char *HandleName;
529 POINT pos;
530 SIZE size;
531 char *caption;
532 DWORD style;
533 DWORD ExStyle;
534 char *MenuID;
535 int id;
536 int bgColor;
537 LOGFONT LogFont;
538 char *IconResName;
539 char *ClassName;
540 char *CallBackName;
541 long type;
542 char *filepath;
543
544 //子ウィンドウ管理
545 int NumberOfChildWindows;
546 CHILDINFO *pChildInfo;
547
548 //ツリー項目
549 HTREEITEM hTreeItem;
550};
551struct NEWPROJECTINFO{
552 char name[MAX_PATH];
553 DWORD dwTypeID;
554 _int8 ShowHelloWorld;
555 DWORD dwOption;
556};
557struct MENU_INFO{
558 char *IdName;
559 char *caption;
560 UINT type;
561 UINT state;
562
563 int NumberOfMenu;
564 MENU_INFO *pMenuInfo;
565
566 HTREEITEM hTreeItem;
567};
568#define MT_EXE 0 //EXEモジュールタイプ
569#define MT_DLL 1 //DLLモジュールタイプ
570#define MT_SLL 2 //SLLモジュールタイプ
571#define PJ_OP_SOURCE_MASK 0x00FFFFFF
572#define PJ_OP_MMSYSTEM 0x00000001
573#define PJ_OP_COMMCTRL 0x00000002
574#define PJ_OP_RICHEDIT 0x00000004
575#define PJ_OP_WINSOCK 0x00000008
576#define PJ_OP_STRICT 0x00010000 // #strictディレクティブは今は使われていない
577#define PJ_OP_RC_MANIFEST 0x00020000
578#define PJ_OP_UNICODE 0x00040000
579
580
581
582struct SAVEREBAR{
583 int RebarID;
584 int RebarLength;
585 int IsBandBreak;
586};
587
588struct ITEMEVENTINFO{
589 char *IdName;
590 char **pEventNames;
591 int ClassID;
592 int EventNum;
593};
594
595#define PARAMETER_HINT_MAX_SIZE 8192
596struct METHODCHECKINFO{
597 HWND hWnd;
598 LOGFONT LogFont;
599 HFONT hFont;
600 HFONT hBoldFont;
601 char BeforeMethodName[VN_SIZE];
602 char msg[PARAMETER_HINT_MAX_SIZE];
603 int ParmNum;
604 int HeadPos;
605};
606
607
608/////////////////////
609// コード補完機能
610/////////////////////
611
612#define ACCESS_NON 0
613#define ACCESS_PRIVATE 1
614#define ACCESS_PUBLIC 2
615#define ACCESS_PROTECTED 3
616#define ACCESS_PAIRCOMMAND 4
617#define ACCESS_HTML_GENERAL_PARAM 5
618#define ACCESS_HTML_PARAM 6
619struct MEMBERINFO{
620 //クラス名
621 char *pName;
622 DWORD dwProc;
623 DWORD dwAccess;
624
625 int code_pos;
626};
627struct COMPLEMENT_WINDOW_INFO{
628 HWND hWnd;
629 HWND hList;
630
631 int iPos;
632 int iLength;
633
634 MEMBERINFO *pMemberInfo;
635 int MemberNum;
636
637 //ペアステートメントのインデント格納用
638 char szIndent[255];
639};
640
641
642
643class CSettingFile{
644 BOOL GetDataLine(const char *name,char *parms);
645protected:
646 char *buffer;
647
648 BOOL GetWholeValue(const char *name,int *pi32data);
649 bool GetBoolean( const char *name,bool &b );
650 BOOL Get3WholeValue(char *name,int *pd1,int *pd2,int *pd3);
651 BOOL GetRGBValue(char *name,COLORREF *prgb);
652 BOOL GetStringValue(char *name,char *str);
653 BOOL GetRectValue(char *name,RECT *prc);
654 BOOL GetLogFont(char *name,LOGFONT *plf);
655 BOOL GetRebarBand(SAVEREBAR *psr,int num);
656
657 void SetWholeValue( const char *name,long i32data);
658 void SetBoolean( const char *name,bool b);
659 void Set3WholeValue(char *name,long d1,long d2,long d3);
660 void SetRGBValue(char *name,COLORREF rgb);
661 void SetStringValue(char *name,char *str);
662 void SetRectValue(char *name,RECT *prc);
663 void SetLogFont(char *name,LOGFONT *plf);
664 void SetRebarBand(SAVEREBAR *psr,int num);
665};
666#include "DesignTheme.h"
667
668
669
670//ProjectEditor.cpp
671void HeapDefaultFree(LPVOID lpMem);
672void ToBigChar(char str[]);
673int GetWndNum(HWND hChild);
674int GetNowWndNum(void);
675int GetFileNum(int WndNum);
676void SendTextEditResizeEvent(HWND hwnd);
677void RedrawAllWindow(void);
678int DocumentModifyCheck(HWND hChild);
679void SetStatusText(char *MenuText);
680void ResetState_UndoMenu(void);
681void ResetState_EditMenu(void);
682void ResetState_DocMenu(void);
683void DuplicateTitleCheck(char *lpszTitle);
684HWND NewTextEditWindow(char *filepath,_int8 DocumentType,COLORREF TabColor=TABCOLOR_GRAY);
685void CloseDocWindow(int WndNum);
686void ResizeTextEditWnd(HWND hwnd,int cx,int cy);
687void ResizeOwnerWnd(void);
688#define FLAG_DBLCLK 1
689#define FLAG_BEAMCURSOR 2
690int RegWndClass(WNDPROC WndProc,char *lpClassName,HBRUSH hBackBrush,DWORD dwFlag);
691
692//Backup.cpp
693void CreateBackupDir(void);
694void backup(void *dummy);
695BOOL restore(void);
696
697//DialogBoxes.cpp
698void SetPosCenter(HWND hParent,HWND hwnd);
699void SetPosCenter(HWND hwnd);
700BOOL SetFontDialog(HWND hwnd,LOGFONT *lf,BOOL bFixedPitchOnly,int *lpiPointSize=0);
701void DlgNewProjectWizard(HWND hwnd);
702BOOL CALLBACK DlgNewFile(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
703void DlgProjectOptionSetting(HWND hwnd);
704void DlgOptionSetting(HWND hwnd);
705BOOL CALLBACK DialogAbout(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
706
707//FileOperation.cpp
708void MakeUserSettingDir(void);
709char *ReadBuffer( const std::string &path );
710char *ReadBuffer_NonErrMsg( const std::string &path );
711_int8 WriteBuffer(char *path,char *buffer,int length, bool isEnableError = true);
712_int8 WriteBuffer_NonErrMsg(char *path,char *buffer,int length);
713void GetRelationalPath(char *path,char *dir);
714void GetFullPath(char *path,char *dir);
715void RemoveDirectoryStrong(const char *dirPath);
716BOOL GetFilePathDialog(HWND hwnd,char *filename,LPSTR Filter,LPSTR Title,_int8 IsOpen);
717BOOL GetFolder(HWND hWnd,char *folder,char *OpenFolderTitle);
718int GetFileExtension(char *path);
719HWND OpenFileWithExtension(char *OpenFileName);
720BOOL SaveDocument(HWND hChild,char *SaveFileName);
721BOOL ShortPathToLongPath(char ShortPath[MAX_PATH],char *LongPath);
722bool IsExistFile( const char *FilePath );
723bool IsExistDirectory( const char *DirPath );
724
725//rebar.cpp
726#define MAX_BAND 255
727typedef HWND (*AddBandProc)(HWND hRebar,int num,char *lpszText);
728class CDBRebarBand{
729 int BandId[MAX_BAND];
730 AddBandProc pAddProc[MAX_BAND];
731 int iMaxBandNum;
732public:
733 HWND hRebar;
734 CDBRebarBand();
735 ~CDBRebarBand();
736 void add(int band_id,AddBandProc add_proc);
737 HWND call_add(int band_id,int num,char *lpszText);
738};
739class CMainRebar{
740 CDBRebarBand *pobj_DBRebarBand;
741
742 void SetupRebar(HWND hwnd);
743public:
744 HWND hParent;
745 HWND hRebar;
746
747 CMainRebar(HWND hwnd_parent);
748 ~CMainRebar();
749
750 void ResetInitRebar();
751 void ResetRebar();
752 void SaveRebarState(void);
753 void ChangeRebarBand(int BandID);
754 void menu_popup(HWND hwnd,int PosX,int PosY);
755};
756extern CMainRebar *pobj_Rebar;
757void ResetRebarData(void);
758LRESULT CALLBACK DefaultToolbarProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
759LRESULT CALLBACK DocComboProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
760LRESULT CALLBACK DebuggerToolbarProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
761
762//SubOperation.cpp
763void ScreenToClient(HWND hwnd,RECT *pRect);
764void ClientToScreen(HWND hwnd,RECT *pRect);
765BOOL IsWow64(void);
766void URLEncode(LPSTR pszSrc);
767void Digit(int num,char *buffer);
768void RectNaturalFormat(RECT *ReadRect,RECT *CopyRect);
769void RectNaturalFormat(int *x1,int *y1,int *x2,int *y2);
770void KillSpaces(char *str1,char *str2);
771void RemoveStringQuotes(char *str);
772void SlideString(char *str,int slide);
773void SlideBuffer(char *buffer,int length,int slide);
774BOOL IsVariableTopChar(char c);
775BOOL IsVariableChar(char c);
776BOOL IsCommandBackDelimitation(char *buffer,int pos);
777BOOL IsCommandDelimitation(char *buffer,int p);
778char *ComparisonString( char *str1, char *str2, bool isBigSmall, bool isWordUnit );
779int GetOneParameter(char *Parameter,int pos,char *retAns);
780int GetStringInPare(char *buffer,char *ReadBuffer);
781int GetStringInBracket(char *buffer,char *ReadBuffer);
782void JumpBlank(char *pBuf,int *piPos);
783BOOL CheckParenthesis(char *buffer);
784DWORD GetValue(char *value);
785BOOL IsManagementCommand(int ComNum);
786int IsBasicReservedWord(char *str);
787HBITMAP CreateGradationBitmap(SIZE *pSize,COLORREF color1,COLORREF color2);
788HBITMAP CreateVertGradationBitmap(SIZE *pSize,COLORREF color1,COLORREF color2);
789HBITMAP CreateHorzGradationBitmap(SIZE *pSize,COLORREF color1,COLORREF color2);
790HICON CreateGrayIcon(HICON hBaseIcon);
791void GetSize(SIZE *pSize,RECT *pRect);
792BOOL HitTest(RECT *pRect,POINT *pPos);
793BOOL Rectangle(HDC hdc,RECT *pRect);
794void ComboBox_SetSelText(HWND hCombo,char *lpszText);
795void SetCursorByState(int state);
796void SetTextEditColorDesign(TEXTEDIT_COLOR_INFO *pColorInfo,CTheme *pobj_Theme,BOOL bRedraw);
797BOOL SetupProjectEditor(void);
798void EndProjectEditor(void);
799void SetupWindow(HWND hwnd);
800BOOL SetRunning(HWND hChild);
801BOOL IsNeedCompile(char *FileName,BOOL bDebug);
802std::string GetLastErrorString();
803
804//DocumentAdvice.cpp
805void MenuAdvice(WPARAM msg);
806void ShowToolTipText(LPTOOLTIPTEXT TipText);
807char *IncludeFiles(char *buffer);
808void AddParameterHints_ToProject(char *path);
809
810
811
812/////////////////////
813// テキスト エディタ
814/////////////////////
815
816#define CONTROL_TAB_SPACE_DEFAULT 10 //エディタ画面左端のコントロールタブ(通常)
817
818//DrawBuffer.cpp
819void TextEdit_DrawBuffer(HDC hdc,int WndNum);
820
821//TextEditor.cpp
822int GetControlTabSpace(int WndNum,int *piCount=0);
823void ResetTextEditFont(HWND hwnd);
824void SetTextEditWordColor(int WndNum);
825BOOL IsHiragana(char *pBuf);
826BOOL IsAlphabet(char c);
827BOOL IsReturnCode(char *pBuf);
828void ResetScrollbar(int WndNum,int max_x,int max_y);
829#define WORDCARET_BEFORE 1
830#define WORDCARET_AFTER 2
831void TextEdit_GetWordCaret(HWND hwnd,int WndNum,POINT *pPos,int *piStart,int *piEnd,BOOL bBeforeAfterFlag);
832void CancelBeforeAutoIndent(int WndNum);
833LRESULT CALLBACK TextEditProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
834
835//Caret.cpp
836BOOL IsRightTurn(char *pBuf,int i,int now_x);
837int GetBufferIndexFromCaretPos(char *pBuf,int now_x,int now_y);
838void GetCaretPosFromBufferIndex(char *pBuf,int index,POINT *pCaretPos);
839void TextEdit_GetSel(int WndNum,CHARRANGE *pCharRange);
840void TextEdit_GetSelText(int WndNum,CHARRANGE *pCharRange,char *buffer);
841void GetScrollBaseCaretPos(int WndNum,int *pNaturalBaseX,int *pNaturalBaseY);
842void GetNaturalBaseCaretPos(int WndNum,int *pScrollBaseX,int *pScrollBaseY);
843void TextEdit_SetSel(int WndNum,int StartIndex,int EndIndex,BOOL bShowCenter=0);
844void TextEdit_SelectOneLine(int WndNum,int code_pos,BOOL bShowCenter=0);
845void ResetCaretPos(int WndNum,BOOL bInputAndReset=0);
846BOOL TextEdit_ScrollCaret(int WndNum,BOOL bScrollOneStep_x,BOOL bShowCenter=0);
847void CaretPos_LooseToNatural(int WndNum,int loose_x,int loose_y,POINT *pCaretPos);
848void GetNaturalCaretPos_Click(int WndNum,int mouse_x,int mouse_y,POINT *pCaretPos);
849void GetNaturalCaretPos_Left(int WndNum);
850void GetNaturalCaretPos_Right(int WndNum,POINT *pCaretPos);
851void GetNaturalCaretPos_Up(int WndNum,POINT *pCaretPos);
852void GetNaturalCaretPos_Down(int WndNum,POINT *pCaretPos);
853void GetNaturalCaretPos_PageUp(int WndNum,POINT *pCaretPos);
854void GetNaturalCaretPos_PageDown(int WndNum,POINT *pCaretPos);
855
856//Replace.cpp
857void TextEdit_Replace(int WndNum,char *str,BOOL bRedraw);
858void TextEdit_ReplaceUpdateUndoData(int WndNum,char *str,BOOL bPaste,BOOL bRedraw);
859void TextEdit_Convert(int id);
860
861//TextEditor_UndoRedo.cpp
862void TextEdit_UndoCommand(int WndNum);
863void TextEdit_RedoCommand(int WndNum);
864void TextEdit_NoticeChanging(int WndNum,int Command,char *KeyStr,char *DelStr,CHARRANGE *Range,CHARRANGE *DelRange);
865void TextEdit_DeleteUndoData(TEXTEDIT_UNDOSTATE *pUndoState,int pos);
866
867//Search.cpp
868void AddFindData(HWND hwnd,char ppData[MAX_FINDLIST][MAX_PATH],char *str);
869BOOL CALLBACK DlgFind(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
870BOOL CALLBACK DlgPermutation(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
871
872//analysis.cpp
873BOOL GetVarFormatString(char *buffer,char *array,char *array2,char *NestMember,int *pRefType);
874BOOL CheckReferType(char *ClassName,BOOL bArray,char *VarArray,int VarRefType);
875void GetOriginalClassName(char *ClassName);
876int GetClassPos(char *pBuf,char *ClassName,DWORD *pdwClassType);
877BOOL GetClassNameFromClassMember(char *pBuf,int iPos,char *VarName,char *ClassName,BOOL *pbArray);
878void GetCodeAreaType(char *pBuf,int iPos,int *piProcPos,char *NowClass);
879BOOL GetVariableClassName(char *pEditBuf,int iPos,char *VarName,char *ClassName,BOOL *pbArray);
880
881//EndPairCommandComplement.cpp
882BOOL GetEndPairCommandInfo(char *buffer,int p);
883BOOL IsNeedNewIndentCommand(char *name);
884void GetWithObjectVariable(char *buffer,int p,char *pObjectVar);
885
886//Complement.cpp
887void DeleteComplementInfo(void);
888BOOL GetComplementInfo(char *variable,char *pEditBuf,int iPos);
889void CodeComplement(int WndNum,int iPos);
890LRESULT CALLBACK ComplementWindow(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
891
892//ParameterHint.cpp
893char *GetUserSourceCode(void);
894void ChangeReturnCode(char *buffer);
895void DeleteComment(char *buffer);
896LRESULT CALLBACK MethodCheckWindow(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
897void ShowParameterHint(int WndNum);
898
899//CodeFormatter.cpp
900char *CodeFormatter(char *lpszReadBuffer);
901
902#ifdef THETEXT
903//StringCount.cpp
904BOOL CALLBACK DlgStringCount(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
905#endif
906
907//Print.cpp
908class CPage{
909public:
910 PAGESETUPDLG psd;
911 CPage();
912 ~CPage();
913
914 BOOL SetupDlg(void);
915};
916extern CPage obj_Page;
917LRESULT CALLBACK PreviewWndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
918void Preview(void);
919void Printout(void);
920
921//History.cpp
922#define IS_FILEHISTORY_COMMAND(a) (100<=a&&a<=199)
923class CHistory{
924 int iNum;
925 int iMaxHistoryNum;
926
927 int m_BaseID;
928public:
929 char *lpszPath[255];
930
931 CHistory(int BaseID);
932 ~CHistory();
933
934 void load(char *path);
935 void save(char *path);
936
937 void add(char *path);
938 void insert(char *path);
939
940 void ResetFileMenu(CSubMenuEx *pobj_SubMenu,BOOL bOwnerDraw);
941};
942
943
944
945
946//////////////////////
947/* プロジェクト解析 */
948
949//CClassInfo.cpp
950class CClassInfo{
951public:
952 char ClassName[VN_SIZE];
953 MEMBERINFO *pMemberInfo;
954 int MemberNum;
955 CClassInfo();
956 ~CClassInfo();
957 int Analyze(char *pBuf,int *p);
958};
959
960//ClassTree.cpp
961struct TREEHASH{
962 HTREEITEM hItem;
963 int iFileNum;
964 TREEHASH *pNextData;
965};
966#define CTV_ROOT 1 //ルート
967#define CTV_FOLDER 2 //フォルダ
968#define CTV_GLOBAL_PROC 3 //プロシージャ
969#define CTV_CLASS 4 //クラス
970#define CTV_PUBLIC_MEMBER 5 //公開cメンバ変数
971#define CTV_PUBLIC_METHOD 6 //公開メソッド
972#define CTV_PRIVATE_MEMBER 7 //非公開メンバ変数
973#define CTV_PRIVATE_METHOD 8 //非公開メソッド
974class CClassTreeView{
975 HWND hTreeWnd;
976 int iNowFile;
977 TREEHASH tree_data[MAX_HASH];
978
979 HTREEITEM hGlobalProcedureFolder;
980 HTREEITEM hNowClassFolder;
981
982 int hash_default(LONG_PTR lpdata);
983
984 void AddValidItem(HTREEITEM hItem,int iFileNum);
985 BOOL delete_check(HTREEITEM hItem);
986 void DeleteInvalidItems(HTREEITEM hItem);
987 void DeleteTreeHash(TREEHASH *pth);
988
989 HTREEITEM insert(HTREEITEM hParentItem,int flag,char *lpszName,int iFileNum);
990
991public:
992 HTREEITEM hRootFolder;
993
994 int NumberOfProcedures;
995 PROCINFO *pProcInfo;
996
997 BOOL bCloseSwitch;
998 BOOL bShowSwitch;
999
1000 CClassTreeView();
1001 ~CClassTreeView();
1002 void init(HWND hwnd,int iFileNum);
1003
1004 void InsertRootFolder(void);
1005 void InsertGlobalProcedureFolder(void);
1006 HTREEITEM InsertGlobalProcedure(int flag,char *lpszName,int iFileNum);
1007 HTREEITEM insert_code_item(HTREEITEM hParentItem,int flag,char *lpszName,int iFileNum,char *pBuf,int p);
1008 void InsertClassFolder(char *lpszName,int iFileNum,char *pBuf,int p);
1009 void InsertClassMember(int flag,char *lpszName,int iFileNum,char *pBuf,int p);
1010 void finish();
1011};
1012extern CClassTreeView *pobj_ClassTreeView;
1013void ResetClassTree(int iFileNum);
1014
1015//ProjectControl.cpp
1016void ResizeProjectView_ToolWindow(void);
1017LRESULT CALLBACK ProjectView_ToolWindowProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1018void ShowFileView();
1019void ShowClassView();
1020void ShowMaterialView();
1021LRESULT CALLBACK ProjectViewProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1022void Project_File_Insert(char *path);
1023void Project_File_Delete(HTREEITEM hTreeItem);
1024void MakeNewProject(void);
1025void OpenProject(char *path);
1026BOOL ProjectModifyCheck(BOOL bRun);
1027_int8 CloseProject(void);
1028void MakeWorkFile(void);
1029void SaveProject(void);
1030BOOL SetProjectToRun(void);
1031BOOL IsNeedCompileForProject(BOOL bDebug);
1032
1033//WindowControl.cpp
1034int GetWndInfoNum(char *name);
1035WINDOW_INFO *GetWndInfo( char *name );
1036HGLOBAL Rad_GetChildInfoClipboardData(int WndNum,int WndInfoNum);
1037void Rad_PasteChildInfoClipboardData(int WndNum,HGLOBAL hGlobal);
1038char *PermutationWndPgmTemplate(char *pBuf,char *pPjName, char *pWndName, char *pHandleName, char *pProcName);
1039void GetItemClassName(char *buffer,int Control);
1040void SaveWindowProgram();
1041void SaveWindowFile( char *path, const std::vector<WINDOW_INFO> &windowInfos );
1042_int8 OpenWindowFile(char *path);
1043void GetDefaultWindowFont(LOGFONT *LogFont);
1044void Project_Window_Insert(void);
1045void Project_Window_Delete(int WndInfoNum);
1046
1047//Resource.cpp
1048void GetResourceData(void);
1049void Project_CursorResInsert(void);
1050void Project_Cursor_Delete(int CursorInfoNum);
1051void Project_Cursor_RenameID(int CursorInfoNum);
1052void Project_BitmapResInsert(void);
1053void Project_Bitmap_Delete(int IconInfoNum);
1054void Project_Bitmap_RenameID(int BitmapInfoNum);
1055void Project_IconResInsert(void);
1056void Project_Icon_Delete(int IconInfoNum);
1057void Project_Icon_RenameID(int IconInfoNum);
1058BOOL CALLBACK DlgProject_ResourceID_Input(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1059
1060
1061
1062///////////////////
1063/* RADウィンドウ */
1064
1065//RadProc.cpp
1066void NewRadWindow( const WINDOW_INFO &windowInfo );
1067int InsertDlgItem(int WndNum,int WndInfoNum,int ItemNum,POINT *pPos,SIZE *pSize,char *IdName,char *caption,DWORD style_or_WndNum,DWORD ExStyle,int Control,int ImageType,char *ImagePath,DWORD dwInsertType);
1068void DeleteDlgItem(int WndNum,int WndInfoNum,int ItemNum,BOOL bNoticeChanging);
1069void CursorPos_GlobalToLocal(HWND hwnd,long *x,long *y);
1070void DrawSelectingRect(HWND hwnd,int WndNum,int WndInfoNum,int ButtonSelect);
1071void ChangePropertyWindow(int WndNum,int WndInfoNum);
1072void ResetScrollbarOfRadEditor(int WndNum,int weight,int height);
1073LRESULT CALLBACK RadWindow(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1074void ResizeToRadToolWindows(int WndNum,int weight,int height);
1075LRESULT CALLBACK MDIClientWindow_Rad(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1076
1077//DrawWindow.cpp
1078void DrawRadWindow(int WndNum,const WINDOW_INFO *pWindowInfo);
1079
1080//Rad_UndoRedo.cpp
1081void Rad_UndoCommand(int WndNum);
1082void Rad_RedoCommand(int WndNum);
1083void Rad_DeleteUndoData(int WndNum,int pos);
1084void Rad_NoticeChanging(int WndNum,int Command,int SelectItemNum,DWORD dwData);
1085
1086//RadToolsAndPropertyProc.cpp
1087LRESULT CALLBACK RadToolsWindow(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1088BOOL CALLBACK RadProperty_WindowProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1089BOOL CALLBACK DlgRadProperty_Item_RenameCaption(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1090BOOL CALLBACK RadProperty_ButtonProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1091BOOL CALLBACK RadProperty_CheckBoxProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1092BOOL CALLBACK RadProperty_ComboBoxProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1093BOOL CALLBACK RadProperty_EditProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1094BOOL CALLBACK RadProperty_GroupBoxProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1095BOOL CALLBACK RadProperty_ImageBoxProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1096BOOL CALLBACK RadProperty_ListBoxProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1097BOOL CALLBACK RadProperty_ListViewProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1098BOOL CALLBACK RadProperty_ProgressBarProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1099BOOL CALLBACK RadProperty_RadioButtonProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1100BOOL CALLBACK RadProperty_ScrollBarProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1101BOOL CALLBACK RadProperty_StaticProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1102BOOL CALLBACK RadProperty_TrackBarProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1103BOOL CALLBACK RadProperty_TreeViewProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1104BOOL CALLBACK RadProperty_UpDownProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1105LRESULT CALLBACK RadPropertyWindow(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1106
1107//MessageCallOperation.cpp
1108char **GetProcedureNamesOfMessageCall(int WndInfoNum,ITEMEVENTINFO **ppItemEventInfo,int *num,BOOL *pbAlways);
1109void SelectProcedureOfMessageCall(int WndInfoNum,char *ProcedureName,char *Parameter);
1110BOOL CALLBACK DlgEventCode(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1111
1112//RadSupport.cpp
1113LRESULT CALLBACK TestWindowProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1114void SetSupportDlgData(int WndNum, const WINDOW_INFO &windowInfo );
1115BOOL CALLBACK DlgRadSupport(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1116
1117
1118
1119////////////////////
1120/* MENUウィンドウ */
1121
1122//MenuProc.cpp
1123int GetMenuInfoNum(char *name);
1124void HeapMenuDataFree(MENU_INFO *pMenuInfo,int ItemNum,int *NumberOfFreedItem);
1125BOOL CALLBACK DlgProject_MenuID_Input(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1126void Project_Menu_Insert(void);
1127void Project_Menu_Delete(int MenuInfoNum);
1128void NewMenuWindow(MENU_INFO *pMenuInfo);
1129BOOL CALLBACK MenuEditDlg(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1130LRESULT CALLBACK MenuEditWindow(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1131LRESULT CALLBACK MDIClientWindow_Menu(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1132
1133
1134
1135//////////////////////////////////
1136/* アイコン エディタ ウィンドウ */
1137
1138//IconEditor.cpp
1139void AddIconType(int WndNum,int IconType);
1140void DeleteIconType(int WndNum);
1141void NewIconEditWindow(char *filepath);
1142void SaveIconFile(char *filepath,HWND hwnd);
1143LRESULT CALLBACK MDIClientWindow_IconEdit(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1144
1145//IconEditor_Main.cpp
1146HGLOBAL IconEdit_GetChildInfoClipboardData(int WndNum);
1147void IconEdit_PasteChildInfoClipboardData(int WndNum,HBITMAP hBmp);
1148void IconEdit_PasteImage(int WndNum);
1149void DrawIconToMemBmp(int WndNum,RECT *pRect);
1150void IconEdit_EraseRect(int WndNum,RECT *pRect);
1151LRESULT CALLBACK IconEditWindowProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1152
1153//IconEditor_Tool.cpp
1154BOOL CALLBACK DlgIconButtons(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1155BOOL CALLBACK DlgIconToolProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1156
1157//IconEditor_Color.cpp
1158BOOL CALLBACK DlgIconColorProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);
1159
1160//IconEditor_UndoRedo.cpp
1161void IconEdit_UndoCommand(int WndNum);
1162void IconEdit_RedoCommand(int WndNum);
1163void IconEdit_NoticeChanging(int WndNum);
1164
1165
1166
1167
1168
1169#include "NonVolatile.h"
1170
1171
1172
1173
1174#ifdef _DEBUG
1175/*Debug*/
1176
1177#define HeapAlloc CheckHeapAlloc
1178#define HeapReAlloc CheckHeapReAlloc
1179LPVOID CheckHeapAlloc(HANDLE hHeap,DWORD dwFlags,DWORD dwBytes);
1180LPVOID CheckHeapReAlloc(HANDLE hHeap,DWORD dwFlags,LPVOID lpMem,DWORD dwBytes);
1181
1182#define DeleteObject CheckDeleteObject
1183BOOL CheckDeleteObject(HGDIOBJ hObject);
1184
1185#endif
Note: See TracBrowser for help on using the repository browser.