VC++.NETにおけるGetPrivateProfileStringの使い方について

[戻る]
はらちぇる 2006/06/16(金) 15:28:59
VC++.NETで開発を行っている者です。

設定を保存したiniファイル"A.INI"を読み込んで文字列を取得したいのですが、
    
tag1 = "SetMidiDevice";
tag2 = "Device";

char test[80];
GetPrivateProfileString(tag1,tag2,assert,(LPWSTR)test ,nSize,filename);

このように行うと、一文字目しか取得できません。

[SetMidiDevice]
Device=1:abcdef

だった場合は"1"のみ。

全ての文字列を取得する場合はどうすればよいのでしょうか。
ご教授願います。

Blue 2006/06/16(金) 15:34:23
char型配列をLPWSTRのようにキャストすることは普通はありません。

LPWSTR型を欲しているのであれば、
WCHAR型の文字列領域を渡してください。

というか
> GetPrivateProfileString(tag1,tag2,assert,(LPWSTR)test ,nSize,filename);
4番目だけ LPWSTR型なんですか?

Blue 2006/06/16(金) 16:03:43
一応 TCHAR を意識したコーディング

LPCTSTR tag1 = _T( "SetMidiDevice" );
LPCTSTR tag2 = _T( "Device" );

TCHAR buff[ 80 ];
GetPrivateProfileString( tag1, tag2, _T( "default" ), buff ,
                         sizeof( buff ) / sizeof( buff[ 0 ] ), _T( "A.INI" ) );
MessageBox( buff, MB_OK );


char型文字列がほしいならば、名にGetPrivateProfileStringAを呼ぶか、
文字コードの設定を、マルチバイト文字を利用するみたいなヤツに変更するかしてくだ
さい。
(wcstombsでchar型文字列に変換しても良いが。)

VC2005の場合ですが参考スレ)
http://cgi21.plala.or.jp/keny01/patio/patio.cgi?mode=view&no=250

Blue 2006/06/16(金) 16:05:42
> MessageBox( buff, MB_OK );
間違えました。
MessageBox( NULL, buff, _T( "結果" ), MB_OK );

古いスレッドには追加発言できません。