📄 lanesoftview.cpp
字号:
// LaneSoftView.cpp : implementation of the CLaneSoftView class
//
#include "stdafx.h"
#include "LaneSoft.h"
#include "LaneSoftDoc.h"
#include "LaneSoftView.h"
#include "PanDlg1.h"
#include "IniData.h"
#include "BCEncode.h"
#include "conio.h"
#include "CDib.h"
#include "OperateDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CLaneSoftView
extern CIniData theIniData;
extern CLaneSoftView * m_pMainView;
extern DWORD err;
extern BOOL Above;
extern int Readable;
extern int Rotate;
extern int BType;
extern int Height;
extern int Wide;
extern int Narrow;
extern CString strText;
extern PDFSETTINGS pdfSetting;
extern BOOL g_BBarUp;//栏杆起
extern BOOL g_BBarDown;//栏杆落
extern BOOL g_BLaneGreen ;
extern BOOL g_BLaneRed;
IMPLEMENT_DYNCREATE(CLaneSoftView, CView)
BEGIN_MESSAGE_MAP(CLaneSoftView, CView)
//{{AFX_MSG_MAP(CLaneSoftView)
ON_WM_CREATE()
ON_WM_PAINT()
ON_WM_KEYDOWN()
ON_MESSAGE(WM_CHANGE_LLAMP,OnChange_lLamp)
ON_MESSAGE(WM_CHANGE_TLAMP,OnChange_tLamp)
ON_MESSAGE(WM_CHANGE_BAR,OnChange_Bar)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLaneSoftView construction/destruction
CLaneSoftView::CLaneSoftView()
{
// TODO: add construction code here
m_pMemDC = new CDC;
m_pBitmap = new CBitmap;
m_pPanDlg1 = new CPanDlg1;
m_pOperateDlg = new COperateDlg;
m_pFrameDlg = new CFrameDlg;
m_pMainView = this;
}
CLaneSoftView::~CLaneSoftView()
{
delete m_pMemDC;
delete m_pBitmap;
delete m_pPanDlg1;
delete m_pOperateDlg;
delete m_pFrameDlg;
}
BOOL CLaneSoftView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
ASSERT(cs.style & WS_CHILD);
if(cs.lpszClass == NULL)
{
cs.lpszClass = AfxRegisterWndClass(CS_DBLCLKS|CS_HREDRAW|CS_VREDRAW);
}
return TRUE;
//return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CLaneSoftView drawing
void CLaneSoftView::OnDraw(CDC* pDC)
{
DWORD old_textcolor,old_textmode;
CFont * pOldFont;
CLaneSoftDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if(m_dib.m_pBMI ==NULL || m_dib.m_pDIBData == NULL)
return;
CRect rect;
GetClientRect(rect);
m_dib.ShowDIB(pDC,0,0,rect.Width(),rect.Height());
old_textcolor = pDC->SetTextColor(theIniData.m_dColor_Text7);
old_textmode = pDC->SetBkMode(TRANSPARENT);
pOldFont = pDC->SelectObject(&theIniData.m_fFont7);
pDC->TextOut(10,90,"石家庄东港科技发展有限公司");
pDC->SetTextColor(theIniData.m_dColor_Text6);
pOldFont = pDC->SelectObject(&theIniData.m_fFont9);
pDC->TextOut(90,140,"电 话: 0311-3824509");
pDC->TextOut(90,160,"E-mail: dg@sjz.col.com.cn");
pDC->SetTextColor(theIniData.m_dColor_Text5);
pDC->SelectObject(&theIniData.m_fFont8);
pDC->TextOut(30,20,"收费站车道微机收费系统");
pDC->SelectObject(pOldFont);
pDC->SetTextColor(old_textcolor);
pDC->SetBkMode(old_textmode);
m_usedib2.PasteDIB(pDC,0,250,250,350);
m_usedib1.PasteDIB(pDC,0,250,250,350);
m_usedib3.PasteDIB(pDC,0,190,240,110);
// CBitmap * pOldBitmap = m_pMemDC->SelectObject(m_pBitmap);
// pDC->BitBlt(0,0,m_nMaxX,m_nMaxY,m_pMemDC,0,0,SRCCOPY);
// m_pMemDC->SelectObject(pOldBitmap);
// pDC->SetStretchBltMode(COLORONCOLOR);
// SetetchDIBits(pDC->GetSafeHdc(),0,0,799,599,
// 0,0,
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CLaneSoftView printing
BOOL CLaneSoftView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CLaneSoftView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CLaneSoftView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CLaneSoftView diagnostics
#ifdef _DEBUG
void CLaneSoftView::AssertValid() const
{
CView::AssertValid();
}
void CLaneSoftView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CLaneSoftDoc* CLaneSoftView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CLaneSoftDoc)));
return (CLaneSoftDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CLaneSoftView message handlers
BOOL CLaneSoftView::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
}
int CLaneSoftView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// m_dib.LoadFromFile("d:\\lanesoft2\\res\\467005.bmp");
m_dib.LoadFromFile(".\\res\\467005.bmp");
m_usedib1.LoadFromFile(".\\res\\BAR.bmp");
m_usedib2.LoadFromFile(".\\res\\TLAMP.bmp");
m_usedib3.LoadFromFile(".\\res\\lLAMP.bmp");
// TODO: Add your specialized creation code here
CDC *pDC = GetDC();
m_nMaxX = GetSystemMetrics(SM_CXSCREEN);
m_nMaxY = GetSystemMetrics(SM_CYSCREEN);
m_bBitmap.LoadBitmap(IDB_BITMAP3);
m_pMemDC->CreateCompatibleDC(pDC);
m_pBitmap->CreateCompatibleBitmap(pDC,m_nMaxX,m_nMaxY);
CBitmap *pOldBitmap = m_pMemDC->SelectObject(m_pBitmap);
// CBitmap *pOldBitmap = m_pMemDC->SelectObject(&Bitmap);
CBrush brush;
brush.CreateSolidBrush(theIniData.m_dColor_BK1);
// brush.CreateDIBPatternBrush(Bitmap.m_hObject,DIB_PAL_COLORS);
CRect rect(-1,-1,m_nMaxX,m_nMaxY);
m_pMemDC->FillRect(rect,&brush);
m_pMemDC->SelectObject(pOldBitmap);
ReleaseDC(pDC);
m_pPanDlg1->Create(IDD_DIALOG1,this);
m_pPanDlg1->ShowWindow(SW_SHOW);
m_pOperateDlg->Create(IDD_OPERATE_DLG,this);
m_pOperateDlg->ShowWindow(SW_SHOW);
m_pFrameDlg->Create(IDD_FRAME_DLG,this);
m_pFrameDlg->ShowWindow(SW_SHOW);
return 0;
}
void CLaneSoftView::OnPaint()
{
CPaintDC dc(this); // device context for painting
OnPrepareDC(&dc);
OnDraw(&dc);
// TODO: Add your message handler code here
// Do not call CView::OnPaint() for painting messages
}
void CLaneSoftView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
m_pOperateDlg->SendMessage(WM_USER_KEY,nChar,0);
CView::OnKeyDown(nChar, nRepCnt, nFlags);
}
LONG CLaneSoftView::OnChange_Bar(UINT wParam,LONG lParam)
{
if(wParam == 0)
{
m_usedib1.LoadFromFile(".\\res\\Bar1.bmp");
g_BBarDown=FALSE;//HM 2001.10.15 抬杆
g_BBarUp=TRUE;//HM 2001.10.15
g_BLaneGreen= TRUE ;
g_BLaneRed=FALSE;
}
else
{
m_usedib1.LoadFromFile(".\\res\\Bar.bmp");
_outp(0x3e2,0x11);//降杆
Sleep(300);
_outp(0x3e2,0x31);
g_BBarDown=TRUE;//HM 2001.10.15
g_BBarUp=FALSE;//HM 2001.10.15
g_BLaneGreen= FALSE ;
g_BLaneRed=TRUE;
}
CDC *pDC = GetDC();
m_usedib1.PasteDIB(pDC,0,250,250,350);
ReleaseDC(pDC);
RECT rect;
if(wParam == 0)
{
rect.left = 65 ; rect.top = 450 ;
rect.right = 250 ; rect.bottom = 470;
}
else
{
rect.left = 20 ; rect.top = 250 ;
rect.right = 50 ; rect.bottom = 442;
}
InvalidateRect(&rect);
return 0;
}
LONG CLaneSoftView::OnChange_tLamp(UINT wParam,LONG lParam)
{
if(wParam == 0)
{
// m_pOperateDlg->Setup_TLamp(1);
m_usedib2.LoadFromFile(".\\res\\tLAMP2.bmp");
}
else
{
// m_pOperateDlg->Setup_TLamp(0);
m_usedib2.LoadFromFile(".\\res\\tLAMP1.bmp");
}
CDC *pDC = GetDC();
m_usedib2.PasteDIB(pDC,0,250,250,180);
ReleaseDC(pDC);
if(wParam == 0)
m_usedib2.LoadFromFile(".\\res\\tLAMP02.bmp");
else
m_usedib2.LoadFromFile(".\\res\\tLAMP01.bmp");
return 0;
}
LONG CLaneSoftView::OnChange_lLamp(UINT wParam,LONG lParam)
{
if(wParam == 0)
m_usedib3.LoadFromFile(".\\res\\lLAMP1.bmp");
else
m_usedib3.LoadFromFile(".\\res\\lLAMP.bmp");
// RECT rect;
// rect.top = 230; rect.left = 100; rect.right = 240; rect.bottom = 280;
CDC *pDC = GetDC();
m_usedib3.PasteDIB(pDC,0,190,240,110);
ReleaseDC(pDC);
//InvalidateRect(&rect);
return 0;
}
void CLaneSoftView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
// TODO: Add your specialized code here and/or call the base class
CLaneSoftDoc* pDoc = GetDocument() ;
ASSERT_VALID(pDoc);
pDoc->mBit.Attach(MakeBarCode(BType,strText.GetBuffer(0),Narrow,Wide,Height,Rotate,Readable,&err));
int dpi = pDC->GetDeviceCaps(LOGPIXELSX);
int width = pDC->GetDeviceCaps(HORZRES);
int height = pDC->GetDeviceCaps(VERTRES);
CDC mDC;
CBitmap OldBit;
BITMAP bm;
if (pDoc->mBit.m_hObject != NULL)
{
pDC->SetBkMode(TRANSPARENT);
pDC->SelectStockObject(NULL_BRUSH);
pDoc->mBit.GetObject(sizeof BITMAP,&bm);
mDC.CreateCompatibleDC(pDC);
OldBit.Attach(mDC.SelectObject(&(pDoc->mBit)));
int w = bm.bmWidth;
int h = bm.bmHeight;
int x = (width - w ) /2;
int y = (height - w ) /2;
pDC->BitBlt(x,y,bm.bmWidth,bm.bmHeight ,&mDC,0,0,SRCCOPY);
mDC.SelectObject(&OldBit);
}
// CView::OnPrint(pDC, pInfo);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -