#include "stdafx.h" #include #include "WellPoleDoc.h" #include "WellPoleView.h" #include "WellPoleLib/WellBaseObj.h" #include "WellPoleLib/InTrackDepthSegment.h" #include "WellPoleLib/TrackObj.h" #include "WellPoleLib/InclinedTrack.h" #include "WellPoleLib/InTrackLith.h" #include "WellPoleLib/InTrackSymbol.h" #include "WellPoleLib/InTrackResult.h" #include "WellPoleLib/InTrackTextRange.h" #include "WellPoleLib/TrackGroup.h" #include "WellPoleLib/WellPole.h" #include "WellPoleLib/TrackDepth.h" #include "WellPoleLib/TrackCurve.h" #include "WellPoleLib/TrackSymbol.h" #include "WellPoleLib/TrackResult.h" #include "WellPoleLib/TrackLith.h" #include "WellPoleLib/TrackText.h" #include "WellPoleLib/WellObjExtendInfo.h" #include "ItemSingleWell.h" #include "CPlusCallBack.h" extern "C" __declspec(dllexport) CWellPoleView* CreateWellPoleView() { CWellPoleView* pWellView = new CWellPoleView(); return pWellView; } extern "C" __declspec(dllexport) CWellPole* CreateNewWell(CWellPoleView* pWellView, LPCTSTR wellName,double top,double bottom,double ratio,LPCTSTR wellTemplateFile) { CWellPole* pWell = NULL; pWell = pWellView->GetDocument()->CreateNewWell(wellName, top, bottom, ratio, wellTemplateFile); return pWell; } extern "C" __declspec(dllexport) void ViewExtendCenter(CWellPoleView* pWellView) { pWellView->ViewExtendCenter(); } extern "C" __declspec(dllexport) void ViewExtendWidth(CWellPoleView* pWellView) { pWellView->ViewExtendWidth(); } extern "C" __declspec(dllexport) void InitWellPosition(CWellPoleView* pWellView,int lrEdge)//刚打开井文件时,把井移动道图中间 { pWellView->InitWellPosition(lrEdge); } // 导出注册回调的函数 extern "C" NATIVEDLL_API void RegisterCallback(CWellPoleView* pWellView,InvalidateWndCallback callback) { pWellView->m_pWndCallBack = callback; } extern "C" __declspec(dllexport) int ViewSetItemForSelectedElement(CWellPoleView* pWellView, int x, int y) { return pWellView->ViewSetItemForSelectedElement(x,y); } extern "C" __declspec(dllexport) BOOL SelectWellPoleSetCursor(CWellPoleView * pView, int ptX, int ptY, int& handle) { handle = -1; if (pView == NULL) return FALSE; CItem * pItem = pView->GetItem(); if (pItem == NULL) return FALSE; if (pItem->GetType() != ITEM_WELLPOLE) return FALSE; CItemSingleWell * pItemSingleWell = (CItemSingleWell *)pItem; BOOL bSuccess = pItemSingleWell->OnSetCursor(CPoint(ptX, ptY), handle); return bSuccess; } extern "C" __declspec(dllexport) void SetWellPoleViewOperationKind(CWellPoleView* pWellView, int kind) { if (kind == 1) { pWellView->SetViewPan(); } else if (kind == 2) { pWellView->SetViewWindow(); } else if (kind == 3) { pWellView->SetWellPoleViewPan(); } else if (kind == 0) { pWellView->SetViewPanInvalidate(); } } extern "C" __declspec(dllexport) BOOL IsLockWellHead(CWellPoleView* pWellView) { return pWellView->m_bLockWellHead; } extern "C" __declspec(dllexport) void SetLockWellHead(CWellPoleView* pWellView,bool block) { pWellView->SetLockWellHead(block); } extern "C" __declspec(dllexport) void MouseWheelForLockWellHead(CWellPoleView* pWellView,UINT nFlags, int zDelta, int x, int y) { CPoint pt; pt.x = x; pt.y = y; if (nFlags == 0) { if (pWellView->m_bLockWellHead) //目前只用来在锁定井头时使用 { pWellView->MouseWheelVLockHead(nFlags, zDelta, pt); } } //else // pWellView->MouseWheelH(nFlags, zDelta, pt); } extern "C" __declspec(dllexport) void ScrollVForLockWellHead(CWellPoleView* pWellView, int nFlags, int scrollValue, int pageSize, int lineSize, int scrollMin,int scrollMax) { pWellView->ScrollVForLockWellHead(nFlags, scrollValue, pageSize, lineSize, scrollMin, scrollMax); } extern "C" __declspec(dllexport) void SetScrollBarVRangeForLockWellHead(CWellPoleView* pWellView, int& vrange, int & page, int &value) { pWellView->SetScrollBarVRangeForLockWellHead(vrange, page, value); } extern "C" __declspec(dllexport) BOOL GetSelectWellObject(CWellPoleView* pWellView, int& type,int& ttype, ULONGLONG& objHandle) { BOOL b = false; type = -1; ttype = -1; objHandle = 0; b = pWellView->GetSelectWellObject(type, ttype, objHandle); return b; } extern "C" __declspec(dllexport) void FreeByteArray(BYTE* pBuff) { delete []pBuff; } extern "C" __declspec(dllexport) int GetWellTrackTypeInfo(BYTE*& typeBuff, int& typeBuffLen, BYTE*& typeStrBuf, int& typeStrLen) { int typeNum = 0; typeBuff = NULL; typeBuffLen = 0; typeStrBuf = NULL; typeStrLen = 0; std::vector trackInfos = CWellObjExtendInfoMgr::GetInstance()->GetWellTrackInfos(); if (trackInfos.size() == 0) return typeNum; typeNum = int(trackInfos.size()); int* typeArr = (int*)(new BYTE[typeNum*sizeof(int)]); CString strTypeStr; for (int ii = 0; ii < int(trackInfos.size()); ii++) { typeArr[ii] = trackInfos[ii]->m_type; strTypeStr = strTypeStr + "|" + trackInfos[ii]->m_cTypeStr; } typeBuff = (BYTE*)typeArr; typeBuffLen = sizeof(int)* int(trackInfos.size()); strTypeStr.TrimLeft("|"); typeStrBuf = (new BYTE[strTypeStr.GetLength()]); memcpy((char*)typeStrBuf, strTypeStr.GetBuffer(),strTypeStr.GetLength()); typeStrLen = strTypeStr.GetLength(); return typeNum; } extern "C" __declspec(dllexport) BOOL AddTrackAfterSelectedWellObject(CWellPoleView* pWellView, int trackType[],int trackNum) { return pWellView->AddTrackAfterSelectedWellObject(trackType,trackNum); } extern "C" __declspec(dllexport) BOOL DeleteSelectedWellObject(CWellPoleView* pWellView) { return pWellView->DeleteSelectedWellObject(); } extern "C" __declspec(dllexport) BOOL SelectedTrackCombineLeftTrack(CWellPoleView* pWellView) { return pWellView->CombineLeftTrack(); } extern "C" __declspec(dllexport) BOOL SelectedTrackCombineRightTrack(CWellPoleView* pWellView) { return pWellView->CombineRightTrack(); } extern "C" __declspec(dllexport) BOOL GetSelectedWell(CWellPoleView* pWellView, ULONGLONG& objHandle) { BOOL b = FALSE; objHandle = 0; b = pWellView->GetSelectedWell(objHandle); return b; } extern "C" __declspec(dllexport) BOOL GetWellTrackDataJson(CWellPoleView* pWellView, ULONGLONG trackHandle, BYTE*& jsonBuf, int& dataLen) { BOOL b = FALSE; jsonBuf = NULL; dataLen = 0; CString strJson; if (pWellView->GetWellTrackDataJson(trackHandle,strJson) == FALSE) return b; jsonBuf = (new BYTE[strJson.GetLength()]); memcpy((char*)jsonBuf, strJson.GetBuffer(), strJson.GetLength()); dataLen = strJson.GetLength(); return TRUE; } extern "C" __declspec(dllexport) BOOL SetWellTrackDataJson(CWellPoleView* pWellView, ULONGLONG trackHandle, BYTE* jsonBuf, int dataLen) { char* pBuf = new char[dataLen + 1]; pBuf[dataLen] = 0; memcpy(pBuf, jsonBuf, dataLen); BOOL b = pWellView->SetWellTrackDataJson(trackHandle, pBuf); return b; } extern "C" __declspec(dllexport) BOOL SetPictureInWellTrack(CWellPoleView* pWellView, ULONGLONG pictureObjHandle, LPCSTR filePath) { BOOL b = FALSE; b = pWellView->SetPictureInWellTrack(pictureObjHandle, filePath); return b; }