16. august 2004 - 13:54Der er
2 kommentarer og 1 løsning
DirectShow interface argument
Jeg skal kalde en funktion i DirectShow. Den modtager en LPCWSTR argument som angiver en filsti.
f.eks. virker det når jeg kalder funktionen på den her måde:
RenderFile(L"mydir/myfile.mp3",NULL")
problemet er at jeg har en String* variabel hvor at filstien ligger gemt i, men jeg kan ikke bare indsætte String* variablen som argument. Så skriver den at jeg ikke må bruge en managed type.
Nogen der ved hvordan jeg får kan løse problemet. Gætter selv på at det er noget med Marshalling.
Du skal konvertere fra f.eks. CString -> LPCWSTR, Dette gøre ved at benytte converter functionen A2W
Eksempel:
// Kan unlades hvis du allerede includere den via en anden pakke #include "atlconv.h" // Sørger for at functionen er instansieret og parat. USES_CONVERSION; // En test streng CString TestString = "Test"; // Selve converteringen LPCWSTR NewStr = A2W(TestString);
Jeg har været dygtig og selv fundet svaret. Men skylder mazzoo tak for et spark i den rigtige retning.
mit problem var som sagt at jeg havde en managed System::String* som skulle konverteres til en unmanaged LPCWSTR.
Det gøres på følgende måde:
//skal inkluderes øverst #include "atlconv.h" using namespace System::Runtime::InteropServices;
//nedenstående skal stå i en funktion oder so USES_CONVERSION; //initialiserer A2W String __gc* MyString=S"managed string"; //en tilfældig managed stringvariabel.
//en hel del af disse punkter kan naturligvis udelades. men er vedlagt for overblikket
// og hermed lukker jeg selv spørgsmålet.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.