Original Article: CScintillaCtrl, CScintillaView & CScintillaDoc v1.44
Author: naughter.com
CScintillaCtrl, CScintillaView & CScintillaDoc v1.44

CScintillaCtrl, CScintillaView & CScintillaDoc v1.44 Clases MFC para encapsular o controle de edição Scintilla

Essas classes fornecem um acondicionamento MFC para o controle de edição Scintilla (http://www.scintilla.org). Este controle fornece um controle de edição de plataforma cruzada de código aberto. Alguns dos recursos fornecidos incluem coloração sintática, dicas de chamada, destaque de suporte, estilos, margens e marcadores para citar apenas alguns. As classes de wrapper fornecidas facilitam a inclusão do controle em projetos do MFC no Windows.

 

Características

  • Implementa toda a funcionalidade fornecida pela Scintilla v4.0.0.
  • A classe wrapper CSinctillaCtrl observa a mesma semântica que a construída no MFC "CEdit" classe wrapper.
  • Usa as funções de acesso direto fornecidas pela Scintilla para melhorar o desempenho. O código Multi-threaded ainda pode usar SendMessage chamando o método SetCallDirect com um valor de parâmetro FALSE.
  • As classes CSinctillaView e CScintillaDoc fornecem uma implementação completa de doc / view que pode ser descartada em um projeto existente, em vez da compilação construída em MFC, editando ou editando classes de controle.
  • Fornece suporte de persistência MFC incorporado.
  • Todas as notificações enviadas usando WM_NOTIFY e WM_COMMAND são mapeadas para facilitar usar funções virtuais C++ na classe wrapper de exibição.
  • A classe CScintillaView fornece uma implementação de dobradura padrão.
  • Inclui "Find and Replace" suporte incluindo o suporte de expressão regular fornecido pela Scintilla. Para conseguir isso, "CScintillaFindReplaceDlg" a classe é implementada que deriva do padrão MFC "CFindReplaceDialog".
  • Inclui uma implementação de impressão MFC completa no CScintillaView.
  • Inclui suporte completo para a caixa de diálogo de configuração padrão da página e as margens de impressão.
  • Inclui uma estrutura para cabeçalhos de impressão e rodapés.
  • Inclui suporte para todos os itens de menu MFC padrão, como Corte, Copiar, Colar etc..
  • O aplicativo de exemplo demonstra como as mensagens de nível superior devem ser encaminhadas para o controle Scintilla.
  • O aplicativo de exemplo também demonstra como você implementaria a autocompleção e chamar dicas em seu código.
  • As aulas escondem o fato de que a Scintilla nativamente não suporta Windows Unicode (também conhecido como UTF16). A forma como o Scintilla suporta Unicode é através de uma API UTF8. A classe wrapper "CScintillaCtrl" Cuida dos detalhes de configurar a página de códigos Unicode para Scintilla e a tradução de e para as cordas UTF8. Se você der uma olhada no "ScintillaCtrl.h" arquivo de cabeçalho, você verá uma seção que inclui versões de string widechar das funções no Scintilla, que envolve parâmetros de string. Essas funções de string widechar estão envolvidas em um "_UNICODE" pré-processador #ifdef. Internamente, essas funções executam o thunking necessário para mapear entre o Windows Unicode e a API UTF8 da Scintilla. Por favor, note que, para executar este thunking, o código usa a funcionalidade de tradução UTF8 fornecida pelo " WideCharToMultiByte " e "MultiByteToWideChar" chamadas API Win32.

 

O arquivo zip fechado contém o código-fonte da classe wrapper e um aplicativo de demonstração MFC simples que exerce a funcionalidade das classes.

 

Copyright

  • Você pode incluir o código-fonte em qualquer produto (comercial, shareware, freeware ou de outra forma) quando seu produto for lançado em formato binário.
  • Você tem permissão para modificar o código-fonte da maneira que desejar, exceto que não pode modificar os detalhes de direitos autorais na parte superior de cada módulo.
  • Se você deseja distribuir o código-fonte com seu aplicativo, você só poderá distribuir versões lançadas pelo autor. Isto é para manter um único ponto de distribuição para o código-fonte.

 

Atualizações

V1.44 (31 de agosto de 2017)

  • Classe atualizada para trabalhar com Scintilla v4.0.0. Novas mensagens envolvidas incluem: SCI_GETNAMEDSTYLES, SCI_NAMEOFSTYLE, SCI_TAGSOFSTYLE & SCI_DESCRIPTIONOFSTYLE. Messages removed include SCI_GETTWOPHASEDRAW & SCI_SETTWOPHASEDRAW
  • Corrigido uma série de avisos do compilador quando o código é compilado para x64

V1.43 (12 de junho de 2017)

  • Classe atualizada para trabalhar com o Scintilla v3.7.5. Novas mensagens envolvidas incluem: SCI_GETCARETLINEFRAME, SCI_SETCARETLINEFRAME & SCI_LINEREVERSE
  • Made _SCINTILLA_EDIT_STATE class available in ScintillaDocView.h e renomeou para "CScintillaEditState". Obrigado a Michael Thompson por solicitar esta adição.
  • Atualizada CScintillaView::FindTextSimple para rastrear a posição inicial e reiniciar as buscas desde o início (ou terminar se for procurar para trás) até a posição de início original estar localizada. Graças a Michael Thompson por ter fornecido esta boa adição.
  • Atualizado o aplicativo de demonstração incluído no download para mostrar como CScintillaView::CreateControl pode ser usado. Obrigado a Michael Thompson por solicitar esta atualização.

V1.42 (3 de abril de 2017)

  • Classe atualizada para trabalhar com o Scintilla v3.7.4. Novas mensagens envolvidas incluem: SCI_SETACCESSIBILITY & SCI_GETACCESSIBILITY

V1.41 (4 March 2017)

  • Detalhes atualizados dos direitos autorais
  • Classe atualizada para trabalhar com o Scintilla v3.7.3. A única alteração para suportar esta versão foi ter agora nenhum valor de retorno dos métodos SetSelection e AddSelection
  • Atualizou o download para incluir os arquivos de projeto VC 2010 corretos. Obrigado a Kenny Lau por relatar este problema.
  • Reabasteceu o CSinctillaView :: OnActivateView para alterar o proprietário da caixa de diálogo encontrar / substituir para lidar corretamente com os casos em que existem várias visualizações de escala de nível superior em sua aplicação. Obrigado a Kenny Lau por ter relatado esse problema.
  • Refatorou a lógica no CScintillaView :: OnDestroy que decide se a caixa de diálogo find / replace deve ser destruída em um novo método virtual ShouldDestroyFindReplaceDialog.
  • Implementou um manipulador de mensagens WM_NCDESTROY para a caixa de diálogo encontrar / substituir. Isso ajuda a evitar problemas em que às vezes você obtém um ASSERT jogado de CScintillaView :: AssertValid. O código para validar a caixa de diálogo encontrar / substituir também foi removido do CScintillaView :: AssertValid. Obrigado a Kenny Lau por relatar este problema.

V1.40 (20 de dezembro de 2016)

  • Classe atualizada para trabalhar com o Scintilla v3.7.1. Novas mensagens envolvidas incluem: SCI_GETTABDRAWMODE, SCI_SETTABDRAWMODE, SCI_TOGGLEFOLDSHOWTEXT & SCI_FOLDDISPLAYTEXTSETSTYLE. O parâmetro para suportar a mensagem SCI_USEPOPUP foi alterado de um BOOL para um int.
  • Código atualizado para usar Sci_RangeToFormat typedef em vez de RangeToFormat
  • Código atualizado para usar Sci_TextToFind typedef em vez de TextToFind
  • Código atualizado para usar Sci_TextRange typedef em vez de TextRange
  • Código atualizado para não usar o namespace Scintilla que foi removido de Scintilla.h
  • Adicionado uma nova variável de membro chamada "m_bCPP11Regex" que decide se o suporte da Scintilla para o C ++ 11 regex deve ser usado na funcionalidade de busca / substituição. Graças a Markus Nissl por sugerir esta atualização.

V1.39 (20 de novembro de 2016)

  • Adição de um novo método virtual CScintillaView :: CreateControl. Isso permite a personalização da criação da instância CSinctillaCtrl em tempo de execução na classe de exibição. Graças a Markus Nißl por fornecer esta boa adição.

V1.38 (16 de outubro de 2016)

  • Substituiu todas as ocorrências de NULL por nullptr em toda a base de código. Isso agora significa que o requisito mínimo para compilar o código é Visual Studio 2010 ou posterior. Obrigado a Markus Nissl por solicitar esta atualização.
  • Classe atualizada para trabalhar com o Scintilla v3.7.0. Novas mensagens envolvidas incluem: SCI_SETMARGINBACKN, SCI_GETMARGINBACKN, SCI_SETMARGINS, SCI_GETMARGINS, SCI_MULTIEDGEADDLINE, SCI_MULTIEDGECLEARALL, SCI_SETMOUSEWHEELCAPTURES & SCI_GETMOUSEWHEELCAPTURES.

V1.37 (25 de julho de 2016)

  • Adicionou anotações de SAL a todo o código

V1.36 (11 de julho de 2016)

  • Classe verificada contra Scintilla v3.6.6. Como nenhuma nova mensagem foi introduzida entre v3.6.3 e v3.6.6, não foram necessárias alterações no código.
  • Removido o parâmetro bDirect de todas as chamadas de método e substituiu essa funcionalidade por um novo par de métodos getter / setter chamado GetCallDirect e SetCallDirect. Graças a Chad Marlow por solicitar esta atualização

V1.35 (23 de janeiro de 2016)

  • Detalhes atualizados dos direitos autorais.
  • Classe atualizada para trabalhar com Scintilla v3.6.3. Novas mensagens envolvidas incluem: SCI_SETIDLESTYLING & SCI_GETIDLESTYLING

V1.34 (19 de setembro de 2015)

  • Atualizou o código para limpar a compilação no VC 2015
  • Classe atualizada para trabalhar com Scintilla v3.6.1. Novas mensagens envolvidas incluem: SCI_INDICSETHOVERSTYLE, SCI_INDICGETHOVERSTYLE, SCI_INDICSETHOVERFORE, SCI_INDICGETHOVERFORE, SCI_INDICSETFLAGS, SCI_INDICGETFLAGS, SCI_SETTARGETRANGE, SCI_GETTARGETTEXT, SCI_TARGETWHOLEDOCUMENT, SCI_ISRANGEWORD. SCI_MULTIPLESELECTADDNEXT & SCI_MULTIPLESELECTADDEACH. As mensagens removidas incluem: SCI_SETKEYSUNICODE & SCI_GETKEYSUNICODE.
  • Métodos virtuais adicionais para notificação SCN_AUTOCCOMPLETED.
  • Todas as APIs que usam uma posição de documento lógico que utilizou anteriormente um C longo agora foram substituídas pela definição Scintilla "Sci_Position". Isto é para refletir as mudanças em andamento no Scintilla para permitir suporte para documentos maiores que 2 GB.

22 de agosto de 2015

  • Verificado o código compila limpa usando VC 2015.

V1.33 (26 de janeiro de 2015)

  • Detalhes atualizados dos direitos autorais
  • Atualizou o código para limpar a compilação no VC 2013
  • Classe atualizada para trabalhar com o Scintilla v3.5.3. Novas mensagens envolvidas incluem: SCI_CHANGEINSERTION, SCI_CLEARTABSTOPS, SCI_ADDTABSTOP, SCI_GETNEXTTABSTOP, SCI_GETIMEINTERACTION, SCI_SETIMEINTERACTION, SCI_CALLTIPSETPOSSTART, SCI_GETPHASESDRAW, SCI_SETPHASESDRAW, SCI_POSITIONRELATIVE, SCI_AUTOCSETMULTI, SCI_AUTOCGETMULTI, SCI_SETMOUSESELECTIONRECTANGULARSWITCH, SCI_GETMOUSESELECTIONRECTANGULARSWITCH, SCI_DROPSELECTIONN, SCI_SETREPRESENTATION, SCI_GETREPRESENTATION, SCI_CLEARREPRESENTATION, SCI_GETSTYLEFROMSUBSTYLE & SCI_GETPRIMARYSTYLEFROMSTYLE.
  • Métodos virtuais adicionais para notificações SCN_FOCUSIN & SCN_FOCUSOUT.

4 de julho de 2014

V1.32 (16 de junho de 2013)

  • Classe atualizada para trabalhar com o Scintilla v3.3.3. Novas mensagens envolvidas incluem: SCI_SCROLLRANGE, SCI_FOLDLINE, SCI_FOLDCHILDREN, SCI_EXPANDCHILDREN, SCI_FOLDALL, SCI_SETAUTOMATICFOLD, SCI_GETAUTOMATICFOLD, SCI_AUTOCSETORDER, SCI_AUTOCGETORDER, SCI_RELEASEALLEXTENDEDSTYLES, SCI_ALLOCATEEXTENDEDSTYLES, SCI_SETLINEENDTYPESALLOWED, SCI_GETLINEENDTYPESALLOWED, SCI_GETLINEENDTYPESACTIVE, SCI_GETLINEENDTYPESSUPPORTED, SCI_ALLOCATESUBSTYLES, SCI_GETSUBSTYLESSTART, SCI_GETSUBSTYLESLENGTH, SCI_FREESUBSTYLES, SCI_SETIDENTIFIERS, SCI_DISTANCETOSECONDARYSTYLES & SCI_GETSUBSTYLEBASES.
  • Atualizou todos os MESSAGE_MAP do MFC para usar o estilo C ++ moderno para os métodos de referência de uma classe.
  • Corrigido um erro de substituição de pilha nas duas versões do método GetSelText (BOOL bDirect). O código agora usa corretamente SCI_GETSELTEXT (0,0) para determinar o tamanho do buffer para recuperar os dados. Obrigado a Bengt Vagnhammar por relatar este erro.

5 de abril de 2013

V1.31 (23 de fevereiro de 2013)

  • O método PrivateLexerCall agora usa um parâmetro void * em vez de um int. Isso evita um problema de truncamento do ponteiro em plataformas de 64 bits. Graças a Simon Smith por relatar este problema.

V1.30 (18 de janeiro de 2013)

  • Detalhes atualizados dos direitos autorais
  • Métodos virtuais adicionais para SCN_INDICATORCLICK, SCN_INDICATORRELEASE, SCN_AUTOCCHARDELETED, SCN_AUTOCCANCELLED & SCN_HOTSPOTRELEASECLICK notifications. Thanks to Markus Nißl por solicitar esta atualização.
  • As classes agora são encapsuladas em um namespace Scintilla se a definição SCI_NAMESPACE for definida. Isso é consistente com a forma como o arquivo de cabeçalho scintilla.h opera na presença deste define. Graças a Markus Nißl por solicitar esta atualização. 
  • Classe atualizada para trabalhar com o Scintilla v3.2.4. Novas mensagens envolvidas incluem: SCI_GETSELECTIONEMPTY, SCI_RGBAIMAGESETSCALE, SCI_VCHOMEDISPLAY, SCI_VCHOMEDISPLAYEXTEND, SCI_GETCARETLINEVISIBLEALWAYS & SCI_SETCARETLINEVISIBLEALWAYS.
  • Atualizado o aplicativo de exemplo para compilar quando a definição SCI_NAMESPACE é definida.
  • O aplicativo de exemplo agora foi criado por padrão com o SCI_NAMESPACE definido. Isso significa que todas as classes do autor aparecerão no "Scintilla" namespace.
  • O aplicativo de demonstração agora carrega o SciLexer.dll somente no diretório do aplicativo. Isso evita problemas de segurança de plantio de DLL.

V1.29 (15 de agosto de 2012)

  • Detalhes atualizados dos direitos autorais
  • Classe atualizada para trabalhar com o Scintilla v3.2.1. Novo envolvido em Mensagens inclui: SCI_DELETERANGE, SCI_GETWORDCHARS, SCI_GETWHITESPACECHARS, SCI_SETPUNCTUATIONCHARS, SCI_GETPUNCTUATIONCHARS, SCI_AUTOCSETCASEINSENSITIVEBEHAVIOUR, SCI_AUTOCGETCASEINSENSITIVEBEHAVIOUR, SCI_GETRANGEPOINTER, SCI_GETGAPPOSITION, SCI_FINDINDICATORSHOW, SCI_FINDINDICATORFLASH & SCI_FINDINDICATORHIDE.
  • O método SetDocPointer agora usa um parâmetro vazio * em vez de um int. Isso evita um problema de truncamento do ponteiro em plataformas de 64 bits. Obrigado a Kenny Liu por ter relatado este problema.
  • O método GetDocPointer agora também retorna um vazio * ao invés de um valor de retorno int
  • Atualizou o código para limpar a compilação no VC 2012 

V1.28 (12 de dezembro de 2011)

  • Classe atualizada para trabalhar com Scintilla v3.0.2. Novas mensagens envolvidas incluem: SCI_MARKERSETBACKSELECTED, SCI_MARKERENABLEHIGHLIGHT, SCI_STYLESETSIZEFRACTIONAL, SCI_STYLEGETSIZEFRACTIONAL, SCI_STYLESETWEIGHT, SCI_STYLEGETWEIGHT, SCI_COUNTCHARACTERS, SCI_SETEMPTYSELECTION, SCI_CALLTIPSETPOSITION, SCI_GETALLLINESVISIBLE, SCI_BRACEHIGHLIGHTINDICATOR, SCI_BRACEBADLIGHTINDICATOR, SCI_INDICSETOUTLINEALPHA, SCI_INDICGETOUTLINEALPHA, SCI_SETMARGINOPTIONS, SCI_GETMARGINOPTIONS, SCI_MOVESELECTEDLINESUP, SCI_MOVESELECTEDLINESDOWN, SCI_SETIDENTIFIER, SCI_GETIDENTIFIER, SCI_RGBAIMAGESETWIDTH, SCI_RGBAIMAGESETHEIGHT, SCI_MARKERDEFINERGBAIMAGE, SCI_REGISTERRGBAIMAGE, SCI_SCROLLTOSTART, SCI_SCROLLTOEND, SCI_SETTECHNOLOGY, SCI_GETTECHNOLOGY & SCI_CREATELOADER As mensagens suspensas incluem: SCI_SETUSEPALETTE & SCI_GETUSEPALETTE

V1.27 (1 de abril de 2011)

  • Detalhes atualizados dos direitos autorais.
  • Classe atualizada para trabalhar com o Scintilla v2.25. Novas mensagens envolvidas incluem: SCI_SETMARGINCURSORN & SCI_GETMARGINCURSORN
  • Atualizada CScintillaFindReplaceDlg::Create para usar AfxFindResourceHandle ao invés de AfxGetResourceHandle. Obrigado a Nißl Markus por ter relatado esta boa adição.

28 de março de 2011

  • Corrigido um problema com o download do arquivo zip onde alguns arquivos incluídos no arquivo zip eram de um projeto diferente. Obrigado a "B.R" por relatar este problema.

V1.26 (22 de novembro de 2010)

  • Detalhes atualizados dos direitos autorais.
  • Aplicativo de exemplo atualizado para limpar compilação no VC 2010
  • Classe atualizada para trabalhar com Scintilla v2.22. Novas mensagens envolvidas incluem: SCI_SETWHITESPACESIZE, SCI_GETWHITESPACESIZE, SCI_SETFONTQUALITY, SCI_GETFONTQUALITY, SCI_SETFIRSTVISIBLELINE, SCI_SETMULTIPASTE, SCI_GETMULTIPASTE, SCI_GETTAG, SCI_AUTOCGETCURRENTTEXT, SCI_SETADDITIONALCARETSVISIBLE, SCI_GETADDITIONALCARETSVISIBLE, SCI_CHANGELEXERSTATE, SCI_CONTRACTEDFOLDNEXT, SCI_VERTICALCENTRECARET, SCI_GETLEXERLANGUAGE, SCI_PRIVATELEXERCALL, SCI_PROPERTYNAMES, SCI_PROPERTYTYPE, SCI_DESCRIBEPROPERTY, SCI_DESCRIBEKEYWORDSETS. Também houve algumas mudanças de parâmetros nas mensagens existentes.

V1.25 (3 de outubro de 2009)

  • Corrigido um bug no CScintillaCtrl :: Criar onde uma falha pode ocorrer em uma compilação Unicode se a chamada CreateEx falhar (por exemplo, se a DLL Scintilla não estiver carregada). Graças a Simon Smith por relatar este erro
  • Classe atualizada para trabalhar com Scintilla v2.01. Novas mensagens envolvidas incluem: SCI_SETWRAPINDENTMODE, SCI_GETWRAPINDENTMODE, SCI_INDICSETALPHA, SCI_INDICGETALPHA, SCI_SETEXTRAASCENT, SCI_GETEXTRAASCENT, SCI_SETEXTRADESCENT, SCI_GETEXTRADESCENT, SCI_MARKERSYMBOLDEFINED, SCI_MARGINSETTEXT, SCI_MARGINGETTEXT, SCI_MARGINSETSTYLE, SCI_MARGINGETSTYLE, SCI_MARGINSETSTYLES, SCI_MARGINGETSTYLES, SCI_MARGINTEXTCLEARALL, SCI_MARGINSETSTYLEOFFSET, SCI_MARGINGETSTYLEOFFSET, SCI_ANNOTATIONSETTEXT, SCI_ANNOTATIONGETTEXT, SCI_ANNOTATIONSETSTYLE, SCI_ANNOTATIONGETSTYLE, SCI_ANNOTATIONSETSTYLES, SCI_ANNOTATIONGETSTYLES, SCI_ANNOTATIONGETLINES, SCI_ANNOTATIONCLEARALL, SCI_ANNOTATIONSETVISIBLE, SCI_ANNOTATIONGETVISIBLE, SCI_ANNOTATIONSETSTYLEOFFSET, SCI_ANNOTATIONGETSTYLEOFFSET, SCI_ADDUNDOACTION, SCI_CHARPOSITIONFROMPOINT, SCI_CHARPOSITIONFROMPOINTCLOSE, SCI_SETMULTIPLESELECTION, SCI_GETMULTIPLESELECTION, SCI_SETADDITIONALSELECTIONTYPING, SCI_GETADDITIONALSELECTIONTYPING, SCI_SETADDITIONALCARETSBLINK, SCI_GETADDITIONALCARETSBLINK, SCI_GETSELECTIONS, SCI_CLEARSELECTIONS, SCI_SETSELECTION, SCI_ADDSELECTION, SCI_SETMAINSELECTION, SCI_GETMAINSELECTION, SCI_SETSELECTIONNCARET, SCI_GETSELECTIONNCARET, SCI_SETSELECTIONNANCHOR, SCI_GETSELECTIONNANCHOR, SCI_SETSELECTIONNCARETVIRTUALSPACE, SCI_GETSELECTIONNCARETVIRTUALSPACE, SCI_SETSELECTIONNANCHORVIRTUALSPACE, SCI_GETSELECTIONNANCHORVIRTUALSPACE, SCI_SETSELECTIONNSTART, SCI_GETSELECTIONNSTART, SCI_SETSELECTIONNEND, SCI_GETSELECTIONNEND, SCI_SETRECTANGULARSELECTIONCARET, SCI_GETRECTANGULARSELECTIONCARET, SCI_SETRECTANGULARSELECTIONANCHOR, SCI_GETRECTANGULARSELECTIONANCHOR, SCI_SETRECTANGULARSELECTIONCARETVIRTUALSPACE, SCI_GETRECTANGULARSELECTIONCARETVIRTUALSPACE, SCI_SETRECTANGULARSELECTIONANCHORVIRTUALSPACE, SCI_GETRECTANGULARSELECTIONANCHORVIRTUALSPACE, SCI_SETVIRTUALSPACEOPTIONS, SCI_GETVIRTUALSPACEOPTIONS, SCI_SETRECTANGULARSELECTIONMODIFIER, SCI_GETRECTANGULARSELECTIONMODIFIER, SCI_SETADDITIONALSELFORE, SCI_SETADDITIONALSELBACK, SCI_SETADDITIONALSELALPHA, SCI_GETADDITIONALSELALPHA, SCI_SETADDITIONALCARETFORE, SCI_GETADDITIONALCARETFORE, SCI_ROTATESELECTION & SCI_SWAPMAINANCHORCARET

30 de abril de 2009

  • Atualizou o arquivo de projeto para remover o arquivo de manifesto já extinto. Obrigado a "marshal" por relatar este problema.

V1.24 (11 de fevereiro de 2009)

  • Atualizou o arquivo de projeto para remover as configurações de atualização do VC 6.

V1.23 (20 de janeiro de 2009)

  • Detalhes atualizados dos direitos autorais
  • Corrigido um bug no CScintillaView :: SameAsSelected onde ele não corretamente lida com o fato de que GetSelectionStart () e GetSelectionEnd () retorna as posições no texto codificado UTF-8, o que resultaria em falhas na lógica para caracteres codificados em multibyte. Isso tornou impossível substituir as seqüências de caracteres multibyte em operações de busca / substituição. Obrigado a Alexei Letov por relatar este erro.

V1.22 (1 de novembro de 2008)

  • Classe atualizada para trabalhar com Scintilla v1.77. Novas mensagens envolvidas incluem: SCI_GETCHARACTERPOINTER, SCI_SETKEYSUNICODE & SCI_GETKEYSUNICODE
  • Reworked todas as funções Unicode chave que expor o gerenciamento do comprimento da corda e reimplementou-os para usar os parâmetros de saída CStringW. Também foram fornecidas versões ASCII equivalentes. Esta nova abordagem ajuda a aumentar o nível de abstração fornecido pela classe wrapper. No processo, a necessidade da função GetLineEx foi removida. Obrigado a Alexei Letov por solicitar esta atualização.

V1.21 (15 de junho de 2008)

  • O código agora compila usando de forma limpa Code Analysis (/analyze)
  • Código atualizado para compilar corretamente usando _ATL_CSTRING_EXPLICIT_CONSTRUCTORS define
  • O código agora só suporta o VC 2005 ou posterior.

V1.20 (19 de março de 2008)

  • Classe atualizada para trabalhar com o Scintilla v1.76. Novas mensagens envolvidas incluem: SCI_COPYALLOWLINE.
  • Detalhes atualizados dos direitos autorais.
  • Código atualizado para limpar compilação no VC 2008.
  • Removido VC 6 estilo classwizard comentários do código.
  • Atualizou o ícone do documento do aplicativo da amostra.
  • Corrigido um erro de cópia e colar no CScintillaView :: PrintPage onde o valor da margem incorreta estava sendo usado no cálculo de "rfPrint.rc.left". Obrigado a Steve Arnold por relatar este erro.
  • Corrigido um aviso de nível 4 quando o código é compilado no VC 6.

V1.19 (28 de novembro de 2007)

  • Classe atualizada para trabalhar com Scintilla v1.75. Novas mensagens envolvidas incluem: SCI_INDICSETUNDER, SCI_INDICGETUNDER, new behavior for SCI_SETINDENTATIONGUIDES & SCI_GETINDENTATIONGUIDES, SCI_SETSCROLLWIDTHTRACKING, SCI_GETSCROLLWIDTHTRACKING, SCI_DELWORDRIGHTEND, SCI_SETCARETSTYLE, SCI_GETCARETSTYLE, SCI_SETINDICATORCURRENT, SCI_SETINDICATORVALUE, SCI_INDICATORFILLRANGE, SCI_INDICATORCLEARRANGE, SCI_INDICATORALLONFOR, SCI_INDICATORVALUEAT, SCI_INDICATORSTART, SCI_INDICATOREND, SCI_SETPOSITIONCACHE & SCI_GETPOSITIONCACHE
  • A amostra de preenchimento automático em CScintillaDemoView :: OnCharAdded foi ampliada para mostrar outro estilo de conclusão automática. Obrigado a alessandro limonta por sugerir esta atualização.

V1.18 (11 de junho de 2007)

  • O programa de demonstração incluído no download agora é compilado com o VC 2005 SP1
  • Adição de um pré-processador SCINTILLADOCVIEW_EXT_CLASS para permitir que as classes sejam mais facilmente usadas em uma extensão DLL.
  • Adição de uma macro de préprocessador SCINTILLACTRL_EXT_CLASS para permitir que as classes sejam mais facilmente usadas em uma extensão DLL.
  • Detalhes atualizados dos direitos autorais.
  • CScintillaCtrl::GetSelText now uses CString::GetBufferSetLength para evitar ter que alocar um buffer intermediário. Graças a Jochen Neubeck por relatar esta otimização.
  • Classe atualizada para trabalhar com o Scintilla v1.73. Novas mensagens envolvidas incluem: SCI_STYLEGETFORE, SCI_STYLEGETBACK, SCI_STYLEGETBOLD, SCI_STYLEGETITALIC, SCI_STYLEGETSIZE, SCI_STYLEGETFONT, SCI_STYLEGETEOLFILLED, SCI_STYLEGETUNDERLINE, SCI_STYLEGETCASE, SCI_STYLEGETCHARACTERSET, SCI_STYLEGETVISIBLE, SCI_STYLEGETCHANGEABLE, SCI_STYLEGETHOTSPOT, SCI_GETSELEOLFILLED, SCI_SETSELEOLFILLED, SCI_GETHOTSPOTACTIVEFORE, SCI_GETHOTSPOTACTIVEBACK, SCI_GETHOTSPOTACTIVEUNDERLINE & SCI_GETHOTSPOTSINGLELINE

V1.17 (17 de setembro de 2006)

  • Atualizado o CScintillaView::OnReplaceSel and CScintillaView::OnReplaceAll implementações para usar TargetFromSelection e ReplaceTargetRE/ReplaceTarget. Graças a Matt Spear por relatar este problema.
  • Corrigido um erro em UTF82W (e W2UTF8) onde, se GetLine é chamado em uma compilação Unicode para o final do arquivo (ou seja, uma linha com um comprimento de 0), a função UTF82W não alocaria nenhum buffer, mas ainda escrevia erroneamente um caractere terminando nulo. Além disso, o chamador (GetLine) tentará desalocar o buffer que nunca foi alocado. Obrigado a Scott Kelley por ter visado esse insidioso erro.
  • Adicionado de um método GetLineEx que define explicitamente o primeiro valor WORD na cadeia de texto para o tamanho máximo. Isso evita que o código do cliente tenha que lidar com a estranha semântica da mensagem EM_GETLINE. Obrigado a Scott Kelley por fornecer esta ótima adição.
  • O código verificado implementa toda a funcionalidade do Scintilla v1.71

27 de julho de 2006

  • Atualização menor para o aplicativo de exemplo para corrigir um ASSERT relacionado à formatação do recurso de string IDR_SCINTITYPE. Graças a Matt Spear por relatar este problema.

V1.16 (29 de junho de 2006)

  • O controle comum removido 6 se manifesta como este está em conflito com a compilação do VC 2005.
  • O código agora usa novos moldes de estilo C ++ em vez de moldes C de estilo antigo, quando necessário.
  • Código do construtor CSinctillaCtrl otimizado
  • Atualizou o código para limpar a compilação no VC 2005
  • Corrigido um erro no programa de exemplo quando você invoca pré-visualização quando compilado usando o VC 2005.
  • O código agora suporta configurações persistentes de margem. Obrigado a Krasimir Stoychev por esta atualização.

V1.15 (6 de junho de 2006)

  • Atualizado as classes wrapper para funcionar corretamente quando compilado para Unicode.

V1.14 (5 de junho de 2006)

  • Classe atualizada para trabalhar com Scintilla v1.69. Novas mensagens envolvidas incluem: SCI_MARKERSETALPHA, SCI_GETSELALPHA and SCI_SETSELALPHA.

V1.13 (22 de maio de 2006)

  • Corrigido um problema de cintilação quando o CScintillaView é redimensionado. Graças a Michael Gunlock por relatar este problema.

V1.12 (14 de março de 2006)

  • Classe atualizada para trabalhar com Scintilla v1.68. Novas mensagens envolvidas incluem: SCI_CALLTIPUSESTYLE, SCI_SETCARETLINEBACKALPHA and SCI_GETCARETLINEBACKALPHA.
  • Atualizou a função interna CScintillaView :: SameAsSelected para suportar expressões regulares. Obrigado a Greg Smith por esta atualização.

V1.11 (2 de fevereiro de 2006)

  • Atualização menor para CScintillaView para permitir a exclusão de texto quando não há nada selecionado. Graças a Alexander Kirillov por relatar este erro.

V1.10 (16 January 2006)

  • Removed an unused "rSetup" variable in CScintillaView::PrintPage
  • Optimized code in CScintillaView::PrintPage and CScintillaView::OnFilePageSetup which determines if metric or imperial measurements are being used. Now a boolean member variable of CScintillaView called m_bUsingMetric which by default picks up the control panel preference is provided. This allows client code to change this value to customize how measurements are specified. Thanks to Greg Smith for reporting this issue.
  • Fixed a small typo in CScintillaView::PrintHeader and PrintFooter. Also explicitly uses the TA_TOP flag in combination with TA_LEFT when setting alignment settings for header and footer text. Again thanks to Greg Smith for reporting this.
  • Scintilla find / replace state is now stored in a standard global variable instead of using the CProcessLocal template which it was using previously. This is no longer required since it was used to provide Win32s support for MFC on older versions of MFC. Since Win32s is no longer supported by MFC, there is no need to use this mechanism any more.

V1.09 (8 January 2006)

  • O diálogo Find / Replace e o estado associado agora são mantidos fora do CScintillaView. Isso significa que, se você tiver vários CScintillaView em seu aplicativo, eles compartilham a caixa de diálogo encontrar / substituir, que é o tipo padrão de UI que você normalmente espera para isso. Graças a Greg Smith por relatar este problema.
  • O diálogo Find / Replace agora está fechado quando o último CScintillaView é destruído. Obrigado a Greg Smith por ter relatado esse problema.

V1.08 (6 de janeiro de 2006)

  • Removido algum código desnecessário do CScintillaView :: OnEndPrinting. Graças a Greg Smith por detectar esta questão.
  • Atualizou a documentação para usar o mesmo estilo do site

V1.07 (3 de janeiro de 2006)

  • Classe atualizada para trabalhar com Scintilla v1.67. Novas mensagens envolvidas incluem: SCI_MARKERADDSET, SCI_SETPASTECONVERTENDINGS, SCI_GETPASTECONVERTENDINGS, SCI_SELECTIONDUPLICATE and SCI_GETSTYLEBITSNEEDED.
  • Mensagens de direitos autorais atualizadas
  • Corrigido um erro onde a linha separadora no cabeçalho não estava sendo desenhada devido a problemas no código que calcula as coordenadas.
  • Adicionado duas variáveis de membros que decidem se os cabeçalhos e rodapés da impressora devem ser impressos (CScintillaView :: m_bPrintHeader e CScintillaView :: m_bPrintFooter). Você poderia, obviamente, obter o mesmo resultado ao derivar uma classe de CScintillaView e implementar métodos vazios PrintHeader e PrinterFooter !!!. Obrigado a Jason Elliott por sugerir esta atualização.
  • Otimizado a construção de variáveis de membros no CScintillaView :: CScintillaView e em CScintillaFindReplaceDlg::CScintillaFindReplaceDlg
  • CScintillaView::OnReplaceAll define a seleção para 0,0 antes de fazer a substituição do texto. Isso garante que todo o texto em um documento seja substituído. Também esta função agora não incomoda chamar TextNotFound no final da função se as substituições tiverem ocorrido. Obrigado a Jason Elliott por esta linda atualização.
  • Um parâmetro que indica se o texto está sendo substituído ou encontrado é agora enviado para CScintillaView::TextNotFound.

V1.06 (10 de julho de 2005)

  • Adição de uma função virtual, nomeadamente OnAutoCSelection, que lida com a SCN_AUTOCSELECTION mensagem de notificação que foi introduzida no Scintilla v1.63. Obrigado a Dan Petitt por sugerir esta atualização.
  • Classe atualizada para trabalhar com Scintilla v1.64.
  • Uma nova variável booleana chamada "m_bUseROFileAttributeDuringLoading" foi adicionado ao CScintillaView. Se este valor estiver configurado, o código verificará o atributo de arquivo somente leitura do arquivo que está sendo carregado e se estiver configurado, então o documento é marcado como somente leitura pela Scintilla. Ao fazer isso, qualquer tentativa de modificar o documento fará com que a função virtual OnModifyAttemptRO seja chamada. Isso permite que você solicite que o arquivo leia a gravação ou para verificar o arquivo de um sistema de controle de versão. Obrigado a Dan Petitt por sugerir esta atualização.
  • O aplicativo Demo agora demonstra como usar a notificação SCN_MODIFYATTEMPTRO.
  • Corrigido uma série de avisos quando o código é compilado usando o Visual Studio .NET 2003.
  • SetSavePoint e SetReadOnly chamadas agora são feitas em CSinctillaDoc :: OnSaveDocument em vez de CScintillaView :: Serialize. Isso garante que o controle somente seja reiniciado após uma gravação bem-sucedida.

30 de maio de 2005

  • Atualizou o aplicativo de exemplo para mostrar como lidar com as dicas de cancelar chamadas se uma visão perder o foco, for dimensionada ou movida. Isso é conseguido manipulando WM_ACTIVATE na classe de exibição e WM_SIZE e WM_MOVE na classe de quadro filho. Obrigado a Markus Werle por ter visto esta questão.

V1.05 (4 de março de 2005)

  • Corrigir no CSinctillaView :: PrintPage que agora classifica o problema da visualização impressa que não funciona nos arquivos M / MFC / view para scintilla. Obrigado a Frank Kiesel por relatar esta correção.

V1.04 (20 de dezembro de 2004)

  • Classe atualizada para trabalhar com Scintilla v1.62.
  • O aplicativo de exemplo agora inclui um manifesto de controle comum 6
  • O aplicativo de exemplo agora inclui um exemplo de autocompleção de scintilla. Quando você digita "scintilla is " caso insensivelmente é exibida uma lista de preenchimento automático que permite "very cool", "easy" ou "way cool!!" to be entered. 
  • O aplicativo de exemplo agora inclui um exemplo de guias de scintilla. Sempre que você passa o mouse sobre o texto que é "author " caso insensivelmente, uma dica de chamada com o texto "PJ Naughter" é exibido.

V1.03 (13 de agosto de 2004)

  • Realizou todas as funções não virtuais restantes relacionadas ao Localizar e Substituir no CScintillaView virtual.
  • A função CScintillaView::TextNotFound agora passa pelos parâmetros usados para a pesquisa. Obrigado a Dmitry Naumov por esta atualização.
  • Removido a função CScintillaView :: OnTextNotFound como todo o trabalho para ele é alcançado usando a função TextNotFound.
  • A criação do diálogo find / replace ocorre agora em uma nova função virtual "CScintillaViewCreateFindReplaceDialog". Mais uma vez, graças a Dmitry Naumov por esta atualização.

V1.02 (6 de junho de 2004)

  • Classe atualizada para trabalhar com Scintilla v1.61.

V1.01 (18 de março de 2004)

  • Atualizou as funções do Find Next Find e Find Previous marker. Agora corre corretamente para os marcadores seguintes e anteriores quando um marcador está na linha atual.
  • Atualizou a mensagem de envio de mensagens do exemplo para Scintilla a partir da janela CMainFrame de nível superior.

V1.0 (17 de julho de 1998)

  • Lançamento público inicial