トップページ > 過去ログ > 記事閲覧
関数外?で作成したフォントハンドル
名前:B/B 日時: 2010/09/11 22:38

関数の外で作成したフォントハンドルで文字列を画面に描画しようとすると、なぜかサイズやアンチエイリアスなどの設定が反映されずに描画されてしまいます。("関数の外"が原因なのかはわかりませんが・・・。) 仕様だとは思えませんので、修正など可能でしたらよろしくお願いします。逆に私のほうでミスがありましたらご指摘願います。 ソースコードを以下に示します。 #include "DxLib.h" int Fglobal = CreateFontToHandle( NULL , 48 , 3 ,DX_FONTTYPE_ANTIALIASING_EDGE) ; // プログラムは WinMain から始まります int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( true ) ; if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1 ; // エラーが起きたら直ちに終了 } int Fmain = CreateFontToHandle( NULL , 48 , 3 ,DX_FONTTYPE_ANTIALIASING_EDGE) ; //Fglobalと同じ DrawPixel( 320 , 240 , 0xffff ) ; // 点を打つ DrawBox(0,0,640,480,GetColor(255,255,255),TRUE); //背景白に //WinMain内で作成されたフォント DrawStringToHandle( 60 , 410 , "テスト" ,GetColor( 255 , 0 , 0 ) , Fmain ) ; //正常に表示される //WinMain外で作成されたフォント DrawStringToHandle(360 , 410 , "テスト" ,GetColor( 255 , 0 , 0 ) , Fglobal ) ; //サイズ等の設定が反映されない WaitKey() ; // キー入力待ち DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }

Page: 1 |

Re: 関数外?で作成したフォントハンドル ( No.1 )
名前:いっち 日時:2010/09/11 22:45

DXライブラリでは DxLib_Init 関数の前に呼んでも動作する関数と、動作しない関数があります。 CreateFontToHandle 関数は後者なのではないでしょうか。
Re: 関数外?で作成したフォントハンドル ( No.2 )
名前:B/B(解決) 日時:2010/09/11 23:23

いっちさん返信ありがとうございます。 なるほど、それは盲点でした。 ということはクラスのコンストラクタなどで使用すると動作しないということですね。(今回、実際そうしていました) コンストラクタとは別に、クラスに初期化関数を作成し、それをWinMainの中から呼び出したら、正常にフォントハンドルが作成されました。 ありがとうございました。

Page: 1 |