123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- #include "stdafx.h"
- #include "Tool.h"
- #include "ToolDialog.h"
- #include "Resource.h"
- CToolImpl* m_pDllTool;
- DLL_TOOL_DESC m_Description;
- ///////////////////////////////////////////////////////////////////
- // 获取工具ID
- extern "C" __declspec(dllexport) const CString GetGlobalFileID()
- {
- return KEY;
- }
- ///////////////////////////////////////////////////////////////////
- // 返回工具新实例的指针
- extern "C" __declspec(dllexport) const CDllTool* GetToolPtr()
- {
- //if (m_pDllTool == NULL)
- //{
- m_pDllTool = new CToolImpl();
- //}
- return m_pDllTool;
- }
- ///////////////////////////////////////////////////////////////////
- // 获取工具描述
- extern "C" __declspec(dllexport) const DLL_TOOL_DESC& Description()
- {
- // 生成dll描述
- m_Description.strCategory = _T("变量工具");
- m_Description.strName = _T("Get_Int");
- m_Description.strAliasName = _T("Get_Int");
- m_Description.strVersion = _T("2.0");
- m_Description.strInfo = _T("This Info");
- return m_Description;
- }
- ////////////////////////////////////////////////////////////////////
- // 初始化
- int CToolImpl::InitTool(CWnd* pParent, CString strTaskName, CString strToolName)
- {
- AFX_MANAGE_STATE(AfxGetStaticModuleState());
- if (m_pDlgTool != NULL)
- {
- m_pDlgTool->m_strToolName = strToolName;
- m_pDlgTool->m_strTaskName = strTaskName;
- m_pDlgTool->Create(IDD_DIALOG, CWnd::FromHandle(pParent->GetSafeHwnd()));
- m_pDlgTool->ShowWindow(SW_HIDE);
- m_Even.hEvenHandle = NULL;
- m_Even = m_pDlgTool->GetEvent();
- }
- return 0;
- }
- CToolImpl::CToolImpl()
- {
- AFX_MANAGE_STATE(AfxGetStaticModuleState());
- m_pDlgTool = new CToolDialog();
- // 生成工具描述
- Description();
- // 生成接口默认描述
- InitDefaultInterfaces();
- }
- CToolImpl::~CToolImpl()
- {
- AFX_MANAGE_STATE(AfxGetStaticModuleState());
- if (m_pDlgTool != NULL)
- {
- if (m_pDlgTool->m_hWnd != NULL)
- {
- m_pDlgTool->DestroyWindow();
- }
- delete m_pDlgTool;
- m_pDlgTool = NULL;
- }
- if (m_Even.hEvenHandle != NULL)
- {
- CloseHandle(m_Even.hEvenHandle);
- m_Even.hEvenHandle = NULL;
- }
- }
- /////////////////////////////////////////////////
- // 生成默认的接口描述
- void CToolImpl::InitDefaultInterfaces()
- {
- // 接口
- DLL_INF inf;
- inf.strName = _T("Int0");
- inf.InfDirection = INF_OUT;
- inf.InfType = INF_VALUE_1;
- inf.InfWay = INF_BY_VALUE;
- inf.VarType = VAR_TYPE::float_Var;
- inf.pValue = (LPVOID*)&m_pDlgTool->m_Value1;
- inf.bSmartLink = TRUE;
- inf.bShow = TRUE;
- m_Interfaces.push_back(inf);
- inf.Reset();//////////////////////////////////////////////////////////////////////////
- inf.strName = _T("Int1");
- inf.InfDirection = INF_OUT;
- inf.InfType = INF_VALUE_1;
- inf.InfWay = INF_BY_VALUE;
- inf.VarType = VAR_TYPE::Int_Var;
- inf.pValue = (LPVOID*)&m_pDlgTool->m_Value;
- inf.bSmartLink = TRUE;
- inf.bShow = TRUE;
- m_Interfaces.push_back(inf);
- inf.Reset();//////////////////////////////////////////////////////////////////////////
- inf.strName = _T("TT");
- inf.InfDirection = INF_OUT;
- inf.InfType = INF_VALUE_1;
- inf.InfWay = INF_BY_VALUE;
- inf.VarType = VAR_TYPE::HTuple_Var;
- inf.pValue = (LPVOID*)&m_pDlgTool->m_hvTestValue;
- inf.bSmartLink = TRUE;
- inf.bShow = TRUE;
- m_Interfaces.push_back(inf);
- inf.Reset();//////////////////////////////////////////////////////////////////////////
- }
- //系统Run和Stop时调用
- void CToolImpl::Running(bool bRun)
- {
- if (m_pDlgTool->m_hWnd != NULL)
- {
- m_pDlgTool->Running(bRun);
- }
- }
- // 序列化
- void CToolImpl::Serialize(CArchive& ar,const int nExeVersion, const int nDocVersion)
- {
- AFX_MANAGE_STATE(AfxGetStaticModuleState());
- m_pDlgTool->g_nExeVersion = nExeVersion;
- m_pDlgTool->g_nDocVersion = nDocVersion;
- m_pDlgTool->Serialize(ar);
- }
- // 显示参数设置对话框
- void CToolImpl::ShowDialog(CString strTaskName, CString strToolName)
- {
- AFX_MANAGE_STATE(AfxGetStaticModuleState());
- if (m_pDlgTool->m_hWnd != NULL)
- {
- m_pDlgTool->BringWindowToTop();
- CPoint point;
- ::GetCursorPos(&point);
- CRect rect;
- m_pDlgTool->GetWindowRect(rect);
- //m_pDlgTool->SetWindowPos(NULL, point.x - rect.Width() / 2, point.y, -1, -1, SWP_NOSIZE | SWP_NOZORDER);
- m_pDlgTool->ShowWindow(SW_SHOW);
- m_pDlgTool->SetWindowTextW(strTaskName + _T(" ---> ") + strToolName);
- m_pDlgTool->m_strToolName = strToolName;
- }
- }
- // 获取工具的调试显示对象
- DEUBGOBJ CToolImpl::GetDeubgDispObj()
- {
- DEUBGOBJ mObj;
- return mObj;
- }
- int CToolImpl::Execute()
- {
- // ForTest输出执行的结果信息
- int nStatus = 0;
- if (m_pDlgTool->m_hWnd != NULL)
- {
- nStatus = m_pDlgTool->Execute();
- }
- // CString strTip;
- // strTip.Format(_T("Tool - %s\nInterface - %s\nExecute output:%d\n"),
- // m_Description.strName, m_Description.Interfaces[0].strName, m_Value1);
- // AfxMessageBox(strTip, MB_ICONINFORMATION);
- return nStatus;
- }
- // 工具的状态
- void CToolImpl::setReceToolStateCallBack(receToolStateCallBack callBack, long long userParam)
- {
- m_pDlgTool->m_pReceToolStateFunction = callBack;
- m_pDlgTool->m_ToolStateUserParam = userParam;
- }
- ///设置接收Log数据回调函数
- void CToolImpl::setReceLogCallBack(receLogCallBack callBack, long long userParam)
- {
- m_pDlgTool->m_pReceLogFunction = callBack;
- m_pDlgTool->m_LogUserParam = userParam;
- }
- ///设置接收 OnExecute 回调函数
- void CToolImpl::setOnExecuteCallBack(receOnExecutegCallBack callBack, long long userParam)
- {
- m_pDlgTool->m_pReceOnExecuteFunction = callBack;
- m_pDlgTool->m_OnExecuteUserParam = userParam;
- }
- ///设置接收 ToolBusy 回调函数
- void CToolImpl::setToolBusyCallBack(receToolBusyCallBack callBack, long long userParam)
- {
- m_pDlgTool->m_pReceToolBusyFunction = callBack;
- m_pDlgTool->m_ToolBusyUserParam = userParam;
- }
|