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

📄 feeviewprintmonthface.cpp

📁 VC6.0环境下编写的一个交换机计费程序。
💻 CPP
📖 第 1 页 / 共 3 页
字号:
					lfen=0;
					ljiao++;
					if (ljiao>=10)
					{
						ljiao=0;
						lyuan++;
					}
				}
			}
			ltemp=lyuan*100+ljiao*10+lfen;
			lcs+=ltemp;
		}
		cs.Format("%d",lcs/100);
		cs+=".";
		strtemp.Format("%d",lcs%100);
		cs+=strtemp;
		rect.left= int((x+227)*rato1);
		rect.right =int((x+304)*rato1);
		rect.top = int((y-90)*rato1);
		rect.bottom =int((y-34) *rato1);
		pOldFont=pDC->SelectObject(&font90);
		pDC->DrawText (cs,-1,&rect,DT_VCENTER|DT_CENTER|DT_SINGLELINE);

		lcs=0;
		cs="";
		strtemp="";
		for( t=8;t<10;t++)
		{
		
			strtemp = pList->GetItemText(i, t);
			long lyuan,ljiao,lfen,lli;
			float flotemp;
			long ltemp;
			flotemp=atof(strtemp);
			flotemp=flotemp*10000;
			lyuan=(flotemp/10000);
			ljiao=(flotemp-lyuan*10000)/1000;
			lfen=(flotemp-lyuan*10000-ljiao*1000)/100;
			lli=(flotemp-lyuan*10000-ljiao*1000-lfen*100)/10;
			if (lli>=5)
			{
				lfen++;
				if (lfen>=10)
				{
					lfen=0;
					ljiao++;
					if (ljiao>=10)
					{
						ljiao=0;
						lyuan++;
					}
				}
			}
			ltemp=lyuan*100+ljiao*10+lfen;
			lcs+=ltemp;
		}
		cs.Format("%d",lcs/100);
		cs+=".";
		strtemp.Format("%d",lcs%100);
		cs+=strtemp;
		rect.left= int((x+304)*rato1);
		rect.right =int((x+414)*rato1);
		rect.top = int((y-90)*rato1);
		rect.bottom =int((y-34) *rato1);
		pOldFont=pDC->SelectObject(&font90);
		pDC->DrawText (cs,-1,&rect,DT_VCENTER|DT_CENTER|DT_SINGLELINE);


		lcs=0;
		cs="";
		strtemp="";
		for( t=10;t<11;t++)
		{
		
			strtemp = pList->GetItemText(i, t);
			long lyuan,ljiao,lfen,lli;
			float flotemp;
			long ltemp;
			flotemp=atof(strtemp);
			flotemp=flotemp*10000;
			lyuan=(flotemp/10000);
			ljiao=(flotemp-lyuan*10000)/1000;
			lfen=(flotemp-lyuan*10000-ljiao*1000)/100;
			lli=(flotemp-lyuan*10000-ljiao*1000-lfen*100)/10;
			if (lli>=5)
			{
				lfen++;
				if (lfen>=10)
				{
					lfen=0;
					ljiao++;
					if (ljiao>=10)
					{
						ljiao=0;
						lyuan++;
					}
				}
			}
			ltemp=lyuan*100+ljiao*10+lfen;
			lcs+=ltemp;
		}
		cs.Format("%d",lcs/100);
		cs+=".";
		strtemp.Format("%d",lcs%100);
		cs+=strtemp;
		rect.left= int((x+414)*rato1);
		rect.right =int((x+485)*rato1);
		rect.top = int((y-90)*rato1);
		rect.bottom =int((y-34) *rato1);
		pOldFont=pDC->SelectObject(&font90);
		pDC->DrawText (cs,-1,&rect,DT_VCENTER|DT_CENTER|DT_SINGLELINE);

	}
}

void CFeeView::OnPrintSetprintermonthface() 
{
	// TODO: Add your command handler code here
	CPrintDialog pd(TRUE);
	AfxGetApp()->DoPrintDialog(&pd);
}

void CFeeView::OnPrintSetfontmonthface() 
{
	// TODO: Add your command handler code here
	CprintsetfontDlg setfontdlg;
	int nResponse;	
	nResponse=setfontdlg.DoModal();
	if (nResponse!=IDOK)
	{
		return;
	}

}

void CFeeView::OnPrintSetmarginmonthface() 
{
	// TODO: Add your command handler code here
	CprintsetmaginDlg setmagindlg;
	int nResponse;	
	nResponse=setmagindlg.DoModal();
	if (nResponse!=IDOK)
	{
		return;
	}	
}


extern bool bGfxUserAbort;

BOOL CALLBACK EXPORT _GfxAbortProcmonthface( HDC, int )
{
	MSG msg;
	while (!bGfxUserAbort && ::PeekMessage(&msg, NULL, NULL, NULL, PM_NOREMOVE))
	{
		if (!AfxGetThread()->PumpMessage()) return FALSE;
	}
	return !bGfxUserAbort;
}


void CFeeView::OnPrintmonthface() 
{
	// TODO: Add your command handler code here
	// TODO: Add your command handler code here
	CPrintInfo printInfo;
	ASSERT(printInfo.m_pPD != NULL);    // must be set

	if (OnPreparePrintingmonthface(&printInfo))
	{
		ASSERT(printInfo.m_pPD->m_pd.hDC != NULL);
		// gather file to print to if print-to-file selected
		CString strOutput;
		if (printInfo.m_pPD->m_pd.Flags & PD_PRINTTOFILE)
		{
			// construct CFileDialog for browsing
			CString strDef(MAKEINTRESOURCE(AFX_IDS_PRINTDEFAULTEXT));
			CString strPrintDef(MAKEINTRESOURCE(AFX_IDS_PRINTDEFAULT));
			CString strFilter(MAKEINTRESOURCE(AFX_IDS_PRINTFILTER));
			CString strCaption(MAKEINTRESOURCE(AFX_IDS_PRINTCAPTION));
			CFileDialog dlg(FALSE, strDef, strPrintDef,	OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, strFilter);
			dlg.m_ofn.lpstrTitle = strCaption;
			if (dlg.DoModal() != IDOK) return;
			// set output device to resulting path name
			strOutput = dlg.GetPathName();
		}
		DOCINFO docInfo;
		memset(&docInfo, 0, sizeof(DOCINFO));
		docInfo.cbSize = sizeof(DOCINFO);
		strTitle="twd charging system";
		docInfo.lpszDocName = strTitle;
		CString strPortName;
		int nFormatID;
		if (strOutput.IsEmpty())
		{
			docInfo.lpszOutput = NULL;
			strPortName = printInfo.m_pPD->GetPortName();
			nFormatID = AFX_IDS_PRINTONPORT;
		}
		else
		{
			docInfo.lpszOutput = strOutput;
			nFormatID = AFX_IDS_PRINTTOFILE;
		}
		// setup the printing DC
		CDC dcPrint;
		dcPrint.Attach(printInfo.m_pPD->m_pd.hDC);  // attach printer dc
		dcPrint.m_bPrinting = TRUE;
		printInfo.m_rectDraw.SetRect(0, 0, dcPrint.GetDeviceCaps(HORZRES), dcPrint.GetDeviceCaps(VERTRES));
		dcPrint.DPtoLP(&printInfo.m_rectDraw);
		
		OnBeginPrintingmonthface(&dcPrint, &printInfo);
		dcPrint.SetAbortProc(_GfxAbortProcmonthface);
		// disable main window while printing & init printing status dialog
		CString csFormat, cs, strTemp;
		AfxGetMainWnd()->EnableWindow(FALSE);
		/*
		CPrintStatus dlgPrintStatus(pParent);
		cs.Format("Stampa di %s in corso ..", strTitle);
		dlgPrintStatus.SetWindowText(cs);
		
		dlgPrintStatus.GetDlgItemText(IDC_TEXT1, csFormat);
		AfxFormatString1(strTemp, nFormatID, strPortName);
		cs.Format(csFormat, strTitle, printInfo.m_pPD->GetDeviceName(), strTemp);
		dlgPrintStatus.SetDlgItemText(IDC_TEXT1, cs);
		dlgPrintStatus.ShowWindow(SW_SHOW);
		dlgPrintStatus.UpdateWindow();
		*/
		// start document printing process
		if (dcPrint.StartDoc(&docInfo) == SP_ERROR)
		{
			// enable main window before proceeding
			AfxGetMainWnd()->EnableWindow(TRUE);

			// cleanup and show error message
			OnEndPrintingmonthface(&dcPrint, &printInfo);
			//dlgPrintStatus.DestroyWindow();
			dcPrint.Detach();   // will be cleaned up by CPrintInfo destructor
			AfxMessageBox(AFX_IDP_FAILED_TO_START_PRINT);
			return;
		}
		// Guarantee values are in the valid range
		UINT nEndPage = printInfo.GetToPage();
		UINT nStartPage = printInfo.GetFromPage();

		if (nEndPage < printInfo.GetMinPage()) nEndPage = printInfo.GetMinPage();
		if (nEndPage > printInfo.GetMaxPage()) nEndPage = printInfo.GetMaxPage();
		if (nStartPage < printInfo.GetMinPage()) nStartPage = printInfo.GetMinPage();
		if (nStartPage > printInfo.GetMaxPage()) nStartPage = printInfo.GetMaxPage();
		int nStep = (nEndPage >= nStartPage) ? 1 : -1;
		nEndPage = (nEndPage == 0xffff) ? 0xffff : nEndPage + nStep;
		int iPageTot = abs(abs(nEndPage) - abs(nStartPage)), iPrintedPages = 0;
		CString csPageFormat;
		//dlgPrintStatus.GetDlgItemText(IDC_PAGES, csPageFormat);
		// begin page printing loop
		DWORD dwStart = GetTickCount(), dTickPerPage = 0;

		//dlgPrintStatus.wndProg.SetRange(0, iPageTot);
		//dlgPrintStatus.wndProg.SetPos(0);

		bool bRectSet = false;
		BOOL bError = FALSE;
		for (printInfo.m_nCurPage = nStartPage; printInfo.m_nCurPage != nEndPage; printInfo.m_nCurPage += nStep)
	//	if (printInfo.m_nCurPage == nStartPage)
		{
			//TCHAR szBuf[80];

			//iPrintedPages ++;
			//dlgPrintStatus.wndProg.SetPos(iPrintedPages);
			//dlgPrintStatus.wndProg.UpdateWindow();

			//wsprintf(szBuf, "%d %%", iPrintedPages*100/iPageTot);
			//dlgPrintStatus.SetDlgItemText(IDC_PC, szBuf);

			OnPrepareDC(&dcPrint, &printInfo);
			// check for end of print
		//	if (!printInfo.m_bContinuePrinting) break;
			// write current page
			/*
			DWORD tck = dTickPerPage * (iPageTot - iPrintedPages + 1) / 1000;
			if (tck > 60)
			{
				tck |= 60;//tck != 60;
				DWORD tckS = tck%60;
				tck /= 60;
				strTemp.Format("%d minuti, %d secondi", tck, tckS);
			}
			else
			{
				if (iPageTot > 1)
				{
					if (tck > 0) strTemp.Format("%d secondi", tck);
					else strTemp = "??";
				}
			}
			wsprintf(szBuf, csPageFormat, iPrintedPages, iPageTot, strTemp);
			*/
			//dlgPrintStatus.SetDlgItemText(IDC_PAGES, szBuf);

			printInfo.m_rectDraw.SetRect(0, 0, dcPrint.GetDeviceCaps(HORZRES), dcPrint.GetDeviceCaps(VERTRES));
			dcPrint.DPtoLP(&printInfo.m_rectDraw);
			// attempt to start the current page
			/*
			if (dcPrint.StartPage() < 0)
			{
				bError = TRUE;
				break;
			}
			*/
			OnPrepareDC(&dcPrint, &printInfo);
			ASSERT(printInfo.m_bContinuePrinting);
			// page successfully started, so now render the page
			int is = dcPrint.SaveDC();
			OnPrintmonthface(&dcPrint, &printInfo);
			/*
			if (dcPrint.EndPage() < 0 || !_GfxAbortProc(dcPrint.m_hDC, 0))
			{
				bError = TRUE;
				break;
			}
			*/
			dcPrint.RestoreDC(is);
			dcPrint.EndPage(); //通知打印机驱动程序页结束

			//dTickPerPage = (GetTickCount() - dwStart) / iPrintedPages;
		}
		// cleanup document printing process
		//dc.SelectObject(def_font); //恢复原来的字体
		
		ftPrint.DeleteObject();
		ftHead.DeleteObject();
		ftFoot.DeleteObject();
		//font.DeleteObject(); 
		dcPrint.EndPage(); //通知打印机驱动程序页结束	
		if (!bError) dcPrint.EndDoc();
		else dcPrint.AbortDoc();
		AfxGetMainWnd()->EnableWindow();    // enable main window
		OnEndPrintingmonthface(&dcPrint, &printInfo);    // clean up after printing
	//	dlgPrintStatus.DestroyWindow();
		//dcPrint.Detach();   // will be cleaned up by CPrintInfo destructor
		//
		DeleteDC(dcPrint.Detach());
		if (iNumCol) 
		{
			if (pDx) delete [] pDx;
			if (pFormat) delete [] pFormat;
			if (pColTitle)
			{
				for (int t = 0; t < iNumCol; t++)
					if (pColTitle[t]) delete [] pColTitle[t];
				delete [] pColTitle;
			}
		}
		//
	}
	
}

⌨️ 快捷键说明

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