私はScintillaエディタに基づいてプロジェクトをやろうとしていて、初心者なので実際にプロジェクトを始める方法はわかりません。私はReadmeの手順に従い、Windows上でScintillaを構築して、次に何をすべきかを見極めることができました。Scintillaでプロジェクトを始めるには?
どんな種類の回答/提案/助言も高く評価されます。ありがとう。
私はScintillaエディタに基づいてプロジェクトをやろうとしていて、初心者なので実際にプロジェクトを始める方法はわかりません。私はReadmeの手順に従い、Windows上でScintillaを構築して、次に何をすべきかを見極めることができました。Scintillaでプロジェクトを始めるには?
どんな種類の回答/提案/助言も高く評価されます。ありがとう。
あなたは... Scintilla for .NETを開始あなたの頭を与えること
を見つけることができます私は私のレクサーを始めたとき、私はそれは少し困難な見つかりましたが、すべては、いくつかの重要なアイデアに沸く:
あなたはそれが
まで繰り返し
/lexers
フォルダに入れますLexGen.py
を実行すると、これはScintillaに新しいレクサーが追加されたことをscintillaに伝えますilla.hこれで、定数を.ifaceファイルに追加しました。最も重要なものはval SCLEX_NEW=108
です。ここで、108
は未使用のID番号で、lex new=SCLEX_NEW SCE_NEW_
です。new
は、あなたのレクサーの有効な一意の短い識別子です。
他のセクションと同じセクションに置いてください(あとで混同しないように)。疑問がある場合は、他の定義の1つをテンプレートとして使用してください。あなたは、ほぼ準備ができているこのステップの後
val SCE_NEW_DEFAULT=0
val SCE_NEW_COMMENTLINE=1
val SCE_NEW_COMMENTBLOCK=2
val SCE_NEW_ERROR=31
:今、あなたのような独自の定数値を定義することができ、あなたのlex new=
ライン以下
。
/include
を入力し、Hface.py
を入力すると、新しい定数についてscintillaに伝えられます。lexコードが有効な場合は、コンパイルする準備ができています。
新しい定数を作成するたびに、最後の手順を繰り返すことを忘れないでください。 HFace.py
スクリプトはこれらの値をSciLexer.hに追加します。SciLexer.hは、毎回2つの手順を実行したくない場合に手動で行うことができます。
コンパイルした後、私の友人はあなたのプログラムがあなたのレクサーをsci.SetLexer(108)
のように設定し、sci.StyleSetFore(01, 0x008800) // SCE_NEW_COMMENTLINE
のような各状態にいくつかの色を入れていることを確認してください。
あなたが使用したい最後のものSciLexer.dll
は、すべてのレクサーを含まないものですscintilla.dll
幸運を祈ってください!
私はScintillaベースのプロジェクトに取り組んでおり、私の経験の一部を共有しています。 プロジェクトを開始するには、まずSciLexer.dll、SciLexer.h、およびScintilla.hをダウンロードします。その後
フレームワークに基づいて、あなたのデモプロジェクトをビルドする:
#include "Scintilla.h"
#include "SciLexer.h"
static HWND global_editor_win = NULL;
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
HMODULE hmod = ::LoadLibrary(_T("SciLexer.dll"));
//other winmain code.
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
RECT rc;
switch (message) {
case WM_CREATE:
GetClientRect(hWnd, &rc);
global_editor_win = ::CreateWindow(_T("Scintilla"), "Source",
WS_CHILD | WS_VSCROLL | WS_HSCROLL | WS_CLIPCHILDREN,
rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top,
hWnd, (HMENU)1001, hInst, 0);
::SendMessage(global_editor_win , SCI_SETTEXT, 0, (LPARAM)"hello, world");
ShowWindow(global_editor_win , SW_SHOW);
break;
}
}
をお楽しみください!