【发布时间】:2023-03-16 14:10:01
【问题描述】:
我正在尝试使用 Visual Stdio 2008 pro 和带有 .NET 2.0 的 c# 为我的汽车中的 Windows CE 5.0 设备开发智能设备程序。我想使用 AddFontResourceEx 添加字体,但我无法让它工作。代码如下:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private const uint FR_PRIVATE=0x10;
[DllImport("GDI32.dll",EntryPoint="AddFontResourceEx")]
static extern int AddFontResourceEx(string lpszFilename, uint fl, IntPtr pdv);
private void button1_Click(object sender, EventArgs e)
{
AddFontResourceEx(".\\ELEPHNT.TTF", FR_PRIVATE, IntPtr.Zero);
label1.ForeColor = Color.FromArgb(155, 25, 34);
label1.Font = new Font("ELEPHNT.TTF", 18, FontStyle.Regular);
label1.Text = "Hello world!";
}
}
它构建成功,我可以运行程序,但字体不会改变。我将字体文件添加到程序所在的同一目录中。你能告诉我有什么问题吗?
【问题讨论】:
-
你不能在 C# 代码中使用 C++ 声明,你需要使用 pinvoke 和兼容的数据类型:
-
1.必须 P/Invoke coredll.dll 而不是 gdi32.dll 2. 字体文件的地址应该是 @\\MMC_STORAGE\\KORN.TTF 3. 我设备中的字体是位图字体而不是矢量字体 4.入口点应该是 AddFontResourceW 5. 字体标签应该由它的字体名称而不是由字体文件的名称调用 6. AddFontResource 的其他语句不应在末尾有 Ex 7. 模拟器应该在挂起后软重置,而不仅仅是由框架的闭合十字退出。
标签: c# visual-studio-2008 windows-ce .net-2.0 smart-device