トップページ > 過去ログ > 記事閲覧
外部フォントの使用
名前:ELSE 日時: 2011/05/19 01:21

いつもDXライブラリと、この掲示板にはお世話になっています。 現在ttfファイルを読みこみ、フォント描画を行おうとしています。 こちらの過去スレなどをたどったところ 「AddFontResourceEx」の使用でそれが可能だとしり、 さっそく試してみたところ error C3861: 'AddFontResourceEx': 識別子が見つかりませんでした というエラーにて使用できませんでした。 OSはXPなので使えると思ったのですが・・・ なにかインクルードするヘッダーがあるのでしょうか。 DxLib.hだけでは駄目だったので、ためしにwindows.h wingdi.hもインクルードしましたが、 やはり駄目でした。 なにか見落としがあるようでしたらご教授よろしくおねがいします・・・!

Page: 1 |

Re: 外部フォントの使用 ( No.1 )
名前:ELSE 日時:2011/05/19 01:28

上記ですが AddFontResource で対応できました。 が、ChangeFontでは使用できるのですが CreateFontToHandle で作成したフォントには適応されないようです。 どうしてなんでしょう・・・
Re: 外部フォントの使用 ( No.2 )
名前:naohiro19 日時:2011/05/21 10:13

#include <DxLib.h> class CFont { TCHAR* m_FileName; //フォントファイル TCHAR* m_FontName; //書体名 int m_x, m_y; //表示位置 int m_size; //大きさ public: //コンストラクタ CFont(TCHAR* FileName, TCHAR* FontName, int x, int y, int size); void DrawFont(TCHAR* str, int col); void DeleteFont(); }; #endif/*DEF_FONT_H_*/ //Font.cpp #include "Font.h" //コンストラクタ CFont::CFont(TCHAR* FileName, TCHAR* FontName, int x, int y, int size) { m_FileName = FileName; m_FontName = FontName; m_x = x; m_y = y; m_size = size; } //文字の描画 void CFont::DrawFont(TCHAR* str,int col) { //フォントファイル名を読み込む AddFontResource(m_FileName); //指定フォントに変更 ChangeFont(m_FontName); //指定フォントサイズに変更 SetFontSize(m_size); //指定したフォントで文字列を描画 DrawString(m_x, m_y,str, col); } //指定フォントの開放 void CFont::DeleteFont() { if( RemoveFontResource(m_FileName) ) PostMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0); } 以下使い方: //main.cpp #include <DxLib.h> #include "Font.h" int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nShowCmd) { //ウィンドウモードへ変更 ChangeWindowMode(true); if (DxLib_Init() == -1) // DXライブラリ初期化処理 return -1; // エラーが起きたら直ちに終了 //文字の大きさを設定(36) SetFontSize(36); //文字列を描画 DrawString(10, 200, "この文字はMS ゴシックです。", GetColor(255, 255, 255)); /// ********** フォントのロード ********** CFont font("azuki.ttf","あずきフォント", 10, 240, 36); font.DrawFont("この文字はあずきフォントです。", GetColor(255,255,255)); //キーの入力待ち WaitKey(); //フォントの解放 font.DeleteFont(); // DXライブラリ使用の終了処理 DxLib_End(); return 0; }
Re: 外部フォントの使用 ( No.3 )
名前:いっち 日時:2011/05/21 13:51

ELSEさん> 私の環境では再現しません。 AddFontResourceEx は問題なく使用できました。 AddFontResource が使用できていることを考えると、リンクやインクルードに問題は無いと思います。 原因としてはスペルミスが一番考えられるのですが・・・。 また、AddFontResource で読み込んだフォントを CreateFontToHandle で使用することもできました。 再現するソースとデータをご提供下さい。
Re: 外部フォントの使用 ( No.4 )
名前:ELSE 日時:2011/05/29 00:45

お返事がおくれました。 いろいろ試してみた結果、WinMain.cppでは問題なく利用でき、 別ファイル(Font.h, Font.cpp)内では error C3861: 'AddFontResourceEx': 識別子が見つかりませんでした というエラーが発生するようです。
Re: 外部フォントの使用 ( No.5 )
名前:いっち 日時:2011/05/29 11:11

Font.cpp 内に windows.h がインクルードされているかご確認下さい。 されているようですと、ちょっと原因がわかりません。 プロジェクトをを丸ごとアップロードして頂ければ私の環境でも確認してみます。
Re: 外部フォントの使用 ( No.6 )
名前:ELSE 日時:2011/05/29 15:22

windows.hのインクルードも試しましたが駄目なようです。 簡易ですが、ソースを書いてみます。 // WinMain.cpp #include "DxLib.h" #include "Font.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { 〜略〜 CFont font; font.initialize(); 〜略〜 } // Font.h #ifndef __FONT__ #define __FONT__ #include "DxLib.h" class CFont { public: void initialize(); }; #endif // Font.cpp #include "Font.h" void CFont::initialize() { LPCSTR font_path = "〜.ttf"; AddFontResourceEx(font_path, FR_PRIVATE, NULL); }
Re: 外部フォントの使用 ( No.7 )
名前:いっち 日時:2011/05/29 17:02

貼り付けて頂いたソースを拝見する限りではとくに怪しい部分は見受けられませんでした。

Page: 1 |