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

📄 prechild.cpp

📁 主要功能 企业仓库管理系统由基本信息管理模块、入库管理模块、库存管理模块、查询管理模块等几部分组成。 &#61553 基本信息管理模块 该模块主要包括操作员管理、商品信息管理、库存信息管理、供
💻 CPP
字号:
// PreChild.cpp : implementation file
//

#include "stdafx.h"
#include "aaa.h"
#include "PreChild.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CPreChild dialog


CPreChild::CPreChild(CWnd* pParent /*=NULL*/)
	: CDialog(CPreChild::IDD, pParent)
{
	//{{AFX_DATA_INIT(CPreChild)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	pagewidth = 18;
	pagehigh = 25;
	pstruct.list = NULL;
	leftmargin = 45;
	topmargin = 45;

}


void CPreChild::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPreChild)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPreChild, CDialog)
	//{{AFX_MSG_MAP(CPreChild)
	ON_WM_PAINT()
	ON_WM_CTLCOLOR()
	ON_WM_DESTROY()
	ON_WM_VSCROLL()
	ON_WM_SIZE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPreChild message handlers

void CPreChild::OnOK() 
{
	// TODO: Add extra validation here
	
	//CDialog::OnOK();
}

BOOL CPreChild::OnInitDialog() 
{
	CDialog::OnInitDialog();
	int i,j;
	CDC* dc = GetDC();
	i = dc->GetDeviceCaps(HORZSIZE);
	j = dc->GetDeviceCaps(HORZRES);
	rate = j/i; 
	
	bitmap.LoadBitmap(IDB_BACK);
	m_brush.CreatePatternBrush(&bitmap);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CPreChild::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	CClientDC dlgDC(this);
	CRect rect1;
	GetClientRect(rect1);
	
	int x,y;
	x = dlgDC.GetDeviceCaps(LOGPIXELSX);
	y = dlgDC.GetDeviceCaps(LOGPIXELSY);

	CRect rect(30,30,(int )pagewidth*x/2.54,(int)pagehigh*y/2.54);
	CBrush oldbrush (&bitmap);
	CBrush brush;

	dlgDC.FillRect(rect1,&oldbrush);
	dlgDC.FillRect(rect,&brush);

	DrawReport(dlgDC,pstruct);

}

void CPreChild::PrintDoc()
{
	CDC dc;
	dc.Attach(this->GetPrinterDC());
	DrawReport(dc.Detach(),pstruct,true);
}

HDC CPreChild::GetPrinterDC()
{
	CPrintDialog printdialog(false);
	if (printdialog.DoModal() ==IDCANCEL)
	{
		return NULL;
	}
	CDC dc ;

	dc.Attach(printdialog.GetPrinterDC());
	dc.SetMapMode(MM_TEXT);
//	CPageSetupDialog temp;
//	temp.DoModal();
	int x,y;
	x = dc.GetDeviceCaps(LOGPIXELSX);
	y = dc.GetDeviceCaps(LOGPIXELSY);
	
	leftmargin = dc.GetDeviceCaps(PHYSICALOFFSETX);
	topmargin = dc.GetDeviceCaps(PHYSICALOFFSETY);

	prate = x/25.4;

	pagewidth =  (int)dc.GetDeviceCaps(HORZSIZE)/10;
	pagehigh = (int)dc.GetDeviceCaps(VERTSIZE)/10;

	//dc.DeleteDC();
	return dc.Detach();
}

HBRUSH CPreChild::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
		if (nCtlColor == CTLCOLOR_DLG)
		return (HBRUSH)m_brush.GetSafeHandle();
	return hbr;
}

void CPreChild::OnDestroy() 
{
	CDialog::OnDestroy();
	m_brush.DeleteObject();
	bitmap.DeleteObject();	
}

void CPreChild::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	si.cbSize = sizeof (si) ;
	si.fMask  = SIF_ALL ;
	GetScrollInfo(SB_VERT, &si);

	int iVertPos = si.nPos ;
	switch(nSBCode)
	{
	case SB_TOP:
		si.nPos = si.nMin;	break;
	case SB_BOTTOM:
		si.nPos = si.nMax;	break;
	case SB_LINEUP:
		si.nPos -= 15;	break;
	case SB_LINEDOWN:
		si.nPos += 15;	break;
	case SB_PAGEUP:
		si.nPos -= si.nPage;	break;
	case SB_PAGEDOWN:
		si.nPos += si.nPage;	break;
	case SB_THUMBTRACK:
		si.nPos = si.nTrackPos; break;
	}

	si.fMask = SIF_POS ;
	SetScrollInfo(SB_VERT, &si, TRUE) ;
	GetScrollInfo(SB_VERT, &si) ;
	if(si.nPos != iVertPos)
	{
		yPt += si.nPos - iVertPos;
		ScrollWindow(0, iVertPos - si.nPos, NULL, NULL);
		UpdateWindow();
		//::UpdateWindow(GetParent()->m_hWnd);
	}
	

	CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}

void CPreChild::DrawReport(HDC dc, CPrintStruct prstruct,bool printed )
{
	CDC dc1;
	dc1.Attach(dc);
	int x,y;
	x = dc1.GetDeviceCaps(LOGPIXELSX);
	y = dc1.GetDeviceCaps(LOGPIXELSY);

	CRect rect(0,30,(int )pagewidth*x/2.54,(int)pagehigh*y/2.54);
	
	rect.OffsetRect(0,50);
	if(prstruct.list != NULL)
	{
		if (printed ==false)
		{
			dc1.DrawText(prstruct.title,rect,DT_CENTER);
			rect.SetRect(30+leftmargin,30,(int )pagewidth*x/2.54,(int)pagehigh*y/2.54);
			rect.OffsetRect(50,100);
			//rect.OffsetRect(0,0);

			dc1.DrawText("仓库名称",rect,DT_LEFT);

			rect.OffsetRect(120,0);
			dc1.DrawText("商品编号",rect,DT_LEFT);

			rect.OffsetRect(120,0);
			dc1.DrawText("商品名称",rect,DT_LEFT);

			rect.OffsetRect(120,0);
			dc1.DrawText("库存数量",rect,DT_LEFT);
			//rect.SetRect(0,0,rect.right,rect.bottom);
			rect.OffsetRect(-410,30);
			for (int rows =0;rows< prstruct.list->GetItemCount();rows++)
			{
		
				CString date;
				date = prstruct.list->GetItemText(rows,0);

				rect.OffsetRect(50,0);
				dc1.DrawText(date,rect,DT_LEFT);

				date = prstruct.list->GetItemText(rows,1);
				rect.OffsetRect(120,0);
				dc1.DrawText(date,rect,DT_LEFT);

				date = prstruct.list->GetItemText(rows,2);
				rect.OffsetRect(120,0);
				dc1.DrawText(date,rect,DT_LEFT);

				date = prstruct.list->GetItemText(rows,3);
				rect.OffsetRect(120,0);
				dc1.DrawText(date,rect,DT_LEFT);

				rect.OffsetRect(0,30);
				rect.OffsetRect(-410,0);
			}
		}
		else
		{
			DOCINFO info ={sizeof (DOCINFO),  "库存盘点"};
			x = dc1.GetDeviceCaps(LOGPIXELSX);
			y = dc1.GetDeviceCaps(LOGPIXELSY);
			rect.SetRect(0,0,(int )pagewidth*x/2.54,(int)pagehigh*y/2.54);
			dc1.m_bPrinting = true;
			if (dc1.StartDoc(&info)<0)
			{
				MessageBox("连接打印机失败.","提示",64);
				return;
			}
			dc1.DrawText(prstruct.title,rect,DT_CENTER);
			rect.OffsetRect(0,(int)50*prate/rate);

			rect.OffsetRect((int)50*prate/rate,0);
			dc1.DrawText("仓库名称",rect,DT_LEFT);

			rect.OffsetRect((int)120*prate/rate,0);
			dc1.DrawText("商品编号",rect,DT_LEFT);

			rect.OffsetRect((int)120*prate/rate,0);
			dc1.DrawText("商品名称",rect,DT_LEFT);

			rect.OffsetRect((int)120*prate/rate,0);
			dc1.DrawText("库存数量",rect,DT_LEFT);

			rect.OffsetRect((int)-410*prate/rate,(int)30*prate/rate);

			for (int rows =0;rows< prstruct.list->GetItemCount();rows++)
			{		
				CString date;
				date = prstruct.list->GetItemText(rows,0);

				rect.OffsetRect((int)50*prate/rate,0);
				dc1.DrawText(date,rect,DT_LEFT);

				date = prstruct.list->GetItemText(rows,1);
				rect.OffsetRect((int)120*prate/rate,0);
				dc1.DrawText(date,rect,DT_LEFT);

				date = prstruct.list->GetItemText(rows,2);
				rect.OffsetRect((int)120*prate/rate,0);
				dc1.DrawText(date,rect,DT_LEFT);

				date = prstruct.list->GetItemText(rows,3);
				rect.OffsetRect((int)120*prate/rate,0);
				dc1.DrawText(date,rect,DT_LEFT);

				rect.OffsetRect(0,(int)30*prate/rate);
				rect.OffsetRect((int)-410*prate/rate,0);						
			}
			dc1.EndDoc();
		}
	}
}

void CPreChild::OnSize(UINT nType, int cx, int cy) 
{
		SetScrollbar(cx, cy);
	CDialog::OnSize(nType, cx, cy);	
}

void CPreChild::SetScrollbar(int cx, int cy)
{
	HDC	hdc;
	hdc = ::GetDC(::GetDesktopWindow());
	int xPix = ::GetDeviceCaps(hdc, LOGPIXELSX);
	int yPix = ::GetDeviceCaps(hdc, LOGPIXELSY);
	::ReleaseDC(::GetDesktopWindow(), hdc);


	//设定滚动条垂直滚动范围及页面大小
	si.cbSize = sizeof (si) ;
	si.fMask  = SIF_RANGE | SIF_PAGE ;
	si.nMin   = 0;
	si.nMax   = 800;		//内容的高度
	si.nPage  = 700;	//页面的高度
	SetScrollInfo(SB_VERT, &si, TRUE);
	si.fMask = SIF_POS;
	si.nPos   = 0;
	SetScrollInfo(SB_VERT, &si, TRUE);

	//设定滚动条水平滚动范围及页面大小
	
	si.cbSize = sizeof (si);
	si.fMask  = SIF_RANGE | SIF_PAGE;
	si.nMin   = 0;
	si.nMax   = 800;			//内容的宽度
	si.nPage  = 1000;		//页面的宽度
	SetScrollInfo(SB_HORZ, &si, TRUE);
	si.fMask = SIF_POS;
	si.nPos   = 0;
	SetScrollInfo(SB_HORZ, &si, TRUE);
}

⌨️ 快捷键说明

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