2012-04-29 13 views
0

私はScintillaエディタに基づいてプロジェクトをやろうとしていて、初心者なので実際にプロジェクトを始める方法はわかりません。私はReadmeの手順に従い、Windows上でScintillaを構築して、次に何をすべきかを見極めることができました。Scintillaでプロジェクトを始めるには?

どんな種類の回答/提案/助言も高く評価されます。ありがとう。

答えて

1

を見つけることができます私は私のレクサーを始めたとき、私はそれは少し困難な見つかりましたが、すべては、いくつかの重要なアイデアに沸く:

  • 入れレクサーフォルダ内のレクサーは、レクサーについて
  • テルのScintillaのは、あなたがOについて
  • テルのScintillaのをscintilla.ifaceためにあなたの定数を追加
  • を追加しました

    あなたはそれが

      をLexNEW.cxx名前あなたのレクサーテンプレートを作成した後:WN定数(あなたがいずれかを使用している場合)
    • コード/コンパイル+は、実際の例がある満足

    まで繰り返し

  • LexNew.cxxを/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 幸運を祈ってください!

0

私は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; 
      } 
     } 

をお楽しみください!

関連する問題