Re: CreateFontToHandleが失敗できない? ( No.1 ) |
- 名前:管理人 日時:2013/12/30 21:19
非公開関数の EnumFontNameEx を使用して使用できるフォントを列挙して、その中に目的のフォントが
あるかどうかを確認すれば判断できますが、バッファを用意したり for文で比較したりと面倒なので専用の関数を用意しました
// 指定のフォント名のフォントが存在するかどうかをチェックする( 戻り値 TRUE:存在する FALSE:存在しない )
int CheckFontName( char *FontName, int CharSet = -1 /* DX_CHARSET_DEFAULT 等 */ ) ;
第一引数にフォント名、第二引数に文字セットを指定します
文字セットは現在次の種類があります
#define DX_CHARSET_DEFAULT (0) // デフォルト文字セット
#define DX_CHARSET_SHFTJIS (1) // 日本語文字セット
#define DX_CHARSET_HANGEUL (2) // 韓国語文字セット
#define DX_CHARSET_BIG5 (3) // 繁体文字セット
#define DX_CHARSET_GB2312 (4) // 簡体文字セット
特殊なフォントでなければデフォルト引数の -1 のままで問題ありません
( -1 を渡した場合は DX_CHARSET_DEFAULT を指定した場合と同じになります )
戻り値が TRUE であれば FontName で指定したフォントが存在して、FALSE だった場合はフォントが無いことになります
if( CheckFontName( "MS ゴシック" ) == TRUE )
{
// MS ゴシック が存在する
}
こちらに CheckFontName を追加したバージョンをアップしましたので、よろしければお使いください
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用
http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』を、VCをお使いの場合は『リビルド』を、
Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
 |
Re: CreateFontToHandleが失敗できない? ( No.2 ) |
- 名前:ひる 日時:2013/12/31 01:26
ありがとうございます。
早速用意して頂いた関数を使用してみたのですが、
存在しているはずなのにフォントによっては戻り値がFALSEになるものがあります。
例えば、"MS ゴシック"はTRUEが返ってきますが、
"Meiryo"、"@MS ゴシック"だとFALSEが返ってきてしまいます。
これらのフォントはどれも存在している事を確認していますし、
CreateFontToHandleでは問題なく使用できています。
また、第二引数はどれも設定していません(デフォルト引数)。
|
Re: CreateFontToHandleが失敗できない? ( No.3 ) |
- 名前:管理人 日時:2013/12/31 05:45
"@MS ゴシック"のような先頭に@が付く縦書きフォント名は弾いていたので弾かないように変更しました
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用
http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』を、VCをお使いの場合は『リビルド』を、
Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
"Meiryo"ですが、こちらはメモ帳のメニュー『書式』→『フォント』のフォント変更ダイアログの
フォント一覧を見る限りですと "Meiryo UI" と、後に " UI" が付くようですが、
" UI" が付かない "Meriyo" というフォントもあるのでしょうか?
|
Re: CreateFontToHandleが失敗できない? ( No.4 ) |
- 名前:ひる(解決) 日時:2013/12/31 15:27
対応ありがとうございます。
用意して頂いた関数が問題なく使用できました。
"Meiryo"はこちらのミスでした。
申し訳ございません。
|