はじめまして、meaといいます。
自分のPCに入ってるフォント名を全て、それぞれのフォントを使って表示しようとしたのですが、342個のうちACaslonPro-Bold以前の最初の10個が表示されません。
メモリを見ると列挙には成功しており、ChangeFont, DrawFormatStringともに戻り値は0でした。
また、文字列をフォント名としてでなく、通常の(英数シングルバイト)文字列も表示できず、フォント自体使えない模様です。
ログを見ると何やら大量に関数が失敗しているようなのですが…、対応策はあるでしょうか?
Visual Studio 2012 Expressを使用しています。
ソース
------------------------------------------------------------
#include "../dxlib_vc/DxLib.h"
#include <string>
#include <cstdlib>
#include <typeinfo>
const int DC_WIDTH = 1200;
const int DC_HEIGHT = 800;
const int FONTNAME_MAX = 64;
const int FONT_HEIGHT = 20;
void Safe_Free( void* p )
{
if( p != nullptr ){
free( p );
p = nullptr;
}
}
int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInst, LPSTR lpszArgs, int nWinMode)
{
ChangeWindowMode(TRUE);
SetGraphMode( DC_WIDTH, DC_HEIGHT, 32 );
if( DxLib_Init() == -1 ) return -1;
int fontNum = EnumFontName( nullptr, 0, FALSE );
char* const pFont = (char*)std::calloc( fontNum, FONTNAME_MAX );
EnumFontName( pFont, fontNum, FALSE );
for( int i = 0; i < fontNum; ++i ){
ChangeFont( pFont + i * FONTNAME_MAX );
DrawFormatString( i / (DC_HEIGHT / FONT_HEIGHT) * 200, i * FONT_HEIGHT % DC_HEIGHT, GetColor(255,255,255), "%s", pFont + i * FONTNAME_MAX );
}
WaitKey();
Safe_Free(pFont);
DxLib_End();
return 0;
}
ログ
------------------------------------------------------------
1:システムの情報を出力します
1: DXライブラリ Ver3.11
1: 論理プロセッサの数 : 4
1: OS Windows7 ( Build 7601 Service Pack 1 )
102: CPU動作速度:大体3.39GHz
102: MMX命令を使用します
102: SSE命令が使用可能です
103: SSE2命令が使用可能です
103: CPUベンダ:GenuineIntel
104: CPU名: Intel(R) Core(TM) i5-3570K CPU @ 3.40GHz
104:COMの初期化... 成功しました
107:メモリ総量:7895.31MB 空きメモリ領域:1422.11MB
107:タイマーの精度を検査します
108:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60
108: パフォーマンスカウンターを使用します タイマー精度 : 3312.861000 KHz
108: ソフトの二重起動検査... 二重起動はされていませんでした
109:ウインドウクラスを登録します... 登録に成功しました
110:ウインドウモード起動用のウインドウを作成します
126:ウインドウの作成に成功しました
126:ウインドウを表示します
164:IMEを無効にしました
164:ウインドウスタイルをウインドウモード用に変更します... 完了
182:DirectInput関係初期化処理
182: XInput DLL の読み込み中... 成功
186: DirectInput7 の取得中... 成功
203: 引き続き初期化処理... 初期化成功
205: ジョイパッドの初期化...
214: 入力装置を見つけました
214: デバイスの登録名:PC Game Controller
214: デバイスの製品登録名:PC Game Controller
215: 周期的エフェクトの作成に失敗しました。
215: ジョイパッドの追加は正常に終了しました
215: ジョイパッドの初期化は正常に終了しました
215: マウスデバイスの初期化... 初期化成功
216: キーボードデバイスの初期化... 初期化成功
217:DirectInput 関連の初期化は正常に終了しました
218:XAudio2 の初期化を行います
218: XAudio2 インターフェースの取得を行います.... 成功 Ver2.7
221: 引き続きインターフェースの初期化処理... 成功
223: X3DAudio.DLL の読み込み中... 成功
271: デバイス名:スピーカー (Realtek High Definition Audio)
272: チャンネル数:2
272: ビット精度:32bit
272: サンプリングレート:48000Hz
272:XAudio2 の初期化は正常に終了しました
274:DirectDraw オブジェクトの取得を行います.... 成功
280:引き続き初期化処理... 初期化に成功しました
334:IDirect3D9Ex オブジェクトを取得します.... 成功
336:IDirect3DDevice9Ex オブジェクトを取得します.... ハードウエア頂点演算を使用します
592:成功
592:Driver:igdumd32.dll Description:Intel(R) HD Graphics 4000
593:画面のフォーマットは D3DFMT_X8R8G8B8 です
593:16bit Zバッファフォーマットは D3DFMT_D16 です
593:24bit Zバッファフォーマットは D3DFMT_D24X8 です
594:32bit Zバッファフォーマットは D3DFMT_D24X8 です
594:16bit カラーフォーマットは D3DFMT_R5G6B5 です
594:32bit カラーフォーマットは D3DFMT_X8R8G8B8 です
594:アルファ付き 16bit カラーフォーマットは D3DFMT_A4R4G4B4 です
594:アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です
595:アルファテスト用 16bit カラーフォーマットは D3DFMT_A1R5G5B5 です
595:アルファテスト用 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です
595:DXT1テクスチャフォーマットはD3DFMT_DXT1 です
595:DXT2テクスチャフォーマットはD3DFMT_DXT2 です
595:DXT3テクスチャフォーマットはD3DFMT_DXT3 です
595:DXT4テクスチャフォーマットはD3DFMT_DXT4 です
595:DXT5テクスチャフォーマットはD3DFMT_DXT5 です
596:描画用 16bit カラーフォーマットは D3DFMT_R5G6B5 です
596:描画用 32bit カラーフォーマットは D3DFMT_X8R8G8B8 です
596:描画用アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です
596:描画用ABGR整数16ビット型カラーフォーマットは D3DFMT_A16B16G16R16 です
596:描画用ABGR浮動小数点16ビット型カラーフォーマットは D3DFMT_A16B16G16R16F です
596:描画用ABGR浮動小数点32ビット型カラーフォーマットは D3DFMT_A32B32G32R32F です
597:描画用1チャンネル整数8ビット型カラーフォーマットは D3DFMT_A8R8G8B8 です
597:描画用1チャンネル整数16ビット型カラーフォーマットは D3DFMT_G16R16 です
597:描画用1チャンネル浮動小数点16ビット型カラーフォーマットは D3DFMT_R16F です
597:描画用1チャンネル浮動小数点32ビット型カラーフォーマットは D3DFMT_R32F です
597:描画用2チャンネル整数8ビット型カラーフォーマットは D3DFMT_A8B8G8R8 です
597:描画用2チャンネル整数16ビット型カラーフォーマットは D3DFMT_G16R16 です
598:描画用2チャンネル浮動小数点16ビット型カラーフォーマットは D3DFMT_G16R16F です
598:描画用2チャンネル浮動小数点32ビット型カラーフォーマットは D3DFMT_G32R32F です
598:一度に描画できるプリミティブの最大数:1048575
598:対応している最大頂点インデックス:16777215
598:同時にレンダリングできるバッファの数:4
599:最大テクスチャサイズ 幅:8192 高さ:8192
599:テクスチャステージテンポラリレジスタ:使用可
599:減算合成のハードウェア対応:ネイティブ
599:ハードウェア頂点シェーダーバージョンコード:300
599:エミュレーション頂点シェーダーバージョンコード:エミュレーション無し
599:ピクセルシェーダーバージョンコード:300
615:バックバッファロック転送の時間:1783nsec 一時的な描画可能バッファを使用した転送の時間:1188nsec
616:バックバッファロックを使用しません
616:Zバッファを作成します.... 成功
630:プログラマブルシェーダーを使用します
689:フォントの初期化を行います
689:フォントの初期化は正常に終了しました
694:文字コードバッファの初期化を行います... 完了しました
774:GetGlyphOutline 関数が失敗しました
774:GetGlyphOutline 関数が失敗しました
774:GetGlyphOutline 関数が失敗しました
775:GetGlyphOutline 関数が失敗しました
775:GetGlyphOutline 関数が失敗しました
775:GetGlyphOutline 関数が失敗しました
775:GetGlyphOutline 関数が失敗しました
775:GetGlyphOutline 関数が失敗しました
776:GetGlyphOutline 関数が失敗しました
776:GetGlyphOutline 関数が失敗しました
776:GetGlyphOutline 関数が失敗しました
776:GetGlyphOutline 関数が失敗しました
777:GetGlyphOutline 関数が失敗しました
777:GetGlyphOutline 関数が失敗しました
777:GetGlyphOutline 関数が失敗しました
778:GetGlyphOutline 関数が失敗しました
778:GetGlyphOutline 関数が失敗しました
778:GetGlyphOutline 関数が失敗しました
778:GetGlyphOutline 関数が失敗しました
778:GetGlyphOutline 関数が失敗しました
778:GetGlyphOutline 関数が失敗しました
779:GetGlyphOutline 関数が失敗しました
779:GetGlyphOutline 関数が失敗しました
779:GetGlyphOutline 関数が失敗しました
779:GetGlyphOutline 関数が失敗しました
779:GetGlyphOutline 関数が失敗しました
779:GetGlyphOutline 関数が失敗しました
780:GetGlyphOutline 関数が失敗しました
781:GetGlyphOutline 関数が失敗しました
781:GetGlyphOutline 関数が失敗しました
781:GetGlyphOutline 関数が失敗しました
781:GetGlyphOutline 関数が失敗しました
781:GetGlyphOutline 関数が失敗しました
782:GetGlyphOutline 関数が失敗しました
782:GetGlyphOutline 関数が失敗しました
782:GetGlyphOutline 関数が失敗しました
782:GetGlyphOutline 関数が失敗しました
782:GetGlyphOutline 関数が失敗しました
782:GetGlyphOutline 関数が失敗しました
783:GetGlyphOutline 関数が失敗しました
783:GetGlyphOutline 関数が失敗しました
783:GetGlyphOutline 関数が失敗しました
783:GetGlyphOutline 関数が失敗しました
783:GetGlyphOutline 関数が失敗しました
785:GetGlyphOutline 関数が失敗しました
785:GetGlyphOutline 関数が失敗しました
785:GetGlyphOutline 関数が失敗しました
785:GetGlyphOutline 関数が失敗しました
785:GetGlyphOutline 関数が失敗しました
786:GetGlyphOutline 関数が失敗しました
786:GetGlyphOutline 関数が失敗しました
786:GetGlyphOutline 関数が失敗しました
786:GetGlyphOutline 関数が失敗しました
786:GetGlyphOutline 関数が失敗しました
786:GetGlyphOutline 関数が失敗しました
786:GetGlyphOutline 関数が失敗しました
788:GetGlyphOutline 関数が失敗しました
789:GetGlyphOutline 関数が失敗しました
789:GetGlyphOutline 関数が失敗しました
789:GetGlyphOutline 関数が失敗しました
789:GetGlyphOutline 関数が失敗しました
789:GetGlyphOutline 関数が失敗しました
790:GetGlyphOutline 関数が失敗しました
790:GetGlyphOutline 関数が失敗しました
790:GetGlyphOutline 関数が失敗しました
790:GetGlyphOutline 関数が失敗しました
791:GetGlyphOutline 関数が失敗しました
792:GetGlyphOutline 関数が失敗しました
792:GetGlyphOutline 関数が失敗しました
792:GetGlyphOutline 関数が失敗しました
792:GetGlyphOutline 関数が失敗しました
792:GetGlyphOutline 関数が失敗しました
793:GetGlyphOutline 関数が失敗しました
793:GetGlyphOutline 関数が失敗しました
793:GetGlyphOutline 関数が失敗しました
793:GetGlyphOutline 関数が失敗しました
793:GetGlyphOutline 関数が失敗しました
793:GetGlyphOutline 関数が失敗しました
795:GetGlyphOutline 関数が失敗しました
795:GetGlyphOutline 関数が失敗しました
795:GetGlyphOutline 関数が失敗しました
795:GetGlyphOutline 関数が失敗しました
796:GetGlyphOutline 関数が失敗しました
796:GetGlyphOutline 関数が失敗しました
796:GetGlyphOutline 関数が失敗しました
796:GetGlyphOutline 関数が失敗しました
796:GetGlyphOutline 関数が失敗しました
797:GetGlyphOutline 関数が失敗しました
797:GetGlyphOutline 関数が失敗しました
797:GetGlyphOutline 関数が失敗しました
797:GetGlyphOutline 関数が失敗しました
799:GetGlyphOutline 関数が失敗しました
799:GetGlyphOutline 関数が失敗しました
799:GetGlyphOutline 関数が失敗しました
799:GetGlyphOutline 関数が失敗しました
799:GetGlyphOutline 関数が失敗しました
800:GetGlyphOutline 関数が失敗しました
800:GetGlyphOutline 関数が失敗しました
800:GetGlyphOutline 関数が失敗しました
800:GetGlyphOutline 関数が失敗しました
800:GetGlyphOutline 関数が失敗しました
800:GetGlyphOutline 関数が失敗しました
801:GetGlyphOutline 関数が失敗しました
801:GetGlyphOutline 関数が失敗しました
801:GetGlyphOutline 関数が失敗しました
801:GetGlyphOutline 関数が失敗しました
803:GetGlyphOutline 関数が失敗しました
803:GetGlyphOutline 関数が失敗しました
803:GetGlyphOutline 関数が失敗しました
803:GetGlyphOutline 関数が失敗しました
803:GetGlyphOutline 関数が失敗しました
803:GetGlyphOutline 関数が失敗しました
804:GetGlyphOutline 関数が失敗しました
804:GetGlyphOutline 関数が失敗しました
804:GetGlyphOutline 関数が失敗しました
804:GetGlyphOutline 関数が失敗しました
804:GetGlyphOutline 関数が失敗しました
804:GetGlyphOutline 関数が失敗しました
805:GetGlyphOutline 関数が失敗しました
805:GetGlyphOutline 関数が失敗しました
805:GetGlyphOutline 関数が失敗しました
805:GetGlyphOutline 関数が失敗しました
805:GetGlyphOutline 関数が失敗しました
805:GetGlyphOutline 関数が失敗しました
806:GetGlyphOutline 関数が失敗しました
806:GetGlyphOutline 関数が失敗しました
806:GetGlyphOutline 関数が失敗しました
806:GetGlyphOutline 関数が失敗しました
806:GetGlyphOutline 関数が失敗しました
808:GetGlyphOutline 関数が失敗しました
808:GetGlyphOutline 関数が失敗しました
808:GetGlyphOutline 関数が失敗しました
808:GetGlyphOutline 関数が失敗しました
808:GetGlyphOutline 関数が失敗しました
808:GetGlyphOutline 関数が失敗しました
809:GetGlyphOutline 関数が失敗しました
809:GetGlyphOutline 関数が失敗しました
809:GetGlyphOutline 関数が失敗しました
809:GetGlyphOutline 関数が失敗しました
809:GetGlyphOutline 関数が失敗しました
810:GetGlyphOutline 関数が失敗しました
810:GetGlyphOutline 関数が失敗しました
810:GetGlyphOutline 関数が失敗しました
810:GetGlyphOutline 関数が失敗しました
810:GetGlyphOutline 関数が失敗しました
810:GetGlyphOutline 関数が失敗しました
811:GetGlyphOutline 関数が失敗しました
811:GetGlyphOutline 関数が失敗しました
811:GetGlyphOutline 関数が失敗しました
811:GetGlyphOutline 関数が失敗しました
2922:ウインドウを閉じようとしています
2928:ウインドウが破棄されようとしています
2929:ソフトを終了する準備が整いました
2931:フォントの初期化を行います
2932:フォントの初期化は正常に終了しました
2941:Direct3DDevice9 の解放 2
2953:Direct3D9 DLL の解放 1
2955:DirectInput 関連の終了処理... 完了
2996:
2996:Alloc memory dump
2996: Total size:0(0.000kb) Alloc num:0
2996:
画像
------------------------------------------------------------
左:実行画面 右:VC++デバッグ中(EnumFontName直後)のメモリウインドウ
ttp://p.tl/15Nr