Api și freebasic

API și FreeBasic. (RichEdit: Basic)

La controlul poate fi considerat ca o instrumente de editare îmbunătățite funcțional. Acesta oferă multe caracteristici utile care nu se găsesc în instrumente simple de editare, cum ar fi capacitatea de a utiliza mai multe tipuri și dimensiuni de font, nivel mai profund undo / redo, operațiunea de căutare de text, OLE încorporate obiecte, suport pentru editarea prin tragere și plasare (drag-and-drop) etc. Deoarece controlul richedit are atât de multe caracteristici, este stocat într-un DLL-bibliotecă separată. Acest lucru înseamnă, de asemenea, că, în scopul de a le utiliza, pur si simplu nu este suficient pentru a provoca InitCommonControls. în alte comune de control. Trebuie să apelați LoadLibrary. pentru a descărca DLL richedit.

Problema este că, în prezent, există trei versiuni de control richedit. Versiunea 1,2 și 3. Tabelul de mai jos prezintă numele DLL pentru fiecare versiune.

Numele clasei Richedit'a

Tabelul de mai sus este, în orice caz, nu este complet: am enumerat mai importante caracteristici.

Crearea kontrola richedit

După încărcarea richedit.dll, puteți apela CreateWindowEx. pentru a crea un control. Puteți utiliza instrumentele de editare în stiluri CreateWindowEx și stiluri de ferestre comune, cu excepția ES_LOWERCASE, ES_UPPERCASE și ES_OEMCONVERT.

Pentru a seta textul și culorile de fundal implicite

Este posibil să aveți o problemă cu setarea culori de text și de fundal în instrumentele de editare. Dar această problemă a fost stabilită în controlul richedit. Pentru a seta fundal de control de culoare richedit, trebuie să-l trimită EM_SETBKGNDCOLOR. Acest mesaj are următoarea sintaxă:

WParam == culoare. O valoare de 0 în acest parametru indică faptul că Windows utilizează valoarea de culoare a lParam ca culoarea de fundal. Dacă această valoare este nenul, Windows utilizează culoarea de fundal de sistem Windows. Din moment ce trimite acest mesaj pentru a schimba culoarea de fundal, avem nevoie pentru a pune 0 în wParam.
LParam == COLORREF determină structura culorii pe care doriți să îl instalați, dacă wParam - 0.

De exemplu, dacă am vrut să seta culoarea de fundal albastru, aș pune acest cod:

Setarea culorii textului, controlul richedit creează un nou mesaj, EM_SETCHARFORMAT. Acest mesaj controlează formatarea textului în intervalul de caractere pentru a aloca întregului text. Acest mesaj are următoarea sintaxă:

WParam == opțiuni de formatare:

Operațiunea afectează tot textul în controlul.

Operațiunea afectează numai text selectat

SCF_WORD sau SCF_SELECTION

Aceasta afectează cuvântul în selecție. În cazul în care nimic nu este alocat, operațiunea va afecta cuvântul potrivit la poziția cursorului. SCF_WORD pavilion ar trebui să fie utilizat cu SCF_SELECTION.

LParam == pointer la o structură sau CHARFORMAT CHARFORMAT2. care definește formatarea textului pe care doriți să o aplicați. CHARFORMAT2 disponibil numai pentru richedit 2.0 și de mai sus. Acest lucru nu înseamnă că ar trebui să utilizați CHARFORMAT2 cu RichEdit 2.0 sau mai mare. Puteți utiliza în continuare CHARFORMAT. dacă sunt adăugate la caracteristicile CHARFORMAT2 nu aveți nevoie.

dimensiune structura. Controlul RichEdit folosește acest câmp pentru a determina versiunea structurii, indiferent dacă acesta este sau CHARFORMAT CHARFORMAT2

steaguri biți care determina care dintre următorii membri sunt corecte.

matrice de caractere cu șir terminat-nul care specifică numele fontului

Din studiul structurii, veți vedea că putem schimba efectele de text (bold, italic, ratari, subliniat), culoarea textului (crTextColor) și font (tip / dimensiune / set de caractere). Text CFE_RPOTECTED pavilion. Acesta marcat ca fiind protejate, ceea ce înseamnă că, atunci când un utilizator încearcă să-l schimbe, fereastra părinte va fi trimis un mesaj de notificare EN_PROTECTED. Și puteți fie permite sau refuza modificările.

CHARFORMAT2 adaugă un număr mare de stiluri de text, cum ar fi greutatea font, spațierea, culoarea de fundal de text, kerning, etc. Dacă nu aveți nevoie de aceste funcții suplimentare, trebuie doar să utilizați CHARFORMAT.

Pentru a seta formatul de text, trebuie să specificați intervalul de text la care doriți să aplicați formatul. Controlul Richedit atribuie fiecărui caracter un număr (ID), începând cu 0: primul caracter al identificatorului este 0, al doilea - 1, și așa mai departe. Pentru a specifica un interval de text, trebuie să dea un control richedit, două numere: identificatorul primului și ultimul caracter al gamei. Pentru a aplica formatarea la EM_SETCHARFORMAT textului. aveți 3 opțiuni:
  1. Se aplică la tot textul (SCF_ALL)
  2. Se aplică la textul selectat (SCF_SELECTION)
  3. Se aplică la întregul cuvânt în zona selectată (SCF_WORD sau SCF_SELECTION)

Primul și al doilea alegeri directe, acesta din urmă necesită unele explicații. În cazul în care selecția curentă include numai unul sau mai multe caractere în cuvânt, dar nu un cuvânt întreg, care determină pavilion SCF_WORD + SCF_SELECTION. se aplică formatarea textului întregului cuvânt. Chiar dacă nu este selectat nimic, formatarea se aplică cuvântul întreg peste care punctul de inserare.

Pentru a utiliza EM_SETCHARFORMAT. Trebuie să completeze o anumită structură de membri CHARFORMAT (sau CHARFORMAT2). De exemplu, dacă dorim să setați culoarea textului, vom umple structura CHARFORMAT după cum urmează:

Acest fragment de cod stabilește textul de control de culoare richedit în albastru. Vă rugăm să rețineți că în cazul în care nu există nici un text de control richedit, atunci când vom trimite un mesaj EM_SETCHARFORMAT. textul introdus în controlul richedit după rapoartele vor utiliza formatul de text specificat cu mesajul EM_SETCHARFORMAT.

Setarea textului / salvarea textului

Cei care au folosit deja controalele de editare, sunt, probabil, familiarizat cu WM_GETTEXT / WM_SETTEXT. pentru a seta / obține textul în \ controlului. Această metodă funcționează cu un control richedit, dar nu pot lucra cu fișiere de dimensiuni mari. Editare de control limitează textul care poate fi introdus în ea 64K, dar controlul richedit poate accepta texte mult mai mult. Nu ar fi decizia corecta de a aloca un bloc foarte mare de memorie (cum ar fi 10 MB) pentru a obține textul folosind WM_GETTEXT. Controlul Richedit oferă o nouă abordare a acestei metode, cum ar fi un flux de text.

Ambele mesaje EM_STREAMIN EM_STREAMOUT și de a folosi aceeași sintaxă:

Datele din RTF (format text îmbogățit)