Уроки Iczelion'а


         

Урок 33 . Контрол Richedit: Основы. - часть 12


invoke LoadLibrary, addr RichEditDLL .if eax!=0 Mov hRichEdit, eax invoke WinMain, hInstance, 0,0, SW_SHOWDEFAULT invoke FreeLibrary, hRichEdit .else invoke MessageBox, 0, addr NoRichEdit, addr AppName, \ MB_OK or MB_ICONERROR .endif invoke ExitProcess, eax

После того, как dll успешно загружена, мы переходим к созданию нормального окна, которое будет родительским richedit контрола. Внутри обработчика WM_CREATE, мы создаем richedit контрол:

invoke CreateWindowEx, WS_EX_CLIENTEDGE, addr RichEditClass, 0,\ WS_CHILD or WS_VISIBLE or ES_MULTILINE or WS_VSCROLL or WS_HSCROLL or ES_NOHIDESEL,\ CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hWnd, RichEditID,\ hInstance, 0 Mov hwndRichEdit, eax

Обратите внимание, что мы определяем стиль ES_MULTILINE, иначе контрол будет одиночно-выровненный.

invoke SendMessage, hwndRichEdit, EM_LIMITTEXT,-1,0

После того, как richedit контрол создан, мы должны установить в нем новый текстовый предел. По умолчанию, richedit контрол имеет предел текста 64КБ, такой же как в простых многострочных Edit контролах. Мы должны расширить этот предел, чтобы оперировать с большими файлами. В вышеупомянутой строке, я определяю -1, которая составляет 0FFFFFFFFh, очень большое значение.

invoke SetColor

Затем, мы устанавливаем цвет текста и фона. Так как эта операция может быть вызвана и из другой части программы, я поместил код в функцию SetColor.

SetColor proc LOCAL cfm:CHARFORMAT invoke SendMessage, hwndRichEdit, EM_SETBKGNDCOLOR, \ 0, BackgroundColor

Установка цвета фона richedit контрола это прямая операция: просто пошлите сообщение EM_SETBKGNDCOLOR richedit контролу. (Если Вы используете многострочные Edit контролы, Вы должны обрабатывать WM_CTLCOLOREDIT). Заданный по умолчанию цвет фона белый.

invoke RtlZeroMemory, addr cfm, sizeof cfm Mov cfm.cbSize, sizeof cfm Mov cfm.dwMask, CFM_COLOR push TextColor pop cfm.crTextColor

После того, как цвет фона установлен, мы заполняем члены структуры CHARFORMAT, чтобы установить цвет текста. Обратите внимание, что мы заполняем cbSize размером структуры, так что richedit контрол знает, что мы посылаем ему CHARFORMAT, а не CHARFORMAT2. DwMask имеет только один флаг, CFM_COLOR, потому что мы только хотим установить цвет текста, и crTextColor заполнен значением желаемого цвета текста.




Содержание  Назад  Вперед