Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

Visual C++, CString in Variant umwandeln

anul / 7 Antworten / Flachansicht Nickles

Ich will die Funktion:


void CMSComm::SetInput(const VARIANT& newValue) aus dem Kommunikationssteuerelement(MSComm) verwenden.


Wie übergebe ich den Parameter newValue richtig? Ich habe es so versucht:


COleVariant vSend;
UpdateData(true);   // Wert kommt aus Ansicht


// Übergabe eines Strings an eine VARIANT-Variable
vSend.bstrVal = m_strTextSend.AllocSysString();


// String senden
m_ocxMsComm.SetOutput( vSend);     


Ich erhalte beim Ausführen die Meldung: "Invalid property value"
Was mache ich falsch?


Wie kann ich eine char Variable in eine Variabe vom Typ VARIANT und zurück wandeln?


 


 

bei Antwort benachrichtigen
ist voellig ok so thomas woelfer
ist voellig ok so anul
soweit ok anul
anul thomas woelfer „kommt drauf an... :)“
Optionen

Der Tip:
Haltepunkt bei der Funktion setzen und mit F11 in die Funktion springen.
Man sieht dann, welcher Parameter benötigt wird.
Das mußte ich zweimal machen und nun glaube ich zu Wissen, daß ein Datentyp BYTE verlangt wird.
Ist doch richtig oder?


void CMSComm::SetOutput(const VARIANT& newValue)
{
static BYTE parms[] = VTS_VARIANT;
InvokeHelper(0x19, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL,
parms, &newValue);
}

void AFX_CDECL CWnd::InvokeHelper(DISPID dwDispID, WORD wFlags, VARTYPE vtRet, void* pvRet, const BYTE* pbParamInfo, ...)
{
ASSERT(m_pCtrlSite != NULL); // not an OLE control (not yet, at
least)

if (m_pCtrlSite == NULL)
return;

va_list argList;
va_start(argList, pbParamInfo);
m_pCtrlSite->InvokeHelperV(dwDispID, wFlags, vtRet, pvRet,
pbParamInfo, argList);
va_end(argList);
}

Wie bekommt man jetzt ein BYTE-Array in ein Variant????
Wo kann ich am Control den zu übergebenen Datentyp einstellen?


Ich will Daten, die durch die serielle Schnittstelle gesendet werden kontrollieren.
Dazu sollen die Daten zwischen zwei kommunizierenden Geräten durch den PC geleitet werden.
Ein Control soll Daten empfangen, eins soll sie senden und umgekehrt. Das ist aber Zukunft.
Gegenwärtig will ich nur den Umgang mit Controls und Visual C++ anhand von kleinen Projekten lernen.
Im Prinzip ist mir egal, wie ich die Daten aus dem Control kommen. Ich kann sie dann wandeln, das kriege ich schon hin denke ich.


bei Antwort benachrichtigen
So einfach anul