DrawText 関数 の文字化け – プログラミング – Home

DrawText 関数 の文字化け
 
通知
すべてクリア

[解決済] DrawText 関数 の文字化け


ナギ
 ナギ
(@ナギ)
ゲスト
結合: 14年前
投稿: 6
Topic starter  

以下のソースで実行した所、半角英数字は正常に表示されるのですが
、全角文字の場合、文字化けしてしまいます。

LPD3DXFONT g_pD3DXfont = NULL;

//初期化

void FontInit()
{

D3DXFONT_DESC logFont;

logFont.Height = 50; //フォントの文字セルまたは文字の
高さ
logFont.Width = 10; //フォントの文字の幅 (論理単位)

logFont.Weight = FW_NORMAL; //フォントのウェイト (0 ~ 1,000
の範囲)
logFont.MipLevels = 0; //要求されるミップ レベルの数
logFont.Italic = FALSE; //斜体フォントの場合は TRUE に設
定されます
logFont.CharSet = 0; //文字セット
logFont.OutputPrecision = 0; //出力精度
logFont.Quality = DEFAULT_QUALITY;//出力品質
logFont.PitchAndFamily = DEFAULT_PITCH || FF_DONTCARE;//フォントのピ
ッチとファミリ
lstrcpy(logFont.FaceName, MS ゴシック); //フォントの書体名
を指定する NULL 終端文字列

D3DXCreateFontIndirect( g_pD3DDevice, &logFont, &g_pD3DXfont);

}

// シーン開始

//posX,posY:XY座標 charString:文字列
void FontDraw(int posX,int posY,char *charString)
{

RECT rect={posX,posY,WINDOW_WIDTH,WINDOW_HEIGHT};
g_pD3DXfont->DrawText(NULL, //Sprite
のポインタ NULLでもOK
charString, //描画する文字列のポインタを指定
します。
-1, //文字数をします。-1の
場合は全てを描画します。
&rect, //描画領域
DT_LEFT | DT_NOCLIP, //ここで左揃えなどを設
定します。
D3DCOLOR_XRGB(255, 0, 0)); //文字の色を決めます。

}

// シーン終了

もしよろしければ何かアドバイスをください…
こういう場所で質問するのが始めてなので質問の内容が不足していたりしてたらごめん
なさい。


引用未解決
トピックタグ
ナギ
 ナギ
(@ナギ)
ゲスト
結合: 14年前
投稿: 6
Topic starter  

LPD3DXFONT g_pD3DXfont = NULL;

//初期化

void FontInit()
{

D3DXFONT_DESC logFont;

logFont.Height = 50;

logFont.Width = 10;

logFont.Weight = FW_NORMAL;
logFont.MipLevels = 0;
logFont.Italic = FALSE;
logFont.CharSet = 0;
logFont.OutputPrecision = 0;
logFont.Quality = DEFAULT_QUALITY;
logFont.PitchAndFamily = DEFAULT_PITCH || FF_DONTCARE;
lstrcpy(logFont.FaceName, MS ゴシック);
D3DXCreateFontIndirect( g_pD3DDevice, &logFont, &g_pD3DXfont);
}

// シーン開始

//posX,posY:XY座標 charString:文字列
void FontDraw(int posX,int posY,char *charString)
{
RECT rect={posX,posY,WINDOW_WIDTH,WINDOW_HEIGHT};
g_pD3DXfont->DrawText(NULL,charString,-1, &rect,DT_LEFT |

DT_NOCLIP,D3DCOLOR_XRGB(255, 0, 0));
}

// シーン終了

コメントが邪魔で見えにくいことがわかりましたすいません…


返信引用
solid
 solid
(@solid)
ゲスト
結合: 14年前
投稿: 17
 

文字セットがUnicodeなのにANSIを渡しているとかでしょうかね


返信引用
MistyGreen
 MistyGreen
(@MistyGreen)
ゲスト
結合: 14年前
投稿: 17
 

logFont.CharSet = 0;

logFont.CharSet = SHIFTJIS_CHARSET;
に変えてみるとか・・・


返信引用
ナギ
 ナギ
(@ナギ)
ゲスト
結合: 14年前
投稿: 6
Topic starter  

>>solidさん
確認していたらマルチバイト文字をつかっていました

>>MistyGreenさん
logFont.CharSet = SHIFTJIS_CHARSET;

おお!文字化けしなくなりました!
ここになにも設定しなかったのがまずかったんですね…
調べてみたら日本語を表すための文字コードなんですね

二人ともアドバイスしていただいてありがとうございます!


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました