// 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; i<pModeInfoes.GetSize(); i++ ) { MODE_INFO *pMI_1 = pModeInfoes[i]; for( j=i+1; j<pModeInfoes.GetSize(); j++ ) { MODE_INFO *pMI_2 = pModeInfoes[j]; if( pMI_1->nNozzleNum > 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;j<m_GridCtrl.m_comStrArray.GetSize();j++) delete m_GridCtrl.m_comStrArray.GetAt(j).comStr; m_GridCtrl.m_comStrArray.RemoveAll(); CStringArray col2; col2.Add( "�ÿ�����" ); col2.Add( "��̨�Զ���Ȩ" ); col2.Add( "��̨�ֶ���Ȩ" ); col2.Add( "��̨�ֽ�Ԥ��" ); // col2.Add( "�ѻ�" ); m_GridCtrl.AddComboColumn( 2, col2 ); CStringArray col3; col3.Add( "POS����" ); col3.Add( "��������" ); m_GridCtrl.AddComboColumn( 3, col3 ); for (int col = 0; col < m_GridCtrl.GetColumnCount(); col++) { GV_ITEM Item; Item.mask = GVIF_TEXT|GVIF_FORMAT; Item.row = 0; Item.col = col; Item.nFormat = DT_LEFT|DT_WORDBREAK; if( col == 0 ) Item.szText.Format(_T("ǹ��") ); else if( col == 1 ) Item.szText.Format(_T("��ǰģʽ") ); else if( col == 2 ) Item.szText.Format(_T("��ѡ��ģʽ") ); else if( col == 3 ) Item.szText.Format(_T("������ʽ") ); m_GridCtrl.SetItem(&Item); } } void CModeDlg::SetGridCtrlColumnInfo( ) { CRect rect; CWnd* pWnd = GetDlgItem( IDC_CUSTOM_GRIDCTRL ); pWnd->GetWindowRect(&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; i<pModeInfoes.GetSize(); i++ ) { MODE_INFO* pMI = pModeInfoes[ i ]; strItem.Format( "%d", pMI->nNozzleNum ); 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<GData>::instance()); CString strItem; CCellID CellID = m_GridCtrl.GetFocusCell(); if( (CellID.row-1)<pModeInfoes.GetSize() && (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<GData>::instance()); for(int i=0; i<pModeInfoes.GetSize(); i++ ) { MODE_INFO *pItem = pModeInfoes[i]; PUMP_CONFIG *pPumpCfg = pGData->m_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(); }