2012-04-29 1 views
0

Я пытался сделать проект на основе редактора Scintilla, и поскольку я новичок, я не знаю, как начать проект. Я выполнил шаги на Readme и смог построить Scintilla в Windows и теперь пытаюсь выяснить, что мне делать дальше.Как запустить проект с помощью Scintilla?

Ответы на любые вопросы/рекомендации/советы приветствуются. Благодарю.

ответ

1

Я нашел его немного сложные, когда я начал с моим лексерем, но все сводится к нескольким важным идеям:

  • Put лексер в папке лексического анализатора
  • Телль крупица о лексером вы добавили
  • Добавьте константы Scintilla.iface
  • Расскажите крупицы о своем O шп Константа (если вы используете какой-либо)
  • кода/Compile + Повторять до удовлетворенного

фактического примера:

После создания шаблона LeXeR вы называете это LexNEW.cxx

  • Поместите LexNew.cxx в /lexers folder
  • Введите /src и запустите LexGen.py, это говорит о том, что есть новый лексер, добавив его в Scint illa.h

Теперь вы добавляете свои константы в файл .iface. Наиболее важными из них являются: val SCLEX_NEW=108, где 108 - номер неиспользованного идентификатора и lex new=SCLEX_NEW SCE_NEW_, где new - действительный уникальный короткий идентификатор для вашего лексера.

Поместите их в те же разделы, что и другие (во избежание путаницы в дальнейшем), и если у вас есть сомнения, используйте одно из других определений в качестве шаблона!

Теперь под вашим 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, который говорит крупицы о ваших новых констант.

Если ваш лексический код действителен, тогда вы готовы к компиляции.

Не забудьте повторить этот последний шаг каждый раз, когда вы создаете новую константу. Сценарий HFace.py добавляет эти значения в SciLexer.h, которые вы можете сделать вручную, если вы не хотите делать два шага каждый раз.

И вот это мой друг после компиляции, убедитесь, что ваша программа устанавливает ваш лексер с чем-то вроде: 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; 
      } 
     } 

Enjoy!

Смежные вопросы