RichEdit v4.1-6.0 - реализация цветного подчеркивания.
От: ViperYa  
Дата: 04.10.10 10:29
Оценка:
Всем привет.
Использовал в проекте-редакторе стандартный 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.