⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jhhbdoc.cpp

📁 环保局污染设备在线控制系统
💻 CPP
📖 第 1 页 / 共 4 页
字号:

					ASSERT(pCurCtrlInfo->m_status == CCtrlInfoObject::COMM_STATUS_IDLE);
					timeSpan = timeCurrent - pCurCtrlInfo->m_lastTime;

					if ((pCurCtrlInfo->m_bCommSuccess==FALSE)||(timeSpan.GetTotalSeconds()/60 > pJHHBDoc->m_nRefreshTimeout))//2001年6月1日改,原无(pCurCtrlInfo->m_bCommSuccess==FALSE)
					{																										//GetTotalSeconds()/60处为GetTotalSeconds()
						pJHHBDoc->SendRequestString(n+1, timeCurrent);
						break;
					}
				}
				if (n == pJHHBDoc->m_ctrlInfoArray.GetSize())
				{
					for (n = 0; n < pJHHBDoc->m_ctrlInfoArray.GetSize(); ++ n)
					{	
						CCtrlInfoObject*	pCurCtrlInfo = pJHHBDoc->m_ctrlInfoArray[n];
						if (pCurCtrlInfo->m_bActive == FALSE)
							continue;
						ASSERT(pCurCtrlInfo->m_status == CCtrlInfoObject::COMM_STATUS_IDLE);
						timeSpan = timeCurrent - pCurCtrlInfo->m_lastTime;
						if ((pCurCtrlInfo->m_bCommSuccess==FALSE)||(timeSpan.GetTotalSeconds()>600))//2001年6月1日改,原||处为&&,FALSE处为TRUE
						{	
							pJHHBDoc->SendRequestString(n + 1, timeCurrent);
							break;
						}
					}
				}// Try Communicate with unsuccessfully at last
			}	// 10 seconds interval elapses	
		}
		else
		{		//定点转播
			if (pJHHBDoc->m_pdlgReal!=NULL)
				pJHHBDoc->m_pdlgReal->UpdateWaitProgressCtrl();
		}
	}
}

BOOL CJHHBDoc::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) 
{
	if (nCode==-1)	
		return  CDocument::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);

	CJHHBDoc*	pJHHBDoc = this;//(CJHHBDoc*)GetActiveDocument();
	ASSERT(pJHHBDoc->IsKindOf(RUNTIME_CLASS(CJHHBDoc)));

	switch (nID)
	{
	// data from Comm Port
	case  CJHHBDoc::CM_COMM + CCommInfo::ID_COMM_READ:
	{
		if (pJHHBDoc->m_bAutoActivated == TRUE && pJHHBDoc->m_bRelayActivated == TRUE )
		{
			::SetEvent(m_pComm->m_hPostEvent);
			ASSERT(FALSE);
			return  TRUE;	//	Eixst some error debug it !
		}
		// because maybe some noise, so no ASSERT at here
		if (pJHHBDoc->m_bAutoActivated == FALSE && pJHHBDoc->m_bRelayActivated == FALSE )
		{
			*((WORD*)pJHHBDoc->m_pReadCommBuf) = 0;
			::SetEvent(m_pComm->m_hPostEvent);
			return  TRUE;						//	忽略干扰信号引起的通讯
		}

		if (pJHHBDoc->m_bAutoActivated == FALSE && pJHHBDoc->m_bRelayActivated == TRUE )
		{										//  接收实况转播
			int	nReceive = *(WORD*)pJHHBDoc->m_pReadCommBuf;	// receive byte number
			if (nReceive==0)
			{
					*((WORD*)pJHHBDoc->m_pReadCommBuf) = 0;
					::SetEvent(m_pComm->m_hPostEvent);
					return  TRUE;
			}
			for (int i=0; i<nReceive;i++)
				TRACE3("This time receive %2d # is %d : %x\n",i+1,*(BYTE*)(m_pReadCommBuf+(i+2)*sizeof(BYTE)),*(BYTE*)(m_pReadCommBuf+(i+2)*sizeof(BYTE)) );
		
			::memcpy(m_pGetDataBuf + m_nReceiveCount, m_pReadCommBuf + sizeof(WORD), nReceive );
			pJHHBDoc->m_nReceiveCount += nReceive; 
			TRACE1(" +/+ CURRENT RECEIVE %d \n",pJHHBDoc->m_nReceiveCount);

			if (pJHHBDoc->m_pstrHead==NULL) 
			{
				pJHHBDoc->m_pstrHead=strstr((char *)pJHHBDoc->m_pGetDataBuf,"HEAD");
				if (pJHHBDoc->m_pstrHead!=NULL)
				{	//确认起始串"HEAD"
					int nGap=pJHHBDoc->m_pstrHead - (char *)pJHHBDoc->m_pGetDataBuf;
					ASSERT(nGap>=0);
					pJHHBDoc->m_nReceiveCount-=nGap ;
					::memcpy(pJHHBDoc->m_pGetDataBuf , pJHHBDoc->m_pstrHead, pJHHBDoc->m_nReceiveCount );
				}	//在有干扰时修正起始位置
			}
			if (pJHHBDoc->m_nReceiveCount >=18 && pJHHBDoc->m_pstrHead!=NULL) 
			{
				for (int j=0; j<pJHHBDoc->m_nReceiveCount;j++)
					TRACE3("GetBuff array %2d # is %d : %c\n",j+1,pJHHBDoc->m_pGetDataBuf[j],pJHHBDoc->m_pGetDataBuf[j] );

				TRACE0("VVV Hi Hi Hi ... OVER !\n");
				pJHHBDoc->m_nReceiveCount=0;
				*((WORD*)pJHHBDoc->m_pReadCommBuf) = 0;
				::SetEvent(m_pComm->m_hPostEvent);
				//ASSERT(pJHHBDoc->m_pdlgReal!=NULL);
				if (pJHHBDoc->m_pdlgReal!=NULL)
					pJHHBDoc->m_pdlgReal->RefreshRelay((BYTE *)pJHHBDoc->m_pGetDataBuf);
				pJHHBDoc->m_pstrHead=NULL;
				return  TRUE;						
			}
			if (pJHHBDoc->m_nReceiveCount >=18 && pJHHBDoc->m_pstrHead==NULL) 
			{
				TRACE0("XXX OVER & ERROR !\n");

				pJHHBDoc->m_nReceiveCount=0;
				*((WORD*)pJHHBDoc->m_pReadCommBuf) = 0;
				::SetEvent(m_pComm->m_hPostEvent);
				pJHHBDoc->m_pstrHead=NULL;
				return  TRUE;						
			}
		}	
		if (pJHHBDoc->m_bAutoActivated == TRUE && pJHHBDoc->m_bRelayActivated == FALSE )
		{										//  接收自动转播
			pJHHBDoc->m_ctrlInfoArray[CCtrlInfoObject::m_nCurWorkStation - 1]->m_lastTime = CTime::GetCurrentTime();
			pJHHBDoc->m_ctrlInfoArray[CCtrlInfoObject::m_nCurWorkStation - 1]->m_status = CCtrlInfoObject::COMM_STATUS_TRANSDATA;

			int	nReceive = *(WORD*)pJHHBDoc->m_pReadCommBuf;	// receive byte number
			if (nReceive<=0)
			{
					*((WORD*)pJHHBDoc->m_pReadCommBuf) = 0;
					::SetEvent(m_pComm->m_hPostEvent);
					return  TRUE;
			}

			for (int i=0; i<nReceive;i++)
				TRACE3("This time receive %2d # is %d : %c\n",i+1,*(BYTE*)(m_pReadCommBuf+(i+2)*sizeof(BYTE)),*(BYTE*)(m_pReadCommBuf+(i+2)*sizeof(BYTE)) );
		
			::memcpy(m_pGetDataBuf + m_nReceiveCount, m_pReadCommBuf + sizeof(WORD), nReceive );
			pJHHBDoc->m_nReceiveCount += nReceive; 
			TRACE1(" +/+ CURRENT RECEIVE %d \n",pJHHBDoc->m_nReceiveCount);

			if (pJHHBDoc->m_pstrHead==NULL) 
			{
				pJHHBDoc->m_pstrHead=strstr((char *)pJHHBDoc->m_pGetDataBuf,_T("BEGIN"));
				if (pJHHBDoc->m_pstrHead!=NULL)
				{	//确认起始串"BEGIN"
					int nGap=pJHHBDoc->m_pstrHead - (char *)pJHHBDoc->m_pGetDataBuf;
					ASSERT(nGap>=0);
					pJHHBDoc->m_nReceiveCount-=nGap ;
					if (pJHHBDoc->m_nReceiveCount>=0)
					{
						::memcpy(pJHHBDoc->m_pGetDataBuf , pJHHBDoc->m_pstrHead, pJHHBDoc->m_nReceiveCount );
						//在有干扰时修正起始位置,并得到确认
					}
					else
					{	
						//起始位置不对或上次数据存留在缓存,恢复原值
						pJHHBDoc->m_nReceiveCount+=nGap;
						pJHHBDoc->m_pstrHead=NULL;
					}
				}	
			}

			if (pJHHBDoc->m_nTotalReceive==0 && pJHHBDoc->m_pstrHead!=NULL
				&&	pJHHBDoc->m_nReceiveCount >=7) // count number is received !
			{			
				pJHHBDoc->m_nTotalReceive = *(WORD*)(pJHHBDoc->m_pGetDataBuf + 5);
			}		

			if (pJHHBDoc->m_nReceiveCount >= pJHHBDoc->m_nTotalReceive 
				&& pJHHBDoc->m_pstrHead!=NULL)
			{
				pJHHBDoc->m_bAutoActivated = FALSE;
				TRACE1("m_nReceiveCount is -- %d -- ! \n", pJHHBDoc->m_nReceiveCount);
				TRACE1("m_nTotalReceive is -- %d -- ! \n", pJHHBDoc->m_nTotalReceive);
				for (int j=0; j<pJHHBDoc->m_nReceiveCount;j++)
					TRACE3("GetBuff array %2d # is %d : %c\n",j+1,pJHHBDoc->m_pGetDataBuf[j],pJHHBDoc->m_pGetDataBuf[j] );

				if (memcmp(pJHHBDoc->m_pGetDataBuf + pJHHBDoc->m_nTotalReceive - 3,"END",3) == 0)
				{					//确认结尾串"END"
					TRACE0("OK !\n");
					pJHHBDoc->ParseData();
				}
				else
				{
					TRACE0("FAIL !\n");
				}
				pJHHBDoc->m_pstrHead=NULL;
				pJHHBDoc->m_nReceiveCount = 0;
				pJHHBDoc->m_nTotalReceive = 0;
			}
		}
		*((WORD*)pJHHBDoc->m_pReadCommBuf) = 0;
		::SetEvent(m_pComm->m_hPostEvent);
		return  TRUE;
	}

	case CJHHBDoc::CM_COMM + CCommInfo::ID_COMM_ERROR:
		TRACE0("Comm Error !\n");
		return  TRUE;
	default:
		return  CDocument::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
	}
}

# include "fstream.h"
void CJHHBDoc::OnDataPrintD() 
{
	CDaoHBRecSet*	m_pDaoHBPrintSet = 	m_pDaoHBRecSet;
	long m_nPrintRecCount=m_pDaoHBPrintSet->GetRecordCount( );
	
	if ( m_nPrintRecCount==0L)
		return;
	
	CPrintRecUnit	m_aPrintRec[144];
	m_pDaoHBPrintSet->MoveFirst( );
	int i;
	for ( i=0;i<144;i++)
	{
		m_aPrintRec[i].str_NO.Format(_T("%4d"),i+1);
		m_aPrintRec[i].str_Time.Format(IDS_SAVETIMEFMT, i / 6,( i % 6 )* 10);
		m_aPrintRec[i].str_PH=_T("      ");
		//COD
		//FLOW
		//NH4N
	}
	m_pDaoHBPrintSet->MoveFirst( );
	for ( i=0;i<m_nPrintRecCount;i++)
	{
		m_aPrintRec[int( m_pDaoHBPrintSet->m_NO -1 )].str_PH.Format(
			_T(" %5.2f"),
			m_pDaoHBPrintSet->m_PH);
		m_pDaoHBPrintSet->MoveNext( );
	}
	TRACE0("┏━━━┯━━━┳━━━┯━━━┳━━━┯━━━┳━━━┯━━━┳━━━┯━━━┳━━━┯━━━┓\n");
	TRACE0("┃时  间│ PH ┃时  间│ PH ┃时  间│ PH ┃时  间│ PH ┃时  间│ PH ┃时  间│ PH ┃\n");
	TRACE0("┣━━━┿━━━╋━━━┿━━━╋━━━┿━━━╋━━━┿━━━┿━━━╋━━━┿━━━┿━━━┫\n");

	for ( i=0;i<24;i++)
	{
		TRACE2("┃ %s│%s",			
			m_aPrintRec[i].str_Time,
			m_aPrintRec[i].str_PH);
		TRACE2("┃ %s│%s",
			m_aPrintRec[i+24*1].str_Time,
			m_aPrintRec[i+24*1].str_PH);
		TRACE2("┃ %s│%s",
			m_aPrintRec[i+24*2].str_Time,
			m_aPrintRec[i+24*2].str_PH);
		TRACE2("┃ %s│%s",
			m_aPrintRec[i+24*3].str_Time,
			m_aPrintRec[i+24*3].str_PH);
		TRACE2("┃ %s│%s",
			m_aPrintRec[i+24*4].str_Time,
			m_aPrintRec[i+24*4].str_PH);
		TRACE2("┃ %s│%s",
			m_aPrintRec[i+24*5].str_Time,
			m_aPrintRec[i+24*5].str_PH);
		TRACE0("┃\n");
		if (i!= 23)
			TRACE0("┠───┼───╂───┼───╂───┼───╂───┼───╂───┼───╂───┼───┨\n");
	}
	TRACE0("┗━━━┷━━━┻━━━┷━━━┻━━━┷━━━┻━━━┷━━━┻━━━┷━━━┻━━━┷━━━┛\n");
	
	
	
	CString	strOutPrn;	
	char * OutString;
	ofstream	OutToPrint("prntest.txt", ios::out | ios::binary);

	strOutPrn.LoadString(IDS_REPTITLE);
	OutString=(char *)(LPCTSTR)strOutPrn;
	OutToPrint.write(OutString ,strOutPrn.GetLength());

	int	nCurSel = m_ctrlInfoArray[m_nCurStation]->GetAbsCurSel(m_ctrlInfoArray);

	strOutPrn.Format(IDS_REPEXPLAIN,
		m_ctrlInfoArray[nCurSel]->GetFullName(),
		m_curSpyTime.Format(_T("%Y年%m月%d日")));

	OutToPrint.write("\034v\001",3);
	OutString=(char * )(LPCTSTR)strOutPrn;
	OutToPrint.write(OutString ,strOutPrn.GetLength());

	strOutPrn.LoadString(IDS_REPHEAD01);
	OutString=(char * )(LPCTSTR)strOutPrn;
	OutToPrint.write(OutString ,strOutPrn.GetLength());
	strOutPrn.LoadString(IDS_REPHEAD02);
	OutString=(char * )(LPCTSTR)strOutPrn;
	OutToPrint.write(OutString ,strOutPrn.GetLength());
	strOutPrn.LoadString(IDS_REPHEAD03);
	OutString=(char * )(LPCTSTR)strOutPrn;
	OutToPrint.write(OutString ,strOutPrn.GetLength());
	

	for ( i=0;i<24;i++)
	{
		strOutPrn.Format(IDS_REPFORMAT,
			m_aPrintRec[     i].str_Time,
			m_aPrintRec[     i].str_PH,
			m_aPrintRec[i+24*1].str_Time,
			m_aPrintRec[i+24*1].str_PH,
			m_aPrintRec[i+24*2].str_Time,
			m_aPrintRec[i+24*2].str_PH,
			m_aPrintRec[i+24*3].str_Time,
			m_aPrintRec[i+24*3].str_PH,
			m_aPrintRec[i+24*4].str_Time,
			m_aPrintRec[i+24*4].str_PH,
			m_aPrintRec[i+24*5].str_Time,
			m_aPrintRec[i+24*5].str_PH);
		OutString=(char * )(LPCTSTR)strOutPrn;
		OutToPrint.write(OutString ,strOutPrn.GetLength());
		
		if (i!= 23)
		{
			strOutPrn.LoadString(IDS_REPLINE);
			OutString=(char * )(LPCTSTR)strOutPrn;
			OutToPrint.write(OutString ,strOutPrn.GetLength());
		}
	}
	strOutPrn.LoadString(IDS_REPTAIL);
	OutString=(char * )(LPCTSTR)strOutPrn;
	OutToPrint.write(OutString ,strOutPrn.GetLength());
	strOutPrn.LoadString(IDS_REPFOOTER);
	OutString=(char * )(LPCTSTR)strOutPrn;
	OutToPrint.write(OutString ,strOutPrn.GetLength());
	OutToPrint.write("\014",1);
	OutToPrint.close();

	system("COPY PRNTEST.TXT PRN /B > NUL");
}

void CJHHBDoc::OnDataPrintM() 
{

	CString	strOutPrn;	
	char * OutString;
	ofstream	OutToPrint("mprntest.txt", ios::out | ios::binary);

	CDaoHBRecSet *	pDaoHBPrintSet;
	
	pDaoHBPrintSet = new  CDaoHBRecSet(m_pDB);
	try
	{
		pDaoHBPrintSet->Open(dbOpenDynaset, _T("Select * From [hbdata]"));
	}
	catch (CDaoException* e)
	{
		DisplayDaoException(e);
		e->Delete();
		return ;
	}
	int m_Year =m_curSpyTime.GetYear();
	int m_Month=m_curSpyTime.GetMonth();
	int	m_nReportCount=0;

	for (int nCurSel =0;nCurSel<m_ctrlInfoArray.GetSize();nCurSel++)
	{
		pDaoHBPrintSet->m_strFilter.Format(
			_T("([PHDATE]>=#%2.2d/01/%4.4d# AND [PHDATE]< #%2.2d/01/%4.4d# AND [STATION] = %f) Order by [NO] ASC")
			,m_Month,m_Year,m_Month+1,m_Year,
			(double)m_ctrlInfoArray[nCurSel]->m_NO);

		pDaoHBPrintSet->Requery();

		MonthStatistic_Array[nCurSel].m_nRecCount= 
			pDaoHBPrintSet->GetRecordCount();
		

		if (MonthStatistic_Array[nCurSel].m_nRecCount>0)
		{
			// This Station data is not empty
			// now we beging make the report 
			m_nReportCount++;
			MonthStatistic_Array[nCurSel].m_StationName=
						m_ctrlInfoArray[nCurSel]->m_strStationName+
						_T(" (")+
						m_ctrlInfoArray[nCurSel]->GetFullName()+
						_T("  )");

			OutToPrint.write("\034v\001\033IB\r\n",8);

			strOutPrn.LoadString(IDS_REPTITLE_M);
			OutString=(char *)(LPCTSTR)strOutPrn;
			OutToPrint.write(OutString ,strOutPrn.GetLength());
		
			strOutPrn.Format(IDS_REPEXPLAIN_M,m_Year,m_Month);

			strOutPrn=_T(" \033IA ")+MonthStatistic_Array[nCurSel].m_StationName+strOutPrn;
			OutString=(char * )(LPCTSTR)strOutPrn;
			OutToPrint.write(OutString ,strOutPrn.GetLength());   


			strOutPrn.LoadString(IDS_REPHEAD01_M);
			OutString=(char * )(LPCTSTR)strOutPrn;
			OutToPrint.write(OutString ,strOutPrn.GetLength());
			strOutPrn.LoadString(IDS_REPHEAD02_M);
			OutString=(char * )(LPCTSTR)strOutPrn;
			OutToPrint.write(OutString ,strOutPrn.GetLength());
			strOutPrn.LoadString(IDS_REPHEAD03_M);
			OutString=(char * )(LPCTSTR)strOutPrn;
			OutToPrint.write(OutString ,strOutPrn.GetLength());
			strOutPrn.LoadString(IDS_REPHEAD04_M);
			OutString=(char * )(LPCTSTR)strOutPrn;
			OutToPrint.write(OutString ,strOutPrn.GetLength());
			strOutPrn.LoadString(IDS_REPHEAD05_M);
			OutString=(char * )(LPCTSTR)strOutPrn;
			OutToPrint.write(OutString ,strOutPrn.GetLength());
			
			MonthStatistic_Array[nCurSel].m_nMAXPH=0.0;
			MonthStatistic_Array[nCurSel].m_nMINPH=14.0;

			MonthStatistic_Array[nCurSel].m_nOverTopCount=0;
			MonthStatistic_Array[nCurSel].m_nOverBottomCount=0;
			MonthStatistic_Array[nCurSel].m_nSuitTargeCount=0;
			
			pDaoHBPrintSet->MoveFirst();
			for (UINT i=0;i<MonthStatistic_Array[nCurSel].m_nRecCount;i++)
			{
				if (pDaoHBPrintSet->m_PH<MonthStatistic_Array[nCurSel].m_nMINPH)
					MonthStatistic_Array[nCurSel].m_nMINPH=
						pDaoHBPrintSet->m_PH;
				if (pDaoHBPrintSet->m_PH>MonthStatistic_Array[nCurSel].m_nMAXPH)
					MonthStatistic_Array[nCurSel].m_nMAXPH=
						pDaoHBPrintSet->m_PH;
				if (pDaoHBPrintSet->m_PH>9.00)
					MonthStatistic_Array[nCurSel].m_nOverTopCount++;
				if (pDaoHBPrintSet->m_PH<6.00)
					MonthStatistic_Array[nCurSel].m_nOverBottomCount++;
				if (pDaoHBPrintSet->m_PH>=6.00 && pDaoHBPrintSet->m_PH<=9.00)
					MonthStatistic_Array[nCurSel].m_nSuitTargeCount++;
				// Skip next recode
				pDaoHBPrintSet->MoveNext();
			}
			ASSERT(MonthStatistic_Array[nCurSel].m_nRecCount==
				MonthStatistic_Array[nCurSel].m_nSuitTargeCount+
				MonthStatistic_Array[nCurSel].m_nOverBottomCount+
				MonthStatistic_Array[nCurSel].m_nOverTopCount);

			MonthStatistic_Array[nCurSel].m_nOverTopRate=(double)
				MonthStatistic_Array[nCurSel].m_nOverTopCount/
				MonthStatistic_Array[nCurSel].m_nRecCount;
			MonthStatistic_Array[nCurSel].m_nOverBottomRate=(double)
				MonthStatistic_Array[nCurSel].m_nOverBottomCount/
				MonthStatistic_Array[nCurSel].m_nRecCount;
			MonthStatistic_Array[nCurSel].m_nSuitTargeRate=(double)
				MonthStatistic_Array[nCurSel].m_nSuitTargeCount/
				MonthStatistic_Array[nCurSel].m_nRecCount;
			strOutPrn.Format(IDS_REPFORMAT_M,
				MonthStatistic_Array[nCurSel].m_nRecCount,
				MonthStatistic_Array[nCurSel].m_nMAXPH,
				MonthStatistic_Array[nCurSel].m_nMINPH,
				MonthStatistic_Array[nCurSel].m_nSuitTargeRate*100,
				MonthStatistic_Array[nCurSel].m_nOverBottomRate*100,
				MonthStatistic_Array[nCurSel].m_nOverTopRate*100);

			OutString=(char * )(LPCTSTR)strOutPrn;
			OutToPrint.write(OutString ,strOutPrn.GetLength());
			strOutPrn.LoadString(IDS_REPTAIL_M);
			OutString=(char * )(LPCTSTR)strOutPrn;
			OutToPrint.write(OutString ,strOutPrn.GetLength());

			OutToPrint.write("\034v\000\033IA\r\n",8);

			strOutPrn.LoadString(IDS_REPFOOTER_M);
			OutString=(char * )(LPCTSTR)strOutPrn;
			OutToPrint.write(OutString ,strOutPrn.GetLength());
			strOutPrn.LoadString(IDS_SEPARATOR);
			OutString=(char * )(LPCTSTR)strOutPrn;
			OutToPrint.write(OutString ,strOutPrn.GetLength());
		}
		if (m_nReportCount==5)	
		{
			m_nReportCount=0;
			OutToPrint.write("\014",1);	//	Eject print after 5th report
		}
	}
	OutToPrint.write("\014",1);		//	Eject print  at all over
	OutToPrint.close();
	if (pDaoHBPrintSet->IsOpen())
		pDaoHBPrintSet->Close();
	delete pDaoHBPrintSet;
	system("COPY MPRNTEST.TXT PRN /B > NUL");

}


////////////////////////////////////////////////
/////// ljh start
void CJHHBDoc::OnDataPrintYear() 
{
	// TODO: Add your command handler code here
	
}

////////////////////////////////////////////////
////// ljh end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -