Какая альтернатива WINAPI для .NET TextBox.SelectionColor? - PullRequest
0 голосов
/ 28 марта 2011

Я пишу небольшое приложение, которое должно быть небольшим и работать на старых системах. Вот почему я не могу использовать .NET.

Как изменить цвет элемента управления «Редактировать»?

Вот код .NET:

textBoxLog.SelectionColor = color;
textBoxLog.AppendText(String.Format(s + "\n", parameters));

Обновление

Хорошо, так что мне удалось поместить элемент управления в мою форму. Как мне использовать сообщение EM_SETCHARFORMAT?

LoadLibrary(TEXT("Riched32.dll"));
CreateWindow("richedit", text, WS_VISIBLE | WS_CHILD | type, left, top, width, height, parent, NULL, NULL, NULL);

Обновление 2

Я решил это. Оказалось довольно легко:

SendMessage( textBoxLog , EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&RedFont);

Где RedFont

CHARFORMAT cf;
memset( &cf, 0, sizeof cf );
cf.cbSize = sizeof cf;
cf.dwMask = CFM_COLOR;
cf.crTextColor = RGB(255,0,0);
CHARFORMAT RedFont = cf;

Не забудьте включить "richedit.h"

Ответы [ 2 ]

6 голосов
/ 28 марта 2011

Класс TextBox не имеет свойства SelectionColor. Вы используете RichTextBox.

Использовать элемент управления расширенного редактирования в собственном коде, сообщение EM_SETCHARFORMAT.

5 голосов
/ 28 марта 2011

В начале была только тьма и хаос. И вот пользователи закричали: «Все эти интерфейсы разные, и то, что один учит в одном, нельзя применить в другом. Они - зловоние наших ноздрей, и никто не может их соблюдать!»

Ученые из PARC услышали крики пользователей и изобрели современный графический интерфейс WYSIWYG. И они посмотрели и увидели, что пользовательский интерфейс был последовательным. И вырезать было в одном приложении, как было в другом, и так была паста и так далее. Все команды, Выйти и Помочь среди них, где на их назначенном месте. и это было хорошо.

Apple и Microsoft украли работу PARC, но сделали ее популярной, и это хорошо, и пользователи были счастливы, они могли вырезать и вставлять и нажимать на любую кнопку или элемент управления, зная, что в одном приложении они знали это в других.

И в течение многих лет такое положение дел продолжалось, и пользователи были довольны.

Но дизайнеры и разработчики программного обеспечения были в ужасе, разорвали и разорвали свою одежду и покрылись пеплом. Их программное обеспечение было простым в использовании, и пользователи знали, как его использовать. И их не было никакой разницы между кнопками, полосами прокрутки и меню, потому что они были стандартными, на вид и на ощупь. И меню в одном приложении выглядело как меню в другом приложении. И выделенный текст в одном приложении выглядит как выделенный текст в другом.

И дизайнеры, и разработчики, и действительно маркетологи, добились успеха. Adobe слушала их и изобрела Flash. И Microsoft действительно послушала их и изобрела Silverlight и WPF. И Apple сказала, что никто не будет делать Приложения для OS X, iPhone или даже iPad, но только через Cocoa, потому что, как сказал PARC. Но они были в значительной степени проигнорированы.

И снова хаос вернулся в мир.

Так что нет - вы не можете изменить цвет выделения стандартных элементов управления - включая собственные элементы управления EDIT и RichText. Они пришли из более раннего времени, когда такие вещи, как шрифт и цвет, использовались в графическом интерфейсе для стандартных целей, когда пользователь мог установить их, как они считают нужным.

Вы можете изменить цвет текста в элементе управления richedit, но цвет выделения является одной из этих пользовательских настроек, и хотя он может быть изменен с помощью подклассов, это намного больше работы, чем вызов SetTheSelectionColor из одной строки.

...