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

Last change on this file was 829, checked in by イグトランス (egtra), 11 years ago

svn:eol-styleとsvn:mime-type(文字コード指定含む)の設定

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