借助于Sertac Akyuz它,似乎直接原因与charset有关\bullet:在我的本地化Windows中,\bullet输入Alt(0149)总是得到输入\fcharset134,并且尝试通过改变其字体EM_SETCHARFORMAT总是失败(好吧,颜色,大小,样式确实可以改变但不是字体系列名称).
因此,最简单的解决方法是首先重置字符集,然后更改字体.
注意:应该使用RichEdit (版本> = 4.1)!
注意:RichEdit版本可以在MSDN的About Rich Edit Controls,Murray Sargent的MSDN Blog RichEdit版本和RichEdit版本更新到7.0中找到.后面的页面提到RichEdit版本高于4.1.作为测试,我将使用Office 2010的RICHED20.DLL与应用程序一起复制到Windows 2000,一切都像一个魅力!
procedure TMainForm.ButtonFontClick(Sender: TObject);
var
format: TCharFormat2;
begin
if dlgFontCdxTxt.Execute then
begin
FillChar(format, sizeof(format), 0);
format.cbSize:= Sizeof(format);
format.dwMask:= CFM_CHARSET;
format.bCharSet := 1; // or 0;
redtTextBlock.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Integer(@format));
FillChar(format, sizeof(format), 0);
format.cbSize:= Sizeof(format);
format.dwMask:= CFM_FACE;
StrPLCopy(format.szFaceName, dlgFontCdxTxt.Font.Name, High(format.szFaceName));
redtTextBlock.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Integer(@format));
end;
redtTextBlock.SetFocus;
end;
Run Code Online (Sandbox Code Playgroud)
==================================================
根据维基百科,WordPad …
我想知道为什么TFontDialog提供的字体少于Screen.Fonts?(例如,Arial*字体,漫画字体等在TFontDialog中不显示)
似乎TFontDialog给出的字体列表与写字板相同,而Screen.Fonts给出的字体列表与Word基本相同.
非常感谢您的见解!
PS:Delphi XE,Windows 7
PS:相关的SO主题:
PS:相关网页:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
lst1: TListBox;
dlgFont1: TFontDialog;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
lst1.Items.AddStrings(Screen.Fonts);
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
dlgFont1.Device := fdBoth;
if dlgFont1.Execute then
begin
end; …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个简短的VBScript,它会打开"calc.exe"和"wordpad.exe".好吧问题是VBScript不会让我打开"wordpad.exe".我试图以管理员身份运行脚本,但这没有帮助.
我的脚本看起来像这样:
Set WshShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run "C:\Program Files\Windows NT\Accessories\wordpad.exe"
WSHShell.Run "C:\Windows\System32\calc.exe"
x=msgbox("Test",4096,Test)
Run Code Online (Sandbox Code Playgroud)
我也试过定义这样的路径:
WSHShell.Run ""C:\Program Files\Windows NT\Accessories\wordpad.exe""
Run Code Online (Sandbox Code Playgroud)
也行不通.我收到的消息是"预期结束声明"
是否有解决方案通过其路径打开"wordpad.exe"?
亲切的问候
这就是WordPad在Windows 7中的样子:
http://cache.gawker.com/assets/images/lifehacker/2009/01/win7_wordpad.jpg
色带也在油漆中.这让我觉得功能区是"隐藏"在dll文件中的某个地方,我可以导入到我的C#应用程序中.这是真的?如果没有,微软是如何制作功能区的.
是的我知道已经有公司为C#制作了功能区,但我想只使用P/Invoke将它添加到我的应用程序中.
我试图找到一种可靠的方法来控制Windows Wordpad,我成功地将其作为子窗口嵌入到应用程序中.
我想在文档打开后执行的一个命令是"打印预览".PostMessage似乎是一个很好的工具,但我很难找到Wordpad接受的命令参考但没有成功,更不用说可以在WindowsXP机器以及Windows Vista,7和8上运行的命令.
我特别感兴趣的命令列表是:
有人可以分享一些关于使用消息控制Wordpad的提示,还是可能以不同的方式?