2012-06-14 31 views
0

如何使用DirectX9繪製變量值到屏幕上?我知道我可以使用DrawText的()方法來繪製文本是這樣的:使用C++和DirectX9繪製變量值

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

但我怎麼得到它畫一個變量的值?一個整數,具體來說。我已經試過整數轉換成字符串,但後來我得到一個錯誤說

無法從「的std :: string *」轉換參數2到「LPCWSTR」

任何幫助表示讚賞。

回答

0

爲整數轉換爲字符串,字符串爲整數,因此你可以使用std::stringstream

std::stringstream ss; 
std::string s = "123"; 
ss << s; 
int result; 
ss >> result; 

更多的信息在這裏http://cplusplus.com/reference/iostream/stringstream/

,或者您需要支持Unicode字符串,你可以使用std::wstringstreamstd::wstring爲您的應用程序。

0

正如前面提到的海報,您可以使用stringstreams將int轉換爲字符串,反之亦然,但是對於C++ 11,有一些新功能可以消除這種需要。您可以使用std :: to_string或std :: to_wstring將ints轉換爲字符串或wstrings,並且可以使用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.在字符集旁邊,選擇Unicode或適合您的任何選項。