Richedit Msftedit странная граница

Я получаю действительно странное поведение, когда использую более одного элемента управления RichEdit:

Первый ричедит - нижний

LoadLibrary("Msftedit.dll");
RichEdit = CreateWindow("RICHEDIT50W", "", ES_READONLY | ES_MULTILINE | WS_HSCROLL | WS_VSCROLL | WS_VISIBLE | WS_CHILD | WS_BORDER | WS_TABSTOP, 5, 370, 600, 300, hwnd, NULL, NULL, NULL);

RichEdit2 = CreateWindow("RICHEDIT50W", "", /*0x550081C4*/ 0x50810804, 610, 65, 600, 300, hwnd, NULL, NULL, NULL);

Первый EditControl работает так, как должен, однако у второго есть странная граница вокруг него.
Сначала я попытался использовать те же стили, что и для первого richedit, затем я узнал стиль, используя Spy ++.
Даже если у меня одинаковые стили, я получаю разные результаты, вероятно, так же, как если бы я использовал расширенный стиль WS_EX_CLIENTEDGE для второго ричхита.
Я даже попытался освободить библиотеку и загрузить ее снова, но с тем же результатом.

Спасибо всем заранее!

0

Решение

Так что я понял это. Понятия не имею почему, но второй RichEdit каким-то образом получает стиль WS_EX_CLIENTEDGE после его создания, поэтому я просто удаляю стиль следующим образом:

LONG lExStyle = GetWindowLong(RichEdit2, GWL_EXSTYLE);
lExStyle &= ~WS_EX_CLIENTEDGE;
SetWindowLong(RichEdit2, GWL_EXSTYLE, lExStyle);

Теперь RichEdit выглядит так же, как и первый. Но я понятия не имею, откуда взялся этот стиль.

1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector