Avatar billede superdan Nybegynder
16. august 2004 - 13:54 Der 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.
Avatar billede mazzoo Nybegynder
17. august 2004 - 08:08 #1
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);
Avatar billede superdan Nybegynder
17. august 2004 - 17:43 #2
virker dette også hvis det er en managed String* fra .NET interfacet???

jeg bruger IKKE mfc
men thanx anyway
Avatar billede superdan Nybegynder
18. august 2004 - 08:15 #3
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.

char __nogc* pMystring= static_cast<char*>(Marshal::StringToHGlobalAnsi(MyString).ToPointer());

LPCTSTR MyUnmanagedString=pMyString;

LPCWSTR MyFormatedUnmanagedString=A2W(MyUnmanagedString);

//en hel del af disse punkter kan naturligvis udelades. men er vedlagt for overblikket

// og hermed lukker jeg selv spørgsmålet.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester