?? prechild.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 + -