我正在编写一个小应用程序,需要很小并在旧系统上运行。这就是我不能使用.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”
答案 0 :(得分:6)
TextBox类没有SelectionColor属性。您正在使用RichTextBox。
在本机代码中使用丰富的编辑控件EM_SETCHARFORMAT消息。
答案 1 :(得分:5)
一开始,只有黑暗和混乱。用户大声喊道:“这些用户界面都是不同的,一个人学到的东西不能用在另一个用户身上。它们对我们的鼻孔是一种恶臭,没有人能够遵守它们!”
PARC的科学家们听到了用户的哭声,并发明了现代的WYSIWYG GUI。他们看了看,看到UI是一致的。并且切割在一个应用程序中,就像在另一个应用程序中一样,粘贴等等。所有命令,Quit和Help,在他们指定的地方。这很好。
苹果和微软窃取了PARC的工作,但它很受欢迎,这是一件好事,用户很高兴,他们可以剪切和粘贴,点击任何按钮或控件,在一个应用程序中知道它他们在别人身上知道了。并且,多年来,这种状况仍在继续,用户满意。
但软件设计师和开发人员都惊呆了,撕裂并撕裂衣服,并用灰烬覆盖自己。因为他们的软件易于使用,用户确实知道如何使用它。它们在按钮,滚动条和菜单之间没有区别,因为它们是标准的,外观和感觉。一个应用程序中的菜单看起来像另一个应用程序中的菜单。一个应用程序中的选定文本看起来像另一个应用程序中的选定文本。
设计师,开发人员以及营销人员都取得了成功。对于他们来说,Adobe听取了他们的意见,并发明了Flash。微软确实听取了他们的意见,并发明了Silverlight和WPF。苹果表示,没有人会通过Cocoa为OS X或iPhone或iPad做应用程序,因为正如PARC所说的那样。但他们在很大程度上被忽视了。
所以,混乱又回到了世界。
所以不 - 您无法更改标准控件的选择颜色 - 包括本机EDIT和RichText控件。它们来自较早的时间,例如字体和颜色用于标准用途的GUI,用户可以将其设置为适合它们。
您可以更改richedit控件中文本的颜色,但选择颜色是其中一个用户设置,虽然可以通过子类更改,但是比一行“SetTheSelectionColor”调用要多得多。