2016-06-03 5 views
0

Ich habe eine Funktion, die Ressourcen aus RC-Datei mit CStringW abruft. Ich möchte diesen zurückgegebenen Wert in sprintf_s.Is gibt es eine Möglichkeit?Wie konvertiert man einen CStringW in LPCWSTR?

// Snippet

sprintf_s(szMsgBoxText, LoadFromResource(IDS_INSTALLATION_COMPLETE), g_szProductName); 


CStringW LoadFromResource(int ID) 
{ 
    CStringW m_resoucestring(MAKEINTRESOURCE(ID)); 
    return m_resoucestring; 
} 

sprintf_s geben Sie mir eine error.Is es eine Alternative dazu?

+0

@MSalters: Das vorgeschlagene Duplikat ist nicht. Es fordert ** Konvertierungen ** zwischen ANSI und Unicode-Strings. Diese Frage fragt, wie man einen Unicode 'CStringW' in einen Zeiger auf seinen internen, breiten Zeichenpuffer konvertiert. Keine Conversions erforderlich – IInspectable

Antwort

0

Verwenden Sie CStringW::Format, was genauso funktioniert wie sprintf_s. So wird Ihr Code werden:

CStringW sText; 
sText.Format(LoadFromResource(IDS_INSTALLATION_COMPLETE), g_szProductName); 

oder sogar

CStringW sText; 
sText.Format(IDS_INSTALLATION_COMPLETE, g_szProductName); 

Sie können CStringW direkt an jede Funktion übergeben, die LPCWSTR Typ Parameter akzeptiert, da es entsprechende Cast-Operator hat.