【发布时间】:2020-02-17 10:55:13
【问题描述】:
How to check which character sets (codepages) font supports (has letters for)? 中有一个关于使用 GetGlyphIndices 函数获取字符集的示例代码,但它没有说明如何调用它,特别是如何为 dc 分配字体。有人可以帮忙吗?
【问题讨论】:
How to check which character sets (codepages) font supports (has letters for)? 中有一个关于使用 GetGlyphIndices 函数获取字符集的示例代码,但它没有说明如何调用它,特别是如何为 dc 分配字体。有人可以帮忙吗?
【问题讨论】:
在 VCL 中,TCanvas.Handle 是画布的 HDC。
例如,TBitmap 具有 Canvas.Handle。您的主表单也有一个Canvas.Handle。
var
bm: TBitmap;
begin
bm := TBitmap.Create;
try
bm.Canvas.Font.Name := 'Segoe UI';
// Now you can use bm.Canvas.Handle as your HDC value
finally
bm.Free;
end;
或
procedure TForm1.FormPaint(Sender: TObject);
begin
Canvas.Font.Name := 'Segoe UI';
// Canvas.Handle is your HDC
end;
【讨论】:
Canvas(没有测试代码)。当然应该是bm.Canvas.Font.Name。除非我可以访问您正在使用的完整代码,否则我无法帮助您解决另一个问题。 (在这种情况下,您引用的错误消息非常出乎意料。)
Write和Writeln。您是否正在使用这些程序?它们只能在控制台应用程序中使用(或者当您使用旧版 Pascal I/O 时)。它们不能在 GUI 应用程序中使用(除非您使用传统的 Pascal I/O)。我怀疑这是你的问题。但是你当然不需要它们;它们仅用于快速和肮脏的输出/测试。您可以改用ShowMessage。