ModeDlg.cpp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470
  1. // ModeDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "ipos.h"
  5. #include "ModeDlg.h"
  6. //#include "ComboGridCtrl.h"
  7. #include "./public/GData.h"
  8. #include "./public/DitClientInfo.h"
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CModeDlg dialog
  16. CModeDlg::CModeDlg(CWnd* pParent /*=NULL*/)
  17. : CDialog(CModeDlg::IDD, pParent)
  18. {
  19. //{{AFX_DATA_INIT(CModeDlg)
  20. // NOTE: the ClassWizard will add member initialization here
  21. //}}AFX_DATA_INIT
  22. strTitle = "油机授权模式";
  23. pTitleBmp = NULL;
  24. }
  25. void CModeDlg::DoDataExchange(CDataExchange* pDX)
  26. {
  27. CDialog::DoDataExchange(pDX);
  28. //{{AFX_DATA_MAP(CModeDlg)
  29. DDX_Control(pDX, IDC_DEFAULTSETTING_BTN, m_DefaultsettingBtn);
  30. DDX_Control(pDX, IDCANCEL, m_CancelBtn);
  31. DDX_Control(pDX, IDOK, m_OkBtn);
  32. //}}AFX_DATA_MAP
  33. DDX_GridControl(pDX, IDC_CUSTOM_GRIDCTRL, m_GridCtrl);
  34. }
  35. BEGIN_MESSAGE_MAP(CModeDlg, CDialog)
  36. //{{AFX_MSG_MAP(CModeDlg)
  37. ON_WM_ERASEBKGND()
  38. ON_WM_CTLCOLOR()
  39. ON_BN_CLICKED(IDC_DEFAULTSETTING_BTN, OnDefaultsettingBtn)
  40. //}}AFX_MSG_MAP
  41. END_MESSAGE_MAP()
  42. /////////////////////////////////////////////////////////////////////////////
  43. // CModeDlg message handlers
  44. BOOL CModeDlg::OnInitDialog()
  45. {
  46. CDialog::OnInitDialog();
  47. // TODO: Add extra initialization here
  48. //*
  49. CFont* ptf = m_GridCtrl.GetFont(); // 得到原来的字体
  50. LOGFONT lf;
  51. ptf->GetLogFont(&lf);
  52. lf.lfHeight = 25; // 改变字体高度
  53. //strcpy (lf.lfFaceName, "宋体"); // 改变字体名称
  54. strcpy (lf.lfFaceName, "Arial"); // 改变字体名称
  55. lf.lfCharSet = DEFAULT_CHARSET; //DEFAULT_CHARSET ANSI_CHARSET GB2312_CHARSET
  56. //strcpy (lf.lfFaceName, "Arial Black"); // 改变字体名称
  57. //strcpy (lf.lfFaceName, "Arial"); // 改变字体名称
  58. lf.lfWeight = 700;
  59. m_Font.CreateFontIndirect(&lf);
  60. m_GridCtrl.SetFont(&m_Font); // 设置新字体
  61. m_GridCtrl.nParentType = 1;
  62. ShowTitle();
  63. m_DefaultsettingBtn.LoadBitmaps(_T("defaultsetting_up"), _T("defaultsetting_down"), _T("defaultsetting_up"), _T("defaultsetting_gray") );
  64. m_OkBtn.LoadBitmaps(_T("OK_up"), _T("OK_down"), _T("ok_up"), _T("OK_gray") );
  65. m_CancelBtn.LoadBitmaps(_T("cancel_up"), _T("cancel_down"), _T("cancel_up"), _T("cancel_gray") );
  66. //排序
  67. int i, j;
  68. for( i=0; i<pModeInfoes.GetSize(); i++ )
  69. {
  70. MODE_INFO *pMI_1 = pModeInfoes[i];
  71. for( j=i+1; j<pModeInfoes.GetSize(); j++ )
  72. {
  73. MODE_INFO *pMI_2 = pModeInfoes[j];
  74. if( pMI_1->nNozzleNum > pMI_2->nNozzleNum )
  75. {
  76. pModeInfoes.RemoveAt( j );
  77. pModeInfoes.RemoveAt( i );
  78. pModeInfoes.InsertAt( i, pMI_2 );
  79. pModeInfoes.InsertAt( j, pMI_1 );
  80. pMI_1 = pMI_2;
  81. }
  82. }
  83. }
  84. IniGridCtrlInfo( );
  85. SetGridCtrlColumnInfo( );
  86. InsertAllItem( );
  87. m_GridCtrl.SetComboBoxStyle( CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP );
  88. return TRUE; // return TRUE unless you set the focus to a control
  89. // EXCEPTION: OCX Property Pages should return FALSE
  90. }
  91. void CModeDlg::IniGridCtrlInfo( )
  92. {
  93. while( m_GridCtrl.GetRowCount() > 1 )
  94. m_GridCtrl.DeleteRow( 1 );
  95. while( m_GridCtrl.GetColumnCount() > 0 )
  96. m_GridCtrl.DeleteColumn( 0 );
  97. m_GridCtrl.SetFixedRowCount(1);
  98. m_GridCtrl.SetFixedColumnCount(2);
  99. m_GridCtrl.SetRowResize(false);
  100. m_GridCtrl.SetColumnResize(false);
  101. ////////////////////////////////////////////////////
  102. ////////////////////////////////////////////////////
  103. m_GridCtrl.SetColumnCount( 4 );
  104. for(int j=0;j<m_GridCtrl.m_comStrArray.GetSize();j++)
  105. delete m_GridCtrl.m_comStrArray.GetAt(j).comStr;
  106. m_GridCtrl.m_comStrArray.RemoveAll();
  107. CStringArray col2;
  108. col2.Add( "用卡自助" );
  109. col2.Add( "后台自动授权" );
  110. col2.Add( "后台手动授权" );
  111. col2.Add( "后台现金预付" );
  112. // col2.Add( "脱机" );
  113. m_GridCtrl.AddComboColumn( 2, col2 );
  114. CStringArray col3;
  115. col3.Add( "POS收银" );
  116. col3.Add( "室外收银" );
  117. m_GridCtrl.AddComboColumn( 3, col3 );
  118. for (int col = 0; col < m_GridCtrl.GetColumnCount(); col++)
  119. {
  120. GV_ITEM Item;
  121. Item.mask = GVIF_TEXT|GVIF_FORMAT;
  122. Item.row = 0;
  123. Item.col = col;
  124. Item.nFormat = DT_LEFT|DT_WORDBREAK;
  125. if( col == 0 )
  126. Item.szText.Format(_T("枪号") );
  127. else if( col == 1 )
  128. Item.szText.Format(_T("当前模式") );
  129. else if( col == 2 )
  130. Item.szText.Format(_T("新选择模式") );
  131. else if( col == 3 )
  132. Item.szText.Format(_T("收银方式") );
  133. m_GridCtrl.SetItem(&Item);
  134. }
  135. }
  136. void CModeDlg::SetGridCtrlColumnInfo( )
  137. {
  138. CRect rect;
  139. CWnd* pWnd = GetDlgItem( IDC_CUSTOM_GRIDCTRL );
  140. pWnd->GetWindowRect(&rect);
  141. ScreenToClient(rect);
  142. if( m_GridCtrl.GetColumnCount() >= 1 )
  143. {
  144. m_GridCtrl.SetColumnWidth( 0, 140 );
  145. m_GridCtrl.SetColumnWidth( 1, 260 );
  146. m_GridCtrl.SetColumnWidth( 2, 280 );
  147. m_GridCtrl.SetColumnWidth( 3, 280 );
  148. }
  149. }
  150. void CModeDlg::InsertAllItem( )
  151. {
  152. IniGridCtrlInfo( );
  153. SetGridCtrlColumnInfo( );
  154. int i;
  155. CString strItem;
  156. for( i=0; i<pModeInfoes.GetSize(); i++ )
  157. {
  158. MODE_INFO* pMI = pModeInfoes[ i ];
  159. strItem.Format( "%d", pMI->nNozzleNum );
  160. m_GridCtrl.InsertRow( strItem, m_GridCtrl.GetRowCount() );
  161. InsertItem( m_GridCtrl.GetRowCount()-1, pMI );
  162. }
  163. }
  164. void CModeDlg::InsertItem( int nIndex, MODE_INFO* pItem )
  165. {
  166. CString strItem;
  167. strItem.Format( "%d", pItem->nNozzleNum );
  168. m_GridCtrl.SetItemText( nIndex, 0, strItem );
  169. if( pItem->nCurMode == WOKRMODE_CARD_SELFHELP )
  170. strItem = "用卡自助";
  171. else if( pItem->nCurMode == WOKRMODE_HOST_AUTO )
  172. strItem = "后台自动授权";
  173. else if( pItem->nCurMode == WOKRMODE_HOST_MANUAL )
  174. strItem = "后台手动授权";
  175. else if( pItem->nCurMode == WOKRMODE_HOST_ACTIVE )
  176. strItem = "后台现金预付";
  177. // else if( pItem->nCurMode == WOKRMODE_OFFLINE )
  178. // strItem = "脱机";
  179. else
  180. strItem = "用卡自助";
  181. m_GridCtrl.SetItemText( nIndex, 1, strItem );
  182. m_GridCtrl.SetItemText( nIndex, 2, strItem );
  183. if( pItem->nCheckoutMode == CHECKOUT_POS )
  184. strItem = "POS收银";
  185. else if( pItem->nCheckoutMode == CHECKOUT_MANUAL )
  186. strItem = "室外收银";
  187. else
  188. strItem = "POS收银";
  189. m_GridCtrl.SetItemText( nIndex, 3, strItem );
  190. }
  191. HBRUSH CModeDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  192. {
  193. HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
  194. // TODO: Change any attributes of the DC here
  195. // TODO: Return a different brush if the default is not desired
  196. return hbr;
  197. }
  198. void CModeDlg::OnOK()
  199. {
  200. if( pTitleBmp)
  201. {
  202. pTitleBmp->DeleteObject();
  203. delete pTitleBmp;
  204. pTitleBmp = NULL;
  205. }
  206. m_Font.DeleteObject();
  207. CDialog::OnOK();
  208. }
  209. void CModeDlg::OnCancel()
  210. {
  211. if( pTitleBmp)
  212. {
  213. pTitleBmp->DeleteObject();
  214. delete pTitleBmp;
  215. pTitleBmp = NULL;
  216. }
  217. m_Font.DeleteObject();
  218. CDialog::OnCancel();
  219. }
  220. BOOL CModeDlg::OnEraseBkgnd(CDC* pDC)
  221. {
  222. CBitmap bmp;
  223. bmp.LoadBitmap( "FillingBK" );
  224. BITMAP bm;
  225. bmp.GetBitmap(&bm);
  226. CDC dcMemory;
  227. dcMemory.CreateCompatibleDC(pDC);
  228. CBitmap *ptrBmpOld=dcMemory.SelectObject(&bmp);
  229. pDC->BitBlt( 0, 0, bm.bmWidth, bm.bmHeight, &dcMemory, 0, 0, SRCCOPY );
  230. dcMemory.SelectObject(ptrBmpOld);
  231. dcMemory.DeleteDC();
  232. bmp.DeleteObject();
  233. return true;
  234. }
  235. void CModeDlg::ShowTitle()
  236. {
  237. CDC* pDC = GetDC();
  238. if( pTitleBmp)
  239. {
  240. pTitleBmp->DeleteObject();
  241. delete pTitleBmp;
  242. pTitleBmp = NULL;
  243. }
  244. CDC dcTmpMem;
  245. if( dcTmpMem.CreateCompatibleDC(pDC) )
  246. {
  247. CBitmap BkBmp;
  248. BkBmp.LoadBitmap( IDB_TITLE );
  249. CBitmap* pTmpOldBitmap = dcTmpMem.SelectObject( &BkBmp );
  250. BITMAP BkBitMap;
  251. BkBmp.GetBitmap( &BkBitMap );
  252. pTitleBmp = new CBitmap;
  253. pTitleBmp->CreateCompatibleBitmap(pDC,BkBitMap.bmWidth, BkBitMap.bmHeight);
  254. ASSERT(pTitleBmp->m_hObject != NULL);
  255. CDC dcMem;
  256. dcMem.CreateCompatibleDC(pDC);
  257. CBitmap* pOldBitmap = dcMem.SelectObject(pTitleBmp);
  258. dcMem.BitBlt( 0, 0, BkBitMap.bmWidth, BkBitMap.bmHeight, &dcTmpMem, 0, 0, SRCCOPY);
  259. dcMem.SetBkMode( TRANSPARENT );
  260. dcMem.SetTextColor( RGB(255,255,255) );
  261. CFont ItemFold;
  262. CFont *pOldFont = NULL;
  263. if( 0 != ItemFold.CreateFont( 30, 0,0,0, FW_BOLD ,0,0,0,DEFAULT_CHARSET,
  264. OUT_STROKE_PRECIS,CLIP_STROKE_PRECIS,DRAFT_QUALITY,
  265. VARIABLE_PITCH|FF_SWISS, _T("Arial") ) )
  266. {
  267. pOldFont = dcMem.SelectObject(&ItemFold);
  268. }
  269. dcMem.TextOut( 0, 0, strTitle );
  270. if( pOldFont != NULL )
  271. dcMem.SelectObject(pOldFont);
  272. ItemFold.DeleteObject();
  273. dcMem.SelectObject(pOldBitmap);
  274. dcMem.DeleteDC();
  275. BkBmp.DeleteObject();
  276. dcTmpMem.SelectObject(pTmpOldBitmap);
  277. dcTmpMem.DeleteDC();
  278. HBITMAP handle = ((CStatic*)GetDlgItem(IDC_TITLEBMP))->SetBitmap( pTitleBmp->operator HBITMAP() );
  279. DeleteObject(handle);
  280. }
  281. ReleaseDC( pDC );
  282. }
  283. //每次编辑完成时调用此函数进行内容合法性的检查并更新有关项的内容值
  284. void CModeDlg::GridVerifyData( )
  285. {
  286. GData* pGData = &(singleton<GData>::instance());
  287. CString strItem;
  288. CCellID CellID = m_GridCtrl.GetFocusCell();
  289. if( (CellID.row-1)<pModeInfoes.GetSize() && (CellID.row-1)>=0 )
  290. {
  291. MODE_INFO* pMI = pModeInfoes[CellID.row-1];
  292. DIT_CLIENT_INFO *pDit = pGData->m_ditMgr.findDITInfoByPumpNo(pMI->nNozzleNum);
  293. strItem = m_GridCtrl.GetItemText( CellID.row, CellID.col );
  294. if( CellID.col == 0 )//枪号
  295. {
  296. }
  297. else if( CellID.col == 1 )//当前模式
  298. {
  299. }
  300. else if( CellID.col == 2 )//新选择模式
  301. {
  302. CString strPreItem = "";
  303. if( pDit != NULL )
  304. {
  305. if( pDit->m_ProtocolType==PROTOCOL_HENGSHAN || pDit->m_ProtocolType==PROTOCOL_NEWHENGSHAN
  306. || pDit->m_ProtocolType == PROTOCOL_HENGSHAN_HSC )
  307. {
  308. if( strItem == "用卡自助" )
  309. {
  310. if( pMI->nNewMode == WOKRMODE_HOST_AUTO )
  311. strPreItem = "后台自动授权";
  312. else if( pMI->nNewMode == WOKRMODE_HOST_MANUAL )
  313. strPreItem = "后台手动授权";
  314. else if( pMI->nNewMode == WOKRMODE_HOST_ACTIVE )
  315. strPreItem = "后台现金预付";
  316. else
  317. strPreItem = "后台自动授权";
  318. }
  319. }
  320. }
  321. if( strPreItem != "" )
  322. {
  323. m_GridCtrl.SetItemText( CellID.row, CellID.col, strPreItem );
  324. }
  325. else
  326. {
  327. if( strItem == "用卡自助" )
  328. pMI->nNewMode = WOKRMODE_CARD_SELFHELP;
  329. else if( strItem == "后台自动授权" )
  330. pMI->nNewMode = WOKRMODE_HOST_AUTO;
  331. else if( strItem == "后台手动授权" )
  332. pMI->nNewMode = WOKRMODE_HOST_MANUAL;
  333. else if( strItem == "后台现金预付" )
  334. pMI->nNewMode = WOKRMODE_HOST_ACTIVE;
  335. // else if( strItem == "脱机" )
  336. // pMI->nNewMode = WOKRMODE_OFFLINE;
  337. else
  338. pMI->nNewMode = WOKRMODE_NULL;
  339. }
  340. }
  341. else if( CellID.col == 3 )//收银方式
  342. {
  343. if( strItem == "POS收银" )
  344. pMI->nCheckoutMode = CHECKOUT_POS;
  345. else if( strItem == "室外收银" )
  346. pMI->nCheckoutMode = CHECKOUT_MANUAL;
  347. }
  348. }
  349. }
  350. void CModeDlg::OnDefaultsettingBtn()
  351. {
  352. GData* pGData = &(singleton<GData>::instance());
  353. for(int i=0; i<pModeInfoes.GetSize(); i++ )
  354. {
  355. MODE_INFO *pItem = pModeInfoes[i];
  356. PUMP_CONFIG *pPumpCfg = pGData->m_pumpsMgr.findPumpCfgByNozzleNo(pItem->nNozzleNum);
  357. if( pPumpCfg != NULL )
  358. {
  359. CString strItem;
  360. pItem->nNewMode = pPumpCfg->nWorkMode;
  361. pItem->nCheckoutMode = pPumpCfg->nCheckoutMode;
  362. if( pItem->nNewMode == WOKRMODE_CARD_SELFHELP )
  363. strItem = "用卡自助";
  364. else if( pItem->nNewMode == WOKRMODE_HOST_AUTO )
  365. strItem = "后台自动授权";
  366. else if( pItem->nNewMode == WOKRMODE_HOST_MANUAL )
  367. strItem = "后台手动授权";
  368. else if( pItem->nNewMode == WOKRMODE_HOST_ACTIVE )
  369. strItem = "后台现金预付";
  370. // else if( pItem->nNewMode == WOKRMODE_OFFLINE )
  371. // strItem = "脱机";
  372. else
  373. strItem = "用卡自助";
  374. m_GridCtrl.SetItemText( i+1, 2, strItem );
  375. if( pItem->nCheckoutMode == CHECKOUT_POS )
  376. strItem = "POS收银";
  377. else if( pItem->nCheckoutMode == CHECKOUT_MANUAL )
  378. strItem = "室外收银";
  379. else
  380. strItem = "POS收银";
  381. m_GridCtrl.SetItemText( i+1, 3, strItem );
  382. }
  383. }
  384. m_GridCtrl.Invalidate();
  385. }