#include "stdafx.h" #include "PipeMajDlg.h" #include "KTModelLayoutXData.h" #include "coretools.h" #include "PipelineTools.h" #ifndef _BYGB_ #define _BYGB_ _T("按执行标准") #endif extern double g_minRadio; IMPLEMENT_DYNAMIC(CPipeMajDlg, CDialog) CPipeMajDlg::CPipeMajDlg(CWnd* pParent /*=NULL*/) : CDialog(CPipeMajDlg::IDD, pParent) , m_sMertialFit(_T("碳钢")) , m_sMertial(_T("碳钢")) { m_pDb = NULL; m_nDN = 100; m_dOD = 107; m_dt = 3.5; m_dPress = 1.0; m_sPress = _T("1.6A"); m_bPressureSel = TRUE; m_bUpdateMat = FALSE; m_nColorIndex = 256; m_nOnlyDN = 0; m_nRadioOn = 1; } CPipeMajDlg::~CPipeMajDlg() { } void CPipeMajDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_PIPELIST, m_wndPipeList); DDX_Control(pDX, IDC_LISTELBOWRAD, m_wndElbowradList); DDX_Control(pDX, IDC_LIST1, m_wndPressList); DDX_Control(pDX, IDC_LIST2, m_wndPressList2); DDX_Control(pDX, IDC_COMBO_SYS, m_wndComboPipeSys); DDX_Text(pDX,IDC_EDIT1,m_nDN); DDX_Text(pDX,IDC_EDIT2,m_dOD); DDX_Text(pDX,IDC_EDIT3,m_dt); DDX_Text(pDX,IDC_EDIT4,m_sPress); DDX_Text(pDX,IDC_EDIT5,m_dRatio); DDX_Radio(pDX, IDC_RADIO6, m_nRadioOn); DDX_Text(pDX,IDC_EDIT6,m_dPress); DDX_Check(pDX,IDC_CHECK1,m_bPressureSel); DDX_Check(pDX,IDC_CHECK2,m_bUpdateMat); DDX_CBString(pDX, IDC_COMBOMATERS, m_sMertial); DDX_Control(pDX, IDC_COMBOMATERS, m_wndComboMaters); DDX_Control(pDX, IDC_COMBOMATERSFIT, m_wndComboMatersFit); DDX_CBString(pDX, IDC_COMBOMATERSFIT, m_sMertialFit); DDX_CBString(pDX, IDC_COMBO_SYS, m_sPipeSys); } BEGIN_MESSAGE_MAP(CPipeMajDlg, CDialog) ON_BN_CLICKED(IDC_CHECK1,&CPipeMajDlg::OnCheckPressSwitch) ON_BN_CLICKED(IDC_CHECK2,&CPipeMajDlg::OnCheckUpdateMat) END_MESSAGE_MAP() //UPVC CPVC PVC-C PP-H (PE) HDPE bool CPipeMajDlg::IsPlasticsMat(int nPos, CString &sODNo) { const CString sPlastic = _T("UPVC CPVC PVC-C PP-H (PE) PE100 HDPE"); CStringArray arTxts; CoreTools::SplitStrintToArray(sPlastic, arTxts, _T(' ')); for (int i = 0; i < arTxts.GetSize(); i++) { if (nPos == 0) { if (m_sMertial.Find(arTxts.GetAt(i)) != -1) { sODNo = arTxts.GetAt(i); //以下 PVC-C PP-H PE100 的国标数据 替代 PVC if (sODNo.CompareNoCase(_T("PVC-C")) == 0) sODNo = _T("CPVC"); if (sODNo.Find(_T("(PE)")) == 0) sODNo = _T("PE"); if (sODNo.CompareNoCase(_T("PE100")) == 0) sODNo = _T("PE"); if (sODNo.CompareNoCase(_T("(PE100)")) == 0) sODNo = _T("PE"); return true; } } else { if (m_sMertialFit.Find(arTxts.GetAt(i)) != -1) { sODNo = arTxts.GetAt(i); return true; } } } return false; } BOOL CPipeMajDlg::IsGSFMaterial(CString &sODNo) { //目前只能按照材质判断 if (m_sMertial.Find(_T("衬塑")) != -1 || m_sMertial.Find(_T("HG/T 20538")) != -1) { sODNo = _T("GSF"); return TRUE; } return FALSE; } BOOL CPipeMajDlg::IsRCPMaterial(CString &sODNo) { //目前只能按照材质判断 if (m_sMertial.Find(_T("混凝土")) != -1) { sODNo = _T("RCP"); return TRUE; } return FALSE; } BOOL CPipeMajDlg::OnInitDialog() { CDialog::OnInitDialog(); //4K int iWidth = GetSystemMetrics(SM_CXSCREEN); int iHeight = GetSystemMetrics(SM_CYSCREEN); int nAdd = 0; if (iWidth >= 3800 && iHeight >= 2400)//4K { nAdd = 45; } //LIST m_wndPipeList.SetExtendedStyle(LVS_EX_FULLROWSELECT); m_wndPipeList.InsertColumn(0, _T("DN"), LVCFMT_LEFT, 70 + nAdd); m_wndPipeList.InsertColumn(1, _T("外径"), LVCFMT_LEFT, 70 + nAdd); m_wndPipeList.InsertColumn(2, _T("壁厚"), LVCFMT_LEFT, 60 + nAdd); m_wndPipeList.InsertColumn(3, _T("重量"), LVCFMT_LEFT, 62 + nAdd); m_wndPipeList.InsertColumn(4, _T("表号"), LVCFMT_LEFT, 65 + nAdd); m_wndPipeList.InsertColumn(5, _T("外径系列"), LVCFMT_CENTER, 80 + nAdd); //EXT m_wndPipeList.InsertColumn(6, _T("执行标准"), LVCFMT_LEFT, 300 + nAdd); //m_wndPipeList.InsertColumn(7, _T("物料描述"), LVCFMT_LEFT, 0); //m_wndPipeList.InsertColumn(8, _T("规格型号"), LVCFMT_LEFT, 0); if (m_pDb != NULL) { CString sODNo = m_param.szODSn; //再次确认 IsGSFMaterial(sODNo); IsPlasticsMat(0, sODNo); InitPipeList(50000, sODNo); InitPressFromDb(); CStringArray arVals; PipelineTools::getPipeSysRecord(m_pDb, m_sPipeSys, arVals); if (arVals.GetSize() >= 5) { m_nColorIndex = _ttoi(arVals.GetAt(2)); } } if (m_bPressureSel) { m_wndPressList2.ShowWindow(SW_SHOW); m_wndPressList.ShowWindow(SW_HIDE); } else { m_wndPressList2.ShowWindow(SW_HIDE); m_wndPressList.ShowWindow(SW_SHOW); } m_wndComboMatersFit.EnableWindow(m_bUpdateMat); m_wndComboMaters.EnableWindow(m_bUpdateMat); m_wndComboPipeSys.EnableWindow(m_bUpdateMat); UpdateData(FALSE); return TRUE; } void CPipeMajDlg::OnOK() { UpdateData(); POSITION ps = m_wndPipeList.GetFirstSelectedItemPosition(); if (ps != NULL) { int nItem = m_wndPipeList.GetNextSelectedItem(ps); if (nItem != -1) { m_param.m_dDN = _ttof(m_wndPipeList.GetItemText(nItem,0)); m_param.m_dOD = _ttof(m_wndPipeList.GetItemText(nItem,1)); m_param.m_dThick = _ttof(m_wndPipeList.GetItemText(nItem,2)); _tcscpy(m_param.szODSn,m_wndPipeList.GetItemText(nItem, 5)); _tcscpy(m_param.szStdNo, m_wndPipeList.GetItemText(nItem, 6)); } else { AfxMessageBox(_T("请选择管线规格系列!")); return; } } CString sText,sSQL; int nSel = m_wndElbowradList.GetCurSel(); if (nSel != -1) { //曲率 m_wndElbowradList.GetText(nSel, sText); if (sText.CompareNoCase(_BYGB_) == 0) { m_param.m_nRadioOn = TRUE;//按国标结构长度 m_param.m_dRRatio = g_minRadio;//最小 //根据ODSN查询数据库 默认曲率 sSQL.Format(_T("select distinct [弯头曲率] from [AecElbowData] where [外径系列]='%s' order by [弯头曲率]"), m_param.szODSn); CStringArray arRad; m_pDb->GetSelData(sSQL, arRad); if (arRad.GetSize() > 0) { m_param.m_dRRatio = _ttof(arRad.GetAt(0)); } } else { m_param.m_dRRatio = _ttof(sText); } } //不可变换等级 /*nSel = m_wndPressList.GetCurSel(); if (nSel != -1) { sText = _T(""); m_wndPressList.GetText(nSel,sText); _tcscpy(m_param.szLevel,(LPCTSTR)sText); }*/ m_dPress = 1.0; nSel = m_wndPressList2.GetCurSel(); if (nSel != -1) { sText = _T(""); m_wndPressList2.GetText(nSel,sText); m_dPress = _ttof(sText); } if (m_param.m_nConnectType == 3)//法兰管 { //查询法兰管的法兰数据 QueryFlangOnPipe(); } if (m_bUpdateMat) { CString sODNo = m_param.szODSn; CString sBk = m_sMertial; m_sMertial = m_param.szMertial; BOOL bIsPla1 = IsPlasticsMat(0, sODNo); BOOL bIsGasf1 = IsGSFMaterial(sODNo); BOOL bIsRcp1 = IsRCPMaterial(sODNo); m_sMertial = sBk; BOOL bIsPla2 = IsPlasticsMat(0,m_sMertial); BOOL bIsGasf2 = IsGSFMaterial(sODNo); BOOL bIsRcp2 = IsRCPMaterial(sODNo); //1. if (bIsPla1 && !bIsPla2) { if (sBk.CompareNoCase(m_param.szMertial) != 0) { AfxMessageBox(_T("不可以从塑料管切换成非塑料管!")); return; } } if (!bIsPla1 && bIsPla2) { if (sBk.CompareNoCase(m_param.szMertial) != 0) { AfxMessageBox(_T("不可以从非塑料管切换成塑料管!")); return; } } //2. if (bIsGasf1 && !bIsGasf2) { if (sBk.CompareNoCase(m_param.szMertial) != 0) { AfxMessageBox(_T("不可以从衬塑管切换成非衬塑管!")); return; } } if (!bIsGasf1 && bIsGasf2) { if (sBk.CompareNoCase(m_param.szMertial) != 0) { AfxMessageBox(_T("不可以从非衬塑管切换成衬塑管!")); return; } } //3. if (bIsRcp1 && !bIsGasf2) { if (sBk.CompareNoCase(m_param.szMertial) != 0) { AfxMessageBox(_T("不可以从水泥管切换成非水泥管!")); return; } } if (!bIsRcp1 && bIsGasf2) { if (sBk.CompareNoCase(m_param.szMertial) != 0) { AfxMessageBox(_T("不可以从非水泥管切换成水泥管!")); return; } } _tcscpy(m_param.szMertial,m_sMertial); _tcscpy(m_param.szMertialFit,m_sMertialFit); if (m_sPipeSys != _T("不修改管线系统")) { _tcscpy(m_param.szSys, m_sPipeSys); CStringArray arVals; PipelineTools::getPipeSysRecord(m_pDb, m_sPipeSys, arVals); if (arVals.GetSize() >= 5) { m_nColorIndex = _ttoi(arVals.GetAt(2)); } } } EndDialog(IDOK); } void CPipeMajDlg::OnCheckPressSwitch() { UpdateData(); if (m_bPressureSel) { m_wndPressList2.ShowWindow(SW_SHOW); m_wndPressList.ShowWindow(SW_HIDE); } else { m_wndPressList2.ShowWindow(SW_HIDE); m_wndPressList.ShowWindow(SW_SHOW); } } void CPipeMajDlg::OnCheckUpdateMat() { UpdateData(); m_wndComboMaters.EnableWindow(m_bUpdateMat); m_wndComboMatersFit.EnableWindow(m_bUpdateMat); m_wndComboPipeSys.EnableWindow(m_bUpdateMat); } void CPipeMajDlg::QueryFlangOnPipe() { double dWD, dWh, dd; if (CoreTools::QueryFlangData(m_pDb , m_param.m_dDN , m_dPress , dWD , dWh , dd , dd , CoreTools::GetCurrentProject() , m_param.szLevel)) { m_param.m_dInterfaceL = dWh; m_param.m_dInterfaceD = dWD; } } void CPipeMajDlg::SetDbServer(CUIISQLiteServer* pDb) { m_pDb = pDb; } void CPipeMajDlg::InitPipeList(int nMaxDN, CString sODNo) { if (m_pDb != NULL) { m_wndPipeList.DeleteAllItems(); //公称直径系列 bool bMODSN = false; CString sSQL, sText, sODAWhere = _T(""); if (sODNo.CompareNoCase(_T("A")) == 0 || sODNo.CompareNoCase(_T("B")) == 0 || sODNo.IsEmpty()) { sODAWhere = _T("([外径系列]='A' or [外径系列]='B' or [外径系列]='S')"); bMODSN = true; } else { sODAWhere.Format(_T("[外径系列]='%s'"), sODNo); } /* //公称直径系列 CString sSQL, sText; #ifdef HAITIAN if (m_nOnlyDN == 0) { sSQL = _T("select [公称直径],[外径],[壁厚],[重量],[执行标准],[物料描述],[规格型号] from AecOD order by [公称直径],[壁厚]"); } else { sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[执行标准],[物料描述],[规格型号] from AecOD where [公称直径]=%d order by [公称直径],[壁厚]"), m_nOnlyDN); } #else if (m_nOnlyDN == 0) { sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列] from AecOD where [公称直径]<%d and [外径系列]='%s' order by [公称直径],[壁厚],[表号]"), nMaxDN, sODNo); } else { sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列] from AecOD where [公称直径]=%d and [外径系列]='%s' order by [公称直径],[壁厚],[表号]"), m_nOnlyDN, sODNo); } #endif CUIIValueTable table; m_pDb->GetSelData(sSQL, table); if (table.GetTableLogicSize() == 0) { //按外径选 sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列] from AecOD where [外径]<=%d and [外径系列]='%s' order by [公称直径],[壁厚],[表号]"), m_nOnlyDN, sODNo); m_pDb->GetSelData(sSQL, table); }*/ if (m_nOnlyDN == 0) { //sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列] from AecOD where [公称直径]<%d and %s order by [公称直径],[壁厚],[外径系列],[表号]"), nMaxDN, sODAWhere); if (bMODSN) { sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列],[标准] from AecOD where [公称直径]<=%d and %s order by [外径系列] desc"), nMaxDN, sODAWhere); } else { sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列],[标准] from AecOD where [公称直径]<=%d and %s order by [外径系列],[公称直径],[壁厚]"), nMaxDN, sODAWhere); } } else { //sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列] from AecOD where [公称直径]=%d and %s order by [公称直径],[壁厚],[外径系列],[表号]"), m_nOnlyDN, sODAWhere); sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列],[标准] from AecOD where [公称直径]=%d and %s order by [外径系列],[公称直径],[壁厚] desc"), m_nOnlyDN, sODAWhere);// } CUIIValueTable table; m_pDb->GetSelData(sSQL, table); if (table.GetTableLogicSize() == 0) { //按外径选 //sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列] from AecOD where [外径]<=%d and %s order by [公称直径],[壁厚],[外径系列],[表号]"), m_nOnlyDN, sODAWhere); //按外径选 int nDN = (m_nOnlyDN == 0) ? nMaxDN : m_nOnlyDN; if (bMODSN) { sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列],[标准] from AecOD where [外径]<=%d and %s order by [外径系列]"), nDN, sODAWhere); } else { sSQL.Format(_T("select [公称直径],[外径],[壁厚],[重量],[表号],[外径系列],[标准] from AecOD where [外径]<=%d and %s order by [外径系列],[公称直径],[壁厚]"), nDN, sODAWhere); } m_pDb->GetSelData(sSQL, table); } table.ShowToListCtrl(&m_wndPipeList); CString sDnold, sThick,sODNo2; sDnold.Format(_T("%d"), m_nDN); int iStart = -1; bool bFind = false; for (int i = 0; i < m_wndPipeList.GetItemCount(); i++) { sText = m_wndPipeList.GetItemText(i, 0); sThick = m_wndPipeList.GetItemText(i, 2); sODNo2 = m_wndPipeList.GetItemText(i, 5); if (sText.CompareNoCase(sDnold) == 0 && iStart == -1) iStart = i; if (sText.CompareNoCase(sDnold) == 0 && fabs(_ttof(sThick) - m_dt) < 1.e-6 && sODNo2.CompareNoCase(sODNo) == 0) { iStart = i; m_wndPipeList.SetItemState(i, LVIS_SELECTED, LVIS_SELECTED); m_wndPipeList.EnsureVisible(i, TRUE); bFind = true; break; } } if (!bFind) { if (iStart == -1) iStart = 0; if (m_wndPipeList.GetItemCount() > 0) m_wndPipeList.SetItemState(iStart, LVIS_SELECTED, LVIS_SELECTED); m_wndPipeList.EnsureVisible(iStart, TRUE); } //曲率半径 //sSQL = _T("select [曲率半径] from AecElbowradius order by [曲率半径]"); sSQL.Format(_T("select distinct [弯头曲率] from AecElbowData where %s order by [弯头曲率]"), sODAWhere); int nSel = 0; CString sRat; CStringArray arVals; arVals.Add(_BYGB_); m_pDb->GetSelData(sSQL,arVals); for ( i = 0;i < arVals.GetSize();i++) { m_wndElbowradList.InsertString(i,arVals.GetAt(i)); sRat = arVals.GetAt(i); if ( fabs(_ttof(sRat) - m_param.m_dRRatio) < 1.e-6) { nSel = i; if ((m_param.m_dRRatio - g_minRadio) < 1.e-3) nSel = 0; } } m_wndElbowradList.SetCurSel(nSel); //材质 arVals.RemoveAll(); sSQL = _T("select [材质] from AecMaterial where [类型]='管道'"); m_pDb->GetSelData(sSQL,arVals); for (i = 0;i < arVals.GetSize();i++) { m_wndComboMaters.InsertString(i,arVals.GetAt(i)); if (m_sMertial.CompareNoCase(arVals.GetAt(i)) == 0) { m_wndComboMaters.SetCurSel(i); } } //材质 arVals.RemoveAll(); sSQL = _T("select [材质] from AecMaterial where [类型]='管件'"); m_pDb->GetSelData(sSQL,arVals); for (i = 0;i < arVals.GetSize();i++) { m_wndComboMatersFit.InsertString(i,arVals.GetAt(i)); if (m_sMertialFit.CompareNoCase(arVals.GetAt(i)) == 0) { m_wndComboMatersFit.SetCurSel(i); } } // 初始化管线系统 { CString sStd(CoreTools::getCurrentPipeSysTblName()), sTemp; //sSQL = _T("select tablename from wpipecfg where currstd=1"); //m_pDb->GetSelData(sSQL, sStd); sSQL.Format(_T("select distinct system from %s"), sStd); CStringArray arSyses; m_pDb->GetSelData(sSQL, arSyses); m_wndComboPipeSys.AddString(_T("不修改管线系统")); for (int i = 0; i < arSyses.GetSize(); i++) { sTemp = arSyses.GetAt(i); m_wndComboPipeSys.AddString(sTemp); } //再从图层中加一遍 m_wndComboPipeSys.SetCurSel(0); } } } void CPipeMajDlg::InitPressFromDb() { //获取项目名称 AecDbObjXDataMap xDataMap; xDataMap.SetAt(DOC_TRADE, WPipe::ePetro); //应用行业,石油 xDataMap.SetAt(DOC_SCALE, _T("1:50")); //出图比例 xDataMap.SetAt(DOC_PLOTWIDTH, 0.5); //最小打印线宽 xDataMap.SetAt(DOC_DPLOTWIDTH, 0.5); //双线打印线宽 xDataMap.SetAt(DOC_WELDDIA, 1.0); //焊点直径 xDataMap.SetAt(DOC_PIPEMINDIA, 65.0); //最小管道直径 xDataMap.SetAt(DOC_PIPEMAXDIA, 200.0); //最大管线直径 xDataMap.SetAt(DOC_PERELBOWDIA, 40.0); //垂直弯头直径 xDataMap.SetAt(DOC_BREAKSPACE, 2.0); //交叉断线间距 xDataMap.SetAt(DOC_UNIT, 0); //单位 xDataMap.SetAt(DOC_DIMTERM, 0); //标注端符 xDataMap.SetAt(DOC_DIMTXTH, 2.0); //标注文字高度 xDataMap.SetAt(DOC_DIMTXTF, 0.7); //标注文字宽度系数 xDataMap.SetAt(DOC_EQPTXTH, 2.0); //设备标注文字高度 xDataMap.SetAt(DOC_EQPTXTF, 1.0); //设备标注文字宽度系数 xDataMap.SetAt(DOC_STRTXTH, 2.0); //结构标注文字高度 xDataMap.SetAt(DOC_STRTXTF, 0.7); //结构标注文字宽度系数 xDataMap.SetAt(DOC_SCRIPTT, _T("{0}{-}{1}{-}{2}{-}{3}"));//上标脚本 xDataMap.SetAt(DOC_SCRIPTB, _T("{4}{-}{5}"));//下标脚本 xDataMap.SetAt(DOC_ELTYPE, 0); //标高设置 xDataMap.SetAt(DOC_ELDESCR, _T("--")); //标高文本 if (!KTModelLayoutXData::ReadModelXData(KT_PIPEINIT,xDataMap)) { acedAlert(_T("\n系统未初始化!")); return; } CString sProject; xDataMap.GetAt(DOC_PIDPROJECT,sProject); CString sSQL; sSQL.Format(_T("select [等级名称] from AecSpecname where [项目名称]='%s'"),sProject); CStringArray arValues; m_pDb->GetSelData(sSQL,arValues); m_wndPressList.ResetContent(); for (int i = 0;i < arValues.GetSize();i++) { m_wndPressList.InsertString(i,arValues.GetAt(i)); } int nIndex = m_wndPressList.FindString(0,m_param.szLevel);//压力等级 if (nIndex != -1) { m_wndPressList.SetCurSel(nIndex); } else { m_wndPressList.SetCurSel(0); } //压力表 sSQL.Format(_T("select [压力] from aecpressure order by [压力]")); arValues.RemoveAll(); m_pDb->GetSelData(sSQL,arValues); m_wndPressList2.ResetContent(); for (int i = 0;i < arValues.GetSize();i++) { m_wndPressList2.InsertString(i,arValues.GetAt(i)); if ( fabs(_ttof(arValues.GetAt(i)) - m_dPress) < 1.e-3) { m_wndPressList2.SetCurSel(i); } } } void CPipeMajDlg::SetShowParam(WPipe::PipeParam* pParam) { if (pParam != NULL) { double dScale = CoreTools::IsMetersUnit() ? 1000. : 1; memcpy(&m_param,pParam,sizeof(WPipe::PipeParam)); m_nDN = (int)(pParam->m_dDN * dScale + 0.5); m_dOD = pParam->m_dOD * dScale; m_dt = pParam->m_dThick * dScale; m_dRatio = pParam->m_dRRatio; m_nRadioOn = 1;// pParam->m_nRadioOn; m_sPress = pParam->szLevel; m_dPress = pParam->m_dPress; m_sMertial = pParam->szMertial; m_sMertialFit = pParam->szMertialFit; //兼容 if (m_sMertial.Find(_T("衬塑")) != -1) { m_sMertial = _T("衬塑管"); m_sMertialFit = _T("衬塑管"); _tcscpy(m_param.szMertial, m_sMertial); _tcscpy(m_param.szMertialFit, m_sMertialFit); } } } void CPipeMajDlg::GetPipeParam(WPipe::PipeParam* pParam) const { if (pParam != NULL) { memcpy(pParam,&m_param,sizeof(WPipe::PipeParam)); } }