Wie konvertiert man einen String in LPCWSTR ???



  • Irgendwie krieg ich es nicht hin:

    Ich möchte eine wmv-datei einlesen, möchte dazu aber noch ein paar Informationen aus dem Header auslesen. Hier mein Code:

    HRESULT hr6 = pwmHeaderInfo->GetAttributeByName(&m_wStreamNumber, CA2WEX<>(m_sFileName.c_str()), &wmAttrDateType, NULL, &wAttrLength);
    					if (hr6 != S_OK)
    						AfxMessageBox("Failed to get attribute from the video header!");
    

    GetAttributeByName will aber für den Dateinamen unbedingt ein LPCWSTR ... und ich hab den Dateinamen nur in einem String ...

    Kann mir jemand helfen???





  • PWCHAR WString( const char* str ) { 
        if( str == NULL ) { 
            return NULL; 
        } 
    
        int iBufSize = MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, str, -1, NULL, 0 ); 
        WCHAR* wstr= new WCHAR[iBufSize+1]; 
        MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, str, -1, wstr, iBufSize ); 
    
        return (wstr); 
    }
    

    Jedoch darauf achten, den Buffer wieder freizugeben und einen möglichen Fehlercode abzufangen.



  • 2Atlantis schrieb:

    GetAttributeByName will aber für den Dateinamen unbedingt ein LPCWSTR ... und ich hab den Dateinamen nur in einem String ...

    Kannst du aus m_sFileName einen std::wstring machen? Dann bekommst du die Lösung praktisch umsonst.


Anmelden zum Antworten