0

DirectX9 で変数の値を画面に描画するにはどうすればよいですか? DrawText() メソッドを使用して、次のようにテキストを描画できることはわかっています。

m_pD3DFont->DrawText(0, "text", -1, &rect, DT_TOP | DT_RIGHT | DT_NOCLIP, D3DCOLOR_ARGB(255, 255, 255, 255));

しかし、変数の値を描画するにはどうすればよいでしょうか? 具体的には、整数。整数を文字列に変換しようとしましたが、次のエラーが表示されます

パラメーター 2 を 'std::string *' から 'LPCWSTR' に変換できません

どんな助けでも大歓迎です。

4

2 に答える 2

0

前の投稿者が述べたように、stringstreams を使用して int を文字列に、またはその逆に変換できますが、C++11 には、これを行う必要をなくす新しい機能がいくつかあります。std::to_string または std::to_wstring を使用して int を文字列または wstring に変換し、c_str() を使用して文字列オブジェクトから生の char* または wchar_t* を取得できます。適切なタイプのポインターを winapi 文字列に変換できるはずですが、一部はコンパイラーの設定に依存する場合があります。

参考までに、winapi 文字列の意味は次のとおりです。

LPSTR = char*
LPCSTR = const char*
LPWSTR = wchar_t*
LPCWSTR = const wchar_t*
LPTSTR = char* or wchar_t* depending on _UNICODE
LPCTSTR = const char* or const wchar_t* depending on _UNICODE

そして、これを C++ 文字列に割り当てる方法の簡単なサンプルを次に示します。

#include <iostream>
#include <string>
#include <Windows.h>
#include <tchar.h>

int main()
{
    // Declare winapi strings
    LPSTR str_charPtr;
    LPCSTR str_constCharPtr;
    LPWSTR str_wcharPtr;
    LPCWSTR str_constWcharPtr;
    LPTSTR str_tcharPtr;
    LPCTSTR str_constTcharPtr;

    // Declare a test integer
    int num = 5001;

    // Convert the integer to a string and to a wstring
    std::string regString = std::to_string(num);
    std::wstring wideString = std::to_wstring(num);

    // Attempt to assign the winapi strings to the C++ standard strings
    str_charPtr = const_cast<char*>(regString.c_str());         // NOTE: removing const to store in non-const LPSTR
    str_constCharPtr = regString.c_str();
    str_wcharPtr = const_cast<wchar_t*>(wideString.c_str());    // NOTE: removing const to store in non-cost LPWSTR
    str_constWcharPtr = wideString.c_str();
    str_tcharPtr = const_cast<TCHAR*>(regString.c_str());       // Error if set to Unicode
    str_tcharPtr = const_cast<TCHAR*>(wideString.c_str());      // Error if NOT set to Unicode
    str_constTcharPtr = regString.c_str();                      // Error if set to Unicode
    str_constTcharPtr = wideString.c_str();                     // Error if NOT set to Unicde

    return 0;
}

Visual Studio 2012 に移行した場合は、次のように設定を調整できます
。 1. ソリューション エクスプローラーでプロジェクトを右クリックします。
2. [プロパティ] をクリックします。
3. 左ペインの [構成プロパティ] の下で、[全般] を選択します
。 4. 右ペインで、[プロジェクトのデフォルト] セクションを確認します。
5. Character Set の横で、Unicode または適切なオプションを選択します。

于 2013-02-10T20:53:01.940 に答える