ページ 11

DrawFormatStringToHandleについて

Posted: 2016年4月04日(月) 11:15
by とんとん
DrawFormatStringToHandleを使っているのですが、あるときにデバッグしたらいきなり表示されなくなってしまいました。

コード:

    SetDrawBlendMode( DX_BLENDMODE_ALPHA, alpha);
	DrawFormatStringToHandle( 20  , 100 ,color[0], font[3] , name[knd][num].c_str());
	SetDrawBlendMode(DX_BLENDMODE_NOBLEND,0);
このようなコードでした。alphaは300、font[3]も存在して、color[0]、name[knd][num]も存在します。
DrawFormatStringToHandleの部分をDrawGraphで画像を表示させてみたところきちんと表示できていました。
if文でDrawFormatStringToHandle返り値も見たのですが、0になっていました。この場合、どのようなことが原因なのでしょうか。
宜しくお願いします。

Re: DrawFormatStringToHandleについて

Posted: 2016年4月04日(月) 11:49
by みけCAT
情報が少なくてよくわからないですが、とりあえずDXライブラリのSetDrawBlendMode関数の第二引数として有効な値は0~255なので、
alphaが300というのは異常な値かもしれません。配列の範囲外へのアクセスなどによるメモリ破壊が起きていないかを確認してください。
とんとん さんが書きました:font[3]も存在して、color[0]、name[knd][num]も存在します。
単に存在するだけでなく、有効な値かを確認してください。

Re: DrawFormatStringToHandleについて

Posted: 2016年4月04日(月) 12:37
by とんとん
alphaについては255を超えないようにしましたが、何もかわりませんでした。(DX_BLENDMODE_NOBLENDにしても表示されませんでした)
cororについてはDrawBoxで確認できたのですが、他の確かめ方が分かりません。
文字の表示に関する関数が使えないのですが、なにか方法は無いでしょうか。

Re: DrawFormatStringToHandleについて

Posted: 2016年4月04日(月) 12:47
by とんとん
理由が判明しました。有効かどうかというところから調べたら、ロードしている間にフォントデータをデリートしてしまっていました。
コードを書いているときに順番に不都合があってロードに関するところをいじったときに順番が入れ替わったようです。
フォントに関する部分のみ入れ替えたら元に戻りました。有効かどうかという言葉で思い出せました。
ありがとうございました。