[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 04/29 17:34 / Filesize : 141 KB / Number-of Response : 626
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【C++】 DirectX初心者質問スレ Part21 【C】



258 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 20:42:13 ]
ID3DXFileSaveObject使って、STRINGをXファイルに保存するとき、
何故か2バイト文字が変に変換されて保存されてしまいます。
たとえば、
"田中太郎 -abcd- 鈴木次郎"
なら、
"\223\田\222\中\221\太\230\郎\201\ -abcd- \227\鈴\226\木\216\次\230\郎"
の様な具合です。
\223は、C言語のエスケープシーケンスで8進定数のことらしいと言うことまでは分かったのですが
(田は\0x93,\0x63(\223,\143)なので) '\田'とか出てきたり動作がかなり変です。
始末の悪いことにID3DXFileEnumObjectで読み込んでも元に戻りません。
何か問題の所があるのでしょうか。

char strDxTemplate[] ="xof 0303txt 0032\ntemplate ID { <60F23340-4686-472f-AA91-4D1212D26476> STRING strName; DWORD dwID;} ";
std::vector<char> Buff; DWORD dwBuff = 0xff00;
const char strName[] = "田中太郎 -abcd- 鈴木次郎"; LPCSTR strNameBuff = strName;
LPD3DXFILE pDxf; LPD3DXFILESAVEOBJECT pDxfSaveObj; LPD3DXFILESAVEDATA pDxfIDData;

D3DXFileCreate(&pDxf);
pDxf->RegisterTemplates(strDxTemplate, strlen(strDxTemplate));
pDxf->CreateSaveObject("test.x", D3DXF_FILELOAD_FROMFILE, tc - _T('0'), &pDxfSaveObj);
Buff.resize(Buff.size() + sizeof(strName));
memcpy(&Buff[Buff.size() - sizeof(strName)], strName, sizeof(strName));
Buff.resize(Buff.size() + sizeof(dwBuff));
memcpy(&Buff[Buff.size() - sizeof(dwBuff)], &dwBuff, sizeof(dwBuff));
pDxfSaveObj->AddDataObject(IDID, NULL, NULL, Buff.size(), &Buff[0], &pDxfIDData);
pDxfSaveObj->Save();

pDxfIDData->Release(); pDxfSaveObj->Release(); pDxf->Release();

SDKのバージョンは たぶんMarch 2008
そして、std::vectorの使い方が無茶苦茶なのは気にしないでください。






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<141KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef