Всем привет.
Использовал в проекте-редакторе стандартный RichTextBox.
Подчеркивание текста было реализовано при помощи API — SendMessage(Handle, EM_SETCHARFORMAT, SCF_SELECTION, CHARFORMAT2).
Все работало как необходимо. НО в связи с появлением новых версий RichEdit было решено использовать новые библиотеки("msftedit.dll", "RichEd20.dll" v6.0)
IntPtr mHandle = IntPtr.Zero;
protected override CreateParams CreateParams
{
get
{
if (this.mHandle == IntPtr.Zero)
{
//load the library to obtain an instance of the RichEdit50 class.
this.mHandle = LoadLibrary("msftedit.dll");
}
//If module loaded, reset ClassName.
if (this.mHandle != IntPtr.Zero)
{
CreateParams cParams = base.CreateParams;
// Check Unicode or ANSI system and set appropriate ClassName.
if (Marshal.SystemDefaultCharSize == 1)
{
cParams.ClassName = "RichEdit50A";
}
else
{
cParams.ClassName = "RichEdit50W";
}
return cParams;
}
else // Module wasnt loaded, return default .NET RichEdit20 CreateParams.
{
return base.CreateParams;
}
}
}
~DocumentRichTextBox()
{
if (mHandle != IntPtr.Zero)
{
FreeLibrary(mHandle);
}
}
[DllImport("kernel32.dll", SetLastError = true)]
private static extern IntPtr LoadLibrary(String lpFileName);
[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool FreeLibrary(IntPtr hModule);
, однако теперь у подчеркивание отсутствует текст.
В MSDN не написано о каком-либо "обрезе" функционала RichEdit, как раз наоборот. В связи с этим вопрос: Как можно реализовать ЦВЕТНОЕ подчеркивание в RichTextBox, используя RichEdit v4.1-6.0?
05.10.10 20:00: Перенесено модератором из '.NET' — AndrewVK