什么是WINAPI的.NET TextBox.SelectionColor的替代品?

Ale*_*lex 0 .net winapi textbox colors selection

我正在编写一个小应用程序,需要很小并在旧系统上运行.这就是我不能使用.NET的原因.

如何更改编辑控件的颜色?

这是.NET代码:

textBoxLog.SelectionColor = color;
textBoxLog.AppendText(String.Format(s + "\n", parameters));
Run Code Online (Sandbox Code Playgroud)

更新

好的,所以我设法将控件放在我的表单上.如何使用EM_SETCHARFORMAT消息?

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

更新2

我解决了 结果很简单:

SendMessage( textBoxLog , EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&RedFont);
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)

别忘了包含"richedit.h"

Han*_*ant 6

TextBox类没有SelectionColor属性.您正在使用RichTextBox.

在本机代码中使用丰富的编辑控件EM_SETCHARFORMAT消息.


Chr*_*cke 5

一开始,只有黑暗和混乱.并且用户大声喊道"这些UI都是不同的,一个人学到的东西不能用于另一个.它们对我们的鼻孔是一种恶臭,没有人能够遵守它们!"

PARC的科学家们听到了用户的哭声,并发明了现代的WYSIWYG GUI.他们看了看,看到UI是一致的.并且切割在一个应用程序中,就像在另一个应用程序中一样,粘贴等等.所有的命令,Quit和Help,在他们指定的地方.这很好.

苹果和微软窃取了PARC的工作,但它很受欢迎,这是一件好事,用户很高兴,他们可以剪切和粘贴,点击任何按钮或控件,在他们知道的一个应用程序中知道它在其他人.

并且,多年来,这种状况仍在继续,用户满意.

但是软件设计师和开发人员都惊呆了,撕裂并撕裂他们的衣服,并用灰烬覆盖自己.因为他们的软件易于使用,用户确实知道如何使用它.它们在按钮,滚动条和菜单之间没有区别,因为它们是标准的,外观和感觉.一个应用程序中的菜单看起来像另一个应用程序中的菜单.一个应用程序中的选定文本看起来像另一个应用程序中的选定文

设计师,开发人员,甚至是营销人员都是成功的.对于他们来说,Adobe听取了他们的意见,并发明了Flash.微软确实听取了他们的意见,并发明了Silverlight和WPF.苹果表示,没有人会通过Cocoa为OS X或iPhone或iPad制作应用程序,因为正如PARC所说的那样.但他们基本上被忽视了.

因此,混乱再次回到了世界.

所以不 - 您无法更改标准控件的选择颜色 - 包括本机EDIT和RichText控件.它们来自较早的时间,例如字体和颜色用于标准用途的GUI,用户可以将其设置为适合它们.

您可以更改richedit控件中文本的颜色,但选择颜色是这些用户设置之一,虽然它可以通过子类更改,但比一行"SetTheSelectionColor"调用要多得多.