.net 如何使用闪烁体启动项目?

.net 如何使用闪烁体启动项目?,.net,scintilla,.net,Scintilla,我一直在尝试做一个基于闪烁编辑器的项目,因为我是一个新手,我不知道如何真正开始一个项目。我遵循自述文件上的步骤,能够在Windows上构建闪烁体,现在正试图找出下一步应该做什么 非常感谢您的任何回答/建议/建议。谢谢。你可能会发现这给了你一个领先的开始…当我开始使用我的lexer时,我觉得有点令人畏惧,但一切归结起来都有几个重要的想法: 将lexer放入lexer文件夹 告诉斯金特拉你添加的雷克瑟 将您的常数添加到scanitlla.iface 告诉斯金特拉你自己的常数(如果你使用任何常数)

我一直在尝试做一个基于闪烁编辑器的项目,因为我是一个新手,我不知道如何真正开始一个项目。我遵循自述文件上的步骤,能够在Windows上构建闪烁体,现在正试图找出下一步应该做什么


非常感谢您的任何回答/建议/建议。谢谢。

你可能会发现这给了你一个领先的开始…

当我开始使用我的lexer时,我觉得有点令人畏惧,但一切归结起来都有几个重要的想法:

  • 将lexer放入lexer文件夹
  • 告诉斯金特拉你添加的雷克瑟
  • 将您的常数添加到scanitlla.iface
  • 告诉斯金特拉你自己的常数(如果你使用任何常数)
  • 编码/编译+重复,直到满意为止
一个实际的例子是:

创建Lexer模板后,将其命名为LexNEW.cxx

  • 将LexNew.cxx放入
    /lexers
    文件夹
  • 进入
    /src
    并运行
    LexGen.py
    ,这会通过将新的lexer添加到闪烁体.h来告诉闪烁体有一个新的lexer
现在将常数添加到.iface文件中。最重要的是:
val-SCLEX\u-NEW=108
其中
108
是一个未使用的id号,
lex-NEW=SCLEX\u-NEW-SCE\u-NEW
其中
NEW
是您的lexer的有效唯一短标识符

将它们放在与其他定义相同的部分(以避免以后混淆),如果有疑问,请使用其他定义之一作为模板

现在,在
lex new=
行下面,您可以定义自己的常量值,如:

val SCE_NEW_DEFAULT=0
val SCE_NEW_COMMENTLINE=1
val SCE_NEW_COMMENTBLOCK=2
val SCE_NEW_ERROR=31
完成这一步后,您几乎准备好了

  • 输入
    /include
    并运行
    Hface.py
    ,它将告诉斯金特拉有关新常数的信息
如果您的lex代码是有效的,那么您就可以编译了

每次创建新常量时,请记住重复最后一步。
HFace.py
脚本将这些值添加到SciLexer.h中,如果您不希望每次执行两个步骤,可以手动执行该操作

这就是我的朋友,编译完成后,确保你的程序将你的lexer设置为:
sci.SetLexer(108)
,并为每个状态添加一些颜色,比如
sci.StyleSetFore(010x008800)//SCE\u NEW\u COMMENTLINE
等等

最后一件事是您要使用
SciLexer.dll
,它包含所有lexer,而不是
scilla.dll

祝你好运

我正在从事基于闪烁体的项目,并与您分享我的一些经验。 要启动一个项目,首先下载SciLexer.dll、SciLexer.h和scinella.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;   
          }
       }
享受吧