Kommunikations-Steuerelement: MSComm (Mictosoft Communications Controls)
-
Hallo,
möchte in meinem C++-Programm aus der Registered ActiveX Controls die Mictosoft Communications Controls einbinden. Kann mir jemand dazu ein paar Erklärungen geben, wie die funktioniert und verändert werden kann?
Danke
-
Ich habe also folgenden Code verwendet, aber so richtig funktioniert es noch nicht. Kann mir da jemand einen Tip geben?
// Mit Microsoft Visual C++ automatisch erstellte IDispatch-Kapselungsklasse(n). // HINWEIS: Die Inhalte dieser Datei nicht ändern. Wenn Microsoft Visual C++ // diese Klasse erneuert, werden Ihre Änderungen überschrieben. #include "stdafx.h" #include "mscomm.h" ///////////////////////////////////////////////////////////////////////////// // CMSComm IMPLEMENT_DYNCREATE(CMSComm, CWnd) ///////////////////////////////////////////////////////////////////////////// // Eigenschaften CMSComm ///////////////////////////////////////////////////////////////////////////// // Operationen CMSComm void CMSComm::SetCDHolding(BOOL bNewValue) { static BYTE parms[] = VTS_BOOL; InvokeHelper(0x1, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, bNewValue); } BOOL CMSComm::GetCDHolding() { BOOL result; InvokeHelper(0x1, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); return result; } void CMSComm::SetCommID(long nNewValue) { static BYTE parms[] = VTS_I4; InvokeHelper(0x3, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, nNewValue); } long CMSComm::GetCommID() { long result; InvokeHelper(0x3, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); return result; } void CMSComm::SetCommPort(short nNewValue) { static BYTE parms[] = VTS_I2; InvokeHelper(0x4, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, nNewValue); } short CMSComm::GetCommPort() { short result; InvokeHelper(0x4, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL); return result; } void CMSComm::SetCTSHolding(BOOL bNewValue) { static BYTE parms[] = VTS_BOOL; InvokeHelper(0x5, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, bNewValue); } BOOL CMSComm::GetCTSHolding() { BOOL result; InvokeHelper(0x5, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); return result; } void CMSComm::SetDSRHolding(BOOL bNewValue) { static BYTE parms[] = VTS_BOOL; InvokeHelper(0x7, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, bNewValue); } BOOL CMSComm::GetDSRHolding() { BOOL result; InvokeHelper(0x7, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); return result; } void CMSComm::SetDTREnable(BOOL bNewValue) { static BYTE parms[] = VTS_BOOL; InvokeHelper(0x9, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, bNewValue); } BOOL CMSComm::GetDTREnable() { BOOL result; InvokeHelper(0x9, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); return result; } void CMSComm::SetHandshaking(long nNewValue) { static BYTE parms[] = VTS_I4; InvokeHelper(0xa, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, nNewValue); } long CMSComm::GetHandshaking() { long result; InvokeHelper(0xa, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); return result; } void CMSComm::SetInBufferSize(short nNewValue) { static BYTE parms[] = VTS_I2; InvokeHelper(0xb, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, nNewValue); } short CMSComm::GetInBufferSize() { short result; InvokeHelper(0xb, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL); return result; } void CMSComm::SetInBufferCount(short nNewValue) { static BYTE parms[] = VTS_I2; InvokeHelper(0xc, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, nNewValue); } short CMSComm::GetInBufferCount() { short result; InvokeHelper(0xc, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL); return result; } void CMSComm::SetBreak(BOOL bNewValue) { static BYTE parms[] = VTS_BOOL; InvokeHelper(0xd, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, bNewValue); } BOOL CMSComm::GetBreak() { BOOL result; InvokeHelper(0xd, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); return result; } void CMSComm::SetInputLen(short nNewValue) { static BYTE parms[] = VTS_I2; InvokeHelper(0xe, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, nNewValue); } short CMSComm::GetInputLen() { short result; InvokeHelper(0xe, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL); return result; } void CMSComm::SetNullDiscard(BOOL bNewValue) { static BYTE parms[] = VTS_BOOL; InvokeHelper(0x10, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, bNewValue); } BOOL CMSComm::GetNullDiscard() { BOOL result; InvokeHelper(0x10, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); return result; } void CMSComm::SetOutBufferSize(short nNewValue) { static BYTE parms[] = VTS_I2; InvokeHelper(0x11, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, nNewValue); } short CMSComm::GetOutBufferSize() { short result; InvokeHelper(0x11, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL); return result; } void CMSComm::SetOutBufferCount(short nNewValue) { static BYTE parms[] = VTS_I2; InvokeHelper(0x12, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, nNewValue); } short CMSComm::GetOutBufferCount() { short result; InvokeHelper(0x12, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL); return result; } void CMSComm::SetParityReplace(LPCTSTR lpszNewValue) { static BYTE parms[] = VTS_BSTR; InvokeHelper(0x13, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, lpszNewValue); } CString CMSComm::GetParityReplace() { CString result; InvokeHelper(0x13, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); return result; } void CMSComm::SetPortOpen(BOOL bNewValue) { static BYTE parms[] = VTS_BOOL; InvokeHelper(0x14, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, bNewValue); } BOOL CMSComm::GetPortOpen() { BOOL result; InvokeHelper(0x14, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); return result; } void CMSComm::SetRThreshold(short nNewValue) { static BYTE parms[] = VTS_I2; InvokeHelper(0x15, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, nNewValue); } short CMSComm::GetRThreshold() { short result; InvokeHelper(0x15, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL); return result; } void CMSComm::SetRTSEnable(BOOL bNewValue) { static BYTE parms[] = VTS_BOOL; InvokeHelper(0x16, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, bNewValue); } BOOL CMSComm::GetRTSEnable() { BOOL result; InvokeHelper(0x16, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); return result; } void CMSComm::SetSettings(LPCTSTR lpszNewValue) { static BYTE parms[] = VTS_BSTR; InvokeHelper(0x17, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, lpszNewValue); } CString CMSComm::GetSettings() { CString result; InvokeHelper(0x17, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); return result; } void CMSComm::SetSThreshold(short nNewValue) { static BYTE parms[] = VTS_I2; InvokeHelper(0x18, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, nNewValue); } short CMSComm::GetSThreshold() { short result; InvokeHelper(0x18, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL); return result; } void CMSComm::SetOutput(const VARIANT& newValue) { static BYTE parms[] = VTS_VARIANT; InvokeHelper(0x19, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, &newValue); } VARIANT CMSComm::GetOutput() { VARIANT result; InvokeHelper(0x19, DISPATCH_PROPERTYGET, VT_VARIANT, (void*)&result, NULL); return result; } void CMSComm::SetInput(const VARIANT& newValue) { static BYTE parms[] = VTS_VARIANT; InvokeHelper(0x1a, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, &newValue); } VARIANT CMSComm::GetInput() { VARIANT result; InvokeHelper(0x1a, DISPATCH_PROPERTYGET, VT_VARIANT, (void*)&result, NULL); return result; } void CMSComm::SetCommEvent(short nNewValue) { static BYTE parms[] = VTS_I2; InvokeHelper(0x1b, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, nNewValue); } short CMSComm::GetCommEvent() { short result; InvokeHelper(0x1b, DISPATCH_PROPERTYGET, VT_I2, (void*)&result, NULL); return result; } void CMSComm::SetEOFEnable(BOOL bNewValue) { static BYTE parms[] = VTS_BOOL; InvokeHelper(0x1c, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, bNewValue); } BOOL CMSComm::GetEOFEnable() { BOOL result; InvokeHelper(0x1c, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); return result; } void CMSComm::SetInputMode(long nNewValue) { static BYTE parms[] = VTS_I4; InvokeHelper(0x1d, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, nNewValue); } long CMSComm::GetInputMode() { long result; InvokeHelper(0x1d, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); return result; }
-
Ich ahtte auch mal dieses Problem, habe dann den Quellcode ein bischen umgeändert und dann hat es geklappt.
Probier mal diesen hier:// Mit Microsoft Visual C++ automatisch erstellte IDispatch-Kapselungsklasse(n). // HINWEIS: Die Inhalte dieser Datei nicht ändern. Wenn Microsoft Visual C++ // diese Klasse erneuert, werden Ihre Änderungen überschrieben. //eingefügt und spezifiziert aus der ActiveX Elementebox #include "stdafx.h" #include "mscomm.h" ///////////////////////////////////////////////////////////////////////////// // CMSComm IMPLEMENT_DYNCREATE(CMSComm, CWnd) ///////////////////////////////////////////////////////////////////////////// // Eigenschaften CMSComm ///////////////////////////////////////////////////////////////////////////// // Operationen CMSComm BOOL CMSComm::GetCDHolding() { BOOL result; GetProperty(0x1, VT_BOOL, (void*)&result); return result; } void CMSComm::SetCDHolding(BOOL propVal) { SetProperty(0x1, VT_BOOL, propVal); } long CMSComm::GetCDTimeout() { long result; GetProperty(0x2, VT_I4, (void*)&result); return result; } void CMSComm::SetCDTimeout(long propVal) { SetProperty(0x2, VT_I4, propVal); } short CMSComm::GetCommID() { short result; GetProperty(0x3, VT_I2, (void*)&result); return result; } void CMSComm::SetCommID(short propVal) { SetProperty(0x3, VT_I2, propVal); } short CMSComm::GetCommPort() { short result; GetProperty(0x4, VT_I2, (void*)&result); return result; } void CMSComm::SetCommPort(short propVal) { SetProperty(0x4, VT_I2, propVal); } BOOL CMSComm::GetCTSHolding() { BOOL result; GetProperty(0x5, VT_BOOL, (void*)&result); return result; } void CMSComm::SetCTSHolding(BOOL propVal) { SetProperty(0x5, VT_BOOL, propVal); } long CMSComm::GetCTSTimeout() { long result; GetProperty(0x6, VT_I4, (void*)&result); return result; } void CMSComm::SetCTSTimeout(long propVal) { SetProperty(0x6, VT_I4, propVal); } BOOL CMSComm::GetDSRHolding() { BOOL result; GetProperty(0x7, VT_BOOL, (void*)&result); return result; } void CMSComm::SetDSRHolding(BOOL propVal) { SetProperty(0x7, VT_BOOL, propVal); } long CMSComm::GetDSRTimeout() { long result; GetProperty(0x8, VT_I4, (void*)&result); return result; } void CMSComm::SetDSRTimeout(long propVal) { SetProperty(0x8, VT_I4, propVal); } BOOL CMSComm::GetDTREnable() { BOOL result; GetProperty(0x9, VT_BOOL, (void*)&result); return result; } void CMSComm::SetDTREnable(BOOL propVal) { SetProperty(0x9, VT_BOOL, propVal); } long CMSComm::GetHandshaking() { long result; GetProperty(0xa, VT_I4, (void*)&result); return result; } void CMSComm::SetHandshaking(long propVal) { SetProperty(0xa, VT_I4, propVal); } short CMSComm::GetInBufferSize() { short result; GetProperty(0xb, VT_I2, (void*)&result); return result; } void CMSComm::SetInBufferSize(short propVal) { SetProperty(0xb, VT_I2, propVal); } short CMSComm::GetInBufferCount() { short result; GetProperty(0xc, VT_I2, (void*)&result); return result; } void CMSComm::SetInBufferCount(short propVal) { SetProperty(0xc, VT_I2, propVal); } BOOL CMSComm::GetBreak() { BOOL result; GetProperty(0xd, VT_BOOL, (void*)&result); return result; } void CMSComm::SetBreak(BOOL propVal) { SetProperty(0xd, VT_BOOL, propVal); } short CMSComm::GetInputLen() { short result; GetProperty(0xe, VT_I2, (void*)&result); return result; } void CMSComm::SetInputLen(short propVal) { SetProperty(0xe, VT_I2, propVal); } long CMSComm::GetInterval() { long result; GetProperty(0xf, VT_I4, (void*)&result); return result; } void CMSComm::SetInterval(long propVal) { SetProperty(0xf, VT_I4, propVal); } BOOL CMSComm::GetNullDiscard() { BOOL result; GetProperty(0x10, VT_BOOL, (void*)&result); return result; } void CMSComm::SetNullDiscard(BOOL propVal) { SetProperty(0x10, VT_BOOL, propVal); } short CMSComm::GetOutBufferSize() { short result; GetProperty(0x11, VT_I2, (void*)&result); return result; } void CMSComm::SetOutBufferSize(short propVal) { SetProperty(0x11, VT_I2, propVal); } short CMSComm::GetOutBufferCount() { short result; GetProperty(0x12, VT_I2, (void*)&result); return result; } void CMSComm::SetOutBufferCount(short propVal) { SetProperty(0x12, VT_I2, propVal); } CString CMSComm::GetParityReplace() { CString result; GetProperty(0x13, VT_BSTR, (void*)&result); return result; } void CMSComm::SetParityReplace(LPCTSTR propVal) { SetProperty(0x13, VT_BSTR, propVal); } BOOL CMSComm::GetPortOpen() { BOOL result; GetProperty(0x14, VT_BOOL, (void*)&result); return result; } void CMSComm::SetPortOpen(BOOL propVal) { SetProperty(0x14, VT_BOOL, propVal); } short CMSComm::GetRThreshold() { short result; GetProperty(0x15, VT_I2, (void*)&result); return result; } void CMSComm::SetRThreshold(short propVal) { SetProperty(0x15, VT_I2, propVal); } BOOL CMSComm::GetRTSEnable() { BOOL result; GetProperty(0x16, VT_BOOL, (void*)&result); return result; } void CMSComm::SetRTSEnable(BOOL propVal) { SetProperty(0x16, VT_BOOL, propVal); } CString CMSComm::GetSettings() { CString result; GetProperty(0x17, VT_BSTR, (void*)&result); return result; } void CMSComm::SetSettings(LPCTSTR propVal) { SetProperty(0x17, VT_BSTR, propVal); } short CMSComm::GetSThreshold() { short result; GetProperty(0x18, VT_I2, (void*)&result); return result; } void CMSComm::SetSThreshold(short propVal) { SetProperty(0x18, VT_I2, propVal); } VARIANT CMSComm::GetOutput() { VARIANT result; GetProperty(0x19, VT_VARIANT, (void*)&result); return result; } void CMSComm::SetOutput(const VARIANT& propVal) { SetProperty(0x19, VT_VARIANT, &propVal); } CString CMSComm::GetInput() { CString result; GetProperty(0x1a, VT_BSTR, (void*)&result); return result; } void CMSComm::SetInput(LPCTSTR propVal) { SetProperty(0x1a, VT_BSTR, propVal); } short CMSComm::GetCommEvent() { short result; GetProperty(0x1b, VT_I2, (void*)&result); return result; } void CMSComm::SetCommEvent(short propVal) { SetProperty(0x1b, VT_I2, propVal); } ///////////////////////////////////////////////////////////////////////////// // CMSComm Operationen // eingefügt void CMSComm::AboutBox() { InvokeHelper(0xfffffdd8, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); }
Natürlich must du dann auch noch die headerdatei etwas umändern, noch halt die zusätzlichen dazunehmen und im main auch noch einfügen.
-
Hab endlich es mal gepackt die dazugehörige header zu finden. hier ist sie, so sollte es funktionieren, halt noch aufrufen im programm und so.
#if !defined(AFX_MSCOMM_H__E1798350_B712_11D9_AD7A_00001CDA4586__INCLUDED_) #define AFX_MSCOMM_H__E1798350_B712_11D9_AD7A_00001CDA4586__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // Mit Microsoft Visual C++ automatisch erstellte IDispatch-Kapselungsklasse(n). // HINWEIS: Die Inhalte dieser Datei nicht ändern. Wenn Microsoft Visual C++ // diese Klasse erneuert, werden Ihre Änderungen überschrieben. ///////////////////////////////////////////////////////////////////////////// // Wrapper-Klasse CMSComm class CMSComm : public CWnd { protected: DECLARE_DYNCREATE(CMSComm) public: CLSID const& GetClsid() { static CLSID const clsid = { 0x648a5600, 0x2c6e, 0x101b, { 0x82, 0xb6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14 } }; return clsid; } virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL) { return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); } BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CFile* pPersist = NULL, BOOL bStorage = FALSE, BSTR bstrLicKey = NULL) { return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID, pPersist, bStorage, bstrLicKey); } // Attribute public: BOOL GetCDHolding(); void SetCDHolding(BOOL); long GetCDTimeout(); void SetCDTimeout(long); short GetCommID(); void SetCommID(short); short GetCommPort(); void SetCommPort(short); BOOL GetCTSHolding(); void SetCTSHolding(BOOL); long GetCTSTimeout(); void SetCTSTimeout(long); BOOL GetDSRHolding(); void SetDSRHolding(BOOL); long GetDSRTimeout(); void SetDSRTimeout(long); BOOL GetDTREnable(); void SetDTREnable(BOOL); long GetHandshaking(); void SetHandshaking(long); short GetInBufferSize(); void SetInBufferSize(short); short GetInBufferCount(); void SetInBufferCount(short); BOOL GetBreak(); void SetBreak(BOOL); short GetInputLen(); void SetInputLen(short); long GetInterval(); void SetInterval(long); BOOL GetNullDiscard(); void SetNullDiscard(BOOL); short GetOutBufferSize(); void SetOutBufferSize(short); short GetOutBufferCount(); void SetOutBufferCount(short); CString GetParityReplace(); void SetParityReplace(LPCTSTR); BOOL GetPortOpen(); void SetPortOpen(BOOL); short GetRThreshold(); void SetRThreshold(short); BOOL GetRTSEnable(); void SetRTSEnable(BOOL); CString GetSettings(); void SetSettings(LPCTSTR); short GetSThreshold(); void SetSThreshold(short); VARIANT GetOutput(); void SetOutput(const VARIANT&); CString GetInput(); void SetInput(LPCTSTR); short GetCommEvent(); void SetCommEvent(short); // Operationen public: void AboutBox(); }; //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ fügt unmittelbar vor der vorhergehenden Zeile zusätzliche Deklarationen ein. #endif // AFX_MSCOMM_H__E1798350_B712_11D9_AD7A_00001CDA4586__INCLUDED_