728x90
반응형

OCX 3

[C#] OCX에 포인터 데이터 넘기기

C#에는 기본적으로 포인터를 지원하지 않는다. 포인터를 사용하기 위해서 unsafe를 이용하던데, 기본적으로 사용하지 말라고 한 것을 굳이 사용해야 싶어서 구글링 해서 여기저기 검색해 보았다. 가장 간단한 방법으로 C++에서도 사용하던 것인데 포인터의 주소를 넘기는 것이다. 포인터의 주소는 32bit에서는 long으로 64bit에서는 __int64 혹은 long long으로 넘겨주곤 했다. C#은 모두 long long이다. 그렇기 때문에 OCX의 메서드를 만들 때에도 LONGLONG으로 만들어야 한다. void CtopgraphCtrl::AddArrayDataPtr(LPCTSTR name, LONG length, LONGLONG xPtr, LONGLONG yPtr, LONGLONG zPtr) 포인터의 ..

Program Language/C# 2022.10.26

[C#] C++로 만들어진 OCX 사용하기

C++로 ActiveX를 만든 뒤, 메서드나 속성을 등록하면 아래와 같은 형식이 된다. // Primary dispatch interface for CtopgraphCtrl [ uuid(E46EECAA-BACD-41EC-A75F-0D463AABA133) ] dispinterface _Dtopgraph { properties: [id(1000)] DOUBLE ScaleX; methods: [id(DISPID_ABOUTBOX)] void AboutBox(); [id(1)] void CreateGraph(BSTR name, LONGLONG color); [id(2)] void DeleteGraph(BSTR name); [id(3)] void Clear(); [id(4)] void AddData(BSTR nam..

Program Language/C# 2022.10.26
728x90
반응형