本日は、最近実装が完了した「仮想フルスクリーン」が原因と思われるバグについて
投稿させていただきます。
上記システムを実装するにあたり、フルスクリーンかそうでないかによって
表示される位置及びサイズを変更する、という関数を自作し、
実際に使用したところ、'%'のみが表示されなくなってしまいました。
以下に原因と思われる部分のコードを載せます。
どうかご教授のほどをよろしくお願いします。
尚、開発環境はVC++2008EEで、DXライブラリを使用しております。
#include "../header/GV.h"
//フォントデータロード
int CreateFontToHandleFull(int no,const TCHAR *FontName,int Size,int Thick,
int FontType=-1,int CharSet=-1, int EdgeSize=-1,int Itaric=0,int Handle=-1){
//必要情報を宣言
double RateX,RateY,RateEx;
//標準フォントダウンロード
font[no] = CreateFontToHandle( FontName,Size,Thick,FontType,CharSet,EdgeSize,Itaric,Handle );
//フルスクリーン用フォントダウンロード
{
RateX = (double)DesktopSizeX / WIN_X; //X成分拡大レートを解析
RateY = (double)DesktopSizeY / WIN_Y; //Y成分拡大レートを解析
RateEx = ( RateX<RateY ? RateX:RateY ); //レートの小さいほうを適用
Size *= RateEx;
Thick *= RateEx;
fontEx[no] = CreateFontToHandle( FontName,Size,Thick,FontType,CharSet,EdgeSize,Itaric,Handle );
}
return 0;
}
int DrawFormatStringToHandleEx(int x,int y,int Color,int FontHandle,const TCHAR *FormatString, ... ){
int DivX,DivY;
char Strings[256];
va_list list;
va_start( list,FormatString );
vsprintf( Strings,FormatString,list );
va_end( list );
if(WinMode==1){
if( ExtendRateX<ExtendRateY ){ //拡大倍率がX方向のほうが小さければ
DivX = 0;
DivY = (DesktopSizeY/2) - (WIN_Y*ExtendRateA/2); //ゲーム画面を中央に表示させる
}
else{ //拡大倍率がY方向のほうが小さければ
DivX = (DesktopSizeX/2) - (WIN_X*ExtendRateA/2);
DivY = 0; //ゲーム画面を中央に表示させる
}
DrawFormatStringToHandle( DivX+x*ExtendRateA,DivY+y*ExtendRateA,Color,fontEx[FontHandle],Strings );
}
else DrawFormatStringToHandle( x,y,Color,font[FontHandle],Strings );
return 0;
}