アプリ版:「スタンプのみでお礼する」機能のリリースについて

Visual C++ 2008を使用してTextBoxからの値(System::String)をmciSendString(LPCWSTR)に渡したいと思っています。
そこで自分はSystem::Stringをstd::stringに変換しそれから渡そうと思っているのですが・・・
『error C2664: 'mciSendStringW' : 1 番目の引数を 'std::string' から 'LPCWSTR' に変換できません。』
のようにエラーが出ます。
当然そのまま与えてるので出るのは当たり前なのですが、キャストや変換の仕方が分からず調べ様にも困っている次第です。
C++に今回始めての挑戦で、右も左も分からないのですが、もしよろしければご指南頂けませんでしょうか?

A 回答 (1件)

>そこで自分はSystem::Stringをstd::stringに変換しそれから渡そうと思っているのですが・・・


これは不要でしょう。
(std::stringはShift_JISコードの文字列を保持している。
System::StringはUnicodeの文字列を保持している。
LPCWSTRはUnicodeの文字列用の変数。
Unicode→Shift_JIS→Unicodeでは無駄が多いし、情報が落ちる可能性がある。)

vcclr.hのPtrToStringCharsを使えばSystem::Stringから簡単に取得できるでしょう。

System::String^ s = L"ほげ";
pin_ptr<const wchar_t> p = PtrToStringChars(s);

どうしてもstd::stringからならMultiByteToWideChar関数とかmbstowcsあたろりでしょうか。

参考URL:http://msdn.microsoft.com/ja-jp/library/d1ae6tz5 …
    • good
    • 0
この回答へのお礼

このSystem::Stringをstd::stringに変換は
std::string cmd = "open " + fileName + " type mpegvideo alias Test";
で連結させたいがためでした。
>System::String^ s = L"ほげ";
>pin_ptr<const wchar_t> p = PtrToStringChars(s);
参考になりました。
System::String^ cmd;
cmd = L"open " + textBox1->Text + L" type mpegvideo alias Test";
pin_ptr<const wchar_t> p = PtrToStringChars(cmd);
で解決です

ありがとうございました。

お礼日時:2008/06/03 14:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています