【发布时间】:2014-07-23 19:03:03
【问题描述】:
我在自己的 WinAPI 项目上工作并使用 API 语言 C/C++ 的 ANSI 版本,但是当我在具有非俄罗斯版本窗口的计算机上运行程序时遇到了这个问题。我看到的是不可读的符号而不是俄语字母。
我尝试使用 AddFontResourceEx 方法,在俄语版本的 Windows 上它可以正常工作,但是当我在非俄语版本的 Windows 上运行时,我收到错误“Font 1 Error”并且我看到不可读的符号。 我该如何解决这个问题?
字体“MY_ARIAL.TTF”在带有exe文件的文件夹中
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static LOGFONT lf1;
switch (uMsg)
{
case WM_CREATE:
if(AddFontResourceEx("MY_ARIAL.TTF", FR_PRIVATE, NULL)!=0)
{
SendMessage(HWND_BROADCAST, WM_FONTCHANGE,0,0);
lstrcpy((LPSTR)&lf1.lfFaceName, "My_Arial");
}
else
MessageBox(hWnd,"Font 1 Error","error",MB_OK);
}
}
【问题讨论】:
-
并使用 ANSI 版本 - 你的问题。除非您计划支持将近 20 年历史的 Windows 版本,否则请始终使用宽版本的 winapi 函数,在这种情况下您应该使用
TCHARs。