// ModeDlg.cpp : implementation file // #include "stdafx.h" #include "ipos.h" #include "ModeDlg.h" //#include "ComboGridCtrl.h" #include "./public/GData.h" #include "./public/DitClientInfo.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CModeDlg dialog CModeDlg::CModeDlg(CWnd* pParent /*=NULL*/) : CDialog(CModeDlg::IDD, pParent) { //{{AFX_DATA_INIT(CModeDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT strTitle = "油机授权模式"; pTitleBmp = NULL; } void CModeDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CModeDlg) DDX_Control(pDX, IDC_DEFAULTSETTING_BTN, m_DefaultsettingBtn); DDX_Control(pDX, IDCANCEL, m_CancelBtn); DDX_Control(pDX, IDOK, m_OkBtn); //}}AFX_DATA_MAP DDX_GridControl(pDX, IDC_CUSTOM_GRIDCTRL, m_GridCtrl); } BEGIN_MESSAGE_MAP(CModeDlg, CDialog) //{{AFX_MSG_MAP(CModeDlg) ON_WM_ERASEBKGND() ON_WM_CTLCOLOR() ON_BN_CLICKED(IDC_DEFAULTSETTING_BTN, OnDefaultsettingBtn) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CModeDlg message handlers BOOL CModeDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here //* CFont* ptf = m_GridCtrl.GetFont(); // 得到原来的字体 LOGFONT lf; ptf->GetLogFont(&lf); lf.lfHeight = 25; // 改变字体高度 //strcpy (lf.lfFaceName, "宋体"); // 改变字体名称 strcpy (lf.lfFaceName, "Arial"); // 改变字体名称 lf.lfCharSet = DEFAULT_CHARSET; //DEFAULT_CHARSET ANSI_CHARSET GB2312_CHARSET //strcpy (lf.lfFaceName, "Arial Black"); // 改变字体名称 //strcpy (lf.lfFaceName, "Arial"); // 改变字体名称 lf.lfWeight = 700; m_Font.CreateFontIndirect(&lf); m_GridCtrl.SetFont(&m_Font); // 设置新字体 m_GridCtrl.nParentType = 1; ShowTitle(); m_DefaultsettingBtn.LoadBitmaps(_T("defaultsetting_up"), _T("defaultsetting_down"), _T("defaultsetting_up"), _T("defaultsetting_gray") ); m_OkBtn.LoadBitmaps(_T("OK_up"), _T("OK_down"), _T("ok_up"), _T("OK_gray") ); m_CancelBtn.LoadBitmaps(_T("cancel_up"), _T("cancel_down"), _T("cancel_up"), _T("cancel_gray") ); //排序 int i, j; for( i=0; inNozzleNum > pMI_2->nNozzleNum ) { pModeInfoes.RemoveAt( j ); pModeInfoes.RemoveAt( i ); pModeInfoes.InsertAt( i, pMI_2 ); pModeInfoes.InsertAt( j, pMI_1 ); pMI_1 = pMI_2; } } } IniGridCtrlInfo( ); SetGridCtrlColumnInfo( ); InsertAllItem( ); m_GridCtrl.SetComboBoxStyle( CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP ); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CModeDlg::IniGridCtrlInfo( ) { while( m_GridCtrl.GetRowCount() > 1 ) m_GridCtrl.DeleteRow( 1 ); while( m_GridCtrl.GetColumnCount() > 0 ) m_GridCtrl.DeleteColumn( 0 ); m_GridCtrl.SetFixedRowCount(1); m_GridCtrl.SetFixedColumnCount(2); m_GridCtrl.SetRowResize(false); m_GridCtrl.SetColumnResize(false); //////////////////////////////////////////////////// //////////////////////////////////////////////////// m_GridCtrl.SetColumnCount( 4 ); for(int j=0;jGetWindowRect(&rect); ScreenToClient(rect); if( m_GridCtrl.GetColumnCount() >= 1 ) { m_GridCtrl.SetColumnWidth( 0, 140 ); m_GridCtrl.SetColumnWidth( 1, 260 ); m_GridCtrl.SetColumnWidth( 2, 280 ); m_GridCtrl.SetColumnWidth( 3, 280 ); } } void CModeDlg::InsertAllItem( ) { IniGridCtrlInfo( ); SetGridCtrlColumnInfo( ); int i; CString strItem; for( i=0; inNozzleNum ); m_GridCtrl.InsertRow( strItem, m_GridCtrl.GetRowCount() ); InsertItem( m_GridCtrl.GetRowCount()-1, pMI ); } } void CModeDlg::InsertItem( int nIndex, MODE_INFO* pItem ) { CString strItem; strItem.Format( "%d", pItem->nNozzleNum ); m_GridCtrl.SetItemText( nIndex, 0, strItem ); if( pItem->nCurMode == WOKRMODE_CARD_SELFHELP ) strItem = "用卡自助"; else if( pItem->nCurMode == WOKRMODE_HOST_AUTO ) strItem = "后台自动授权"; else if( pItem->nCurMode == WOKRMODE_HOST_MANUAL ) strItem = "后台手动授权"; else if( pItem->nCurMode == WOKRMODE_HOST_ACTIVE ) strItem = "后台现金预付"; // else if( pItem->nCurMode == WOKRMODE_OFFLINE ) // strItem = "脱机"; else strItem = "用卡自助"; m_GridCtrl.SetItemText( nIndex, 1, strItem ); m_GridCtrl.SetItemText( nIndex, 2, strItem ); if( pItem->nCheckoutMode == CHECKOUT_POS ) strItem = "POS收银"; else if( pItem->nCheckoutMode == CHECKOUT_MANUAL ) strItem = "室外收银"; else strItem = "POS收银"; m_GridCtrl.SetItemText( nIndex, 3, strItem ); } HBRUSH CModeDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here // TODO: Return a different brush if the default is not desired return hbr; } void CModeDlg::OnOK() { if( pTitleBmp) { pTitleBmp->DeleteObject(); delete pTitleBmp; pTitleBmp = NULL; } m_Font.DeleteObject(); CDialog::OnOK(); } void CModeDlg::OnCancel() { if( pTitleBmp) { pTitleBmp->DeleteObject(); delete pTitleBmp; pTitleBmp = NULL; } m_Font.DeleteObject(); CDialog::OnCancel(); } BOOL CModeDlg::OnEraseBkgnd(CDC* pDC) { CBitmap bmp; bmp.LoadBitmap( "FillingBK" ); BITMAP bm; bmp.GetBitmap(&bm); CDC dcMemory; dcMemory.CreateCompatibleDC(pDC); CBitmap *ptrBmpOld=dcMemory.SelectObject(&bmp); pDC->BitBlt( 0, 0, bm.bmWidth, bm.bmHeight, &dcMemory, 0, 0, SRCCOPY ); dcMemory.SelectObject(ptrBmpOld); dcMemory.DeleteDC(); bmp.DeleteObject(); return true; } void CModeDlg::ShowTitle() { CDC* pDC = GetDC(); if( pTitleBmp) { pTitleBmp->DeleteObject(); delete pTitleBmp; pTitleBmp = NULL; } CDC dcTmpMem; if( dcTmpMem.CreateCompatibleDC(pDC) ) { CBitmap BkBmp; BkBmp.LoadBitmap( IDB_TITLE ); CBitmap* pTmpOldBitmap = dcTmpMem.SelectObject( &BkBmp ); BITMAP BkBitMap; BkBmp.GetBitmap( &BkBitMap ); pTitleBmp = new CBitmap; pTitleBmp->CreateCompatibleBitmap(pDC,BkBitMap.bmWidth, BkBitMap.bmHeight); ASSERT(pTitleBmp->m_hObject != NULL); CDC dcMem; dcMem.CreateCompatibleDC(pDC); CBitmap* pOldBitmap = dcMem.SelectObject(pTitleBmp); dcMem.BitBlt( 0, 0, BkBitMap.bmWidth, BkBitMap.bmHeight, &dcTmpMem, 0, 0, SRCCOPY); dcMem.SetBkMode( TRANSPARENT ); dcMem.SetTextColor( RGB(255,255,255) ); CFont ItemFold; CFont *pOldFont = NULL; if( 0 != ItemFold.CreateFont( 30, 0,0,0, FW_BOLD ,0,0,0,DEFAULT_CHARSET, OUT_STROKE_PRECIS,CLIP_STROKE_PRECIS,DRAFT_QUALITY, VARIABLE_PITCH|FF_SWISS, _T("Arial") ) ) { pOldFont = dcMem.SelectObject(&ItemFold); } dcMem.TextOut( 0, 0, strTitle ); if( pOldFont != NULL ) dcMem.SelectObject(pOldFont); ItemFold.DeleteObject(); dcMem.SelectObject(pOldBitmap); dcMem.DeleteDC(); BkBmp.DeleteObject(); dcTmpMem.SelectObject(pTmpOldBitmap); dcTmpMem.DeleteDC(); HBITMAP handle = ((CStatic*)GetDlgItem(IDC_TITLEBMP))->SetBitmap( pTitleBmp->operator HBITMAP() ); DeleteObject(handle); } ReleaseDC( pDC ); } //每次编辑完成时调用此函数进行内容合法性的检查并更新有关项的内容值 void CModeDlg::GridVerifyData( ) { GData* pGData = &(singleton::instance()); CString strItem; CCellID CellID = m_GridCtrl.GetFocusCell(); if( (CellID.row-1)=0 ) { MODE_INFO* pMI = pModeInfoes[CellID.row-1]; DIT_CLIENT_INFO *pDit = pGData->m_ditMgr.findDITInfoByPumpNo(pMI->nNozzleNum); strItem = m_GridCtrl.GetItemText( CellID.row, CellID.col ); if( CellID.col == 0 )//枪号 { } else if( CellID.col == 1 )//当前模式 { } else if( CellID.col == 2 )//新选择模式 { CString strPreItem = ""; if( pDit != NULL ) { if( pDit->m_ProtocolType==PROTOCOL_HENGSHAN || pDit->m_ProtocolType==PROTOCOL_NEWHENGSHAN || pDit->m_ProtocolType == PROTOCOL_HENGSHAN_HSC ) { if( strItem == "用卡自助" ) { if( pMI->nNewMode == WOKRMODE_HOST_AUTO ) strPreItem = "后台自动授权"; else if( pMI->nNewMode == WOKRMODE_HOST_MANUAL ) strPreItem = "后台手动授权"; else if( pMI->nNewMode == WOKRMODE_HOST_ACTIVE ) strPreItem = "后台现金预付"; else strPreItem = "后台自动授权"; } } } if( strPreItem != "" ) { m_GridCtrl.SetItemText( CellID.row, CellID.col, strPreItem ); } else { if( strItem == "用卡自助" ) pMI->nNewMode = WOKRMODE_CARD_SELFHELP; else if( strItem == "后台自动授权" ) pMI->nNewMode = WOKRMODE_HOST_AUTO; else if( strItem == "后台手动授权" ) pMI->nNewMode = WOKRMODE_HOST_MANUAL; else if( strItem == "后台现金预付" ) pMI->nNewMode = WOKRMODE_HOST_ACTIVE; // else if( strItem == "脱机" ) // pMI->nNewMode = WOKRMODE_OFFLINE; else pMI->nNewMode = WOKRMODE_NULL; } } else if( CellID.col == 3 )//收银方式 { if( strItem == "POS收银" ) pMI->nCheckoutMode = CHECKOUT_POS; else if( strItem == "室外收银" ) pMI->nCheckoutMode = CHECKOUT_MANUAL; } } } void CModeDlg::OnDefaultsettingBtn() { GData* pGData = &(singleton::instance()); for(int i=0; im_pumpsMgr.findPumpCfgByNozzleNo(pItem->nNozzleNum); if( pPumpCfg != NULL ) { CString strItem; pItem->nNewMode = pPumpCfg->nWorkMode; pItem->nCheckoutMode = pPumpCfg->nCheckoutMode; if( pItem->nNewMode == WOKRMODE_CARD_SELFHELP ) strItem = "用卡自助"; else if( pItem->nNewMode == WOKRMODE_HOST_AUTO ) strItem = "后台自动授权"; else if( pItem->nNewMode == WOKRMODE_HOST_MANUAL ) strItem = "后台手动授权"; else if( pItem->nNewMode == WOKRMODE_HOST_ACTIVE ) strItem = "后台现金预付"; // else if( pItem->nNewMode == WOKRMODE_OFFLINE ) // strItem = "脱机"; else strItem = "用卡自助"; m_GridCtrl.SetItemText( i+1, 2, strItem ); if( pItem->nCheckoutMode == CHECKOUT_POS ) strItem = "POS收银"; else if( pItem->nCheckoutMode == CHECKOUT_MANUAL ) strItem = "室外收银"; else strItem = "POS收银"; m_GridCtrl.SetItemText( i+1, 3, strItem ); } } m_GridCtrl.Invalidate(); }