// ProcessAlarm.cpp : implementation file // #include "stdafx.h" #include "ylgl.h" #include "ProcessAlarm.h" #include "MyMdi.H" #include "ModifyDinDan.h" #include "NeroDlg.h" #include "ClientRequirement.h" #include "./helper/ffsco.h" #include "TakeMoney4.h" #include "AlarmDays.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #pragma comment(lib, "Shlwapi.lib") ///////////////////////////////////////////////////////////////////////////// // ProcessAlarm IMPLEMENT_DYNCREATE(ProcessAlarm, MyFormView) ProcessAlarm::ProcessAlarm() : MyFormView(ProcessAlarm::IDD) { //{{AFX_DATA_INIT(ProcessAlarm) m_filter = _T(""); m_check1 = FALSE; m_check2 = FALSE; //}}AFX_DATA_INIT } ProcessAlarm::~ProcessAlarm() { } void ProcessAlarm::DoDataExchange(CDataExchange* pDX) { MyFormView::DoDataExchange(pDX); //{{AFX_DATA_MAP(ProcessAlarm) DDX_Control(pDX, IDC_COMBO1, m_combo1); DDX_Control(pDX, IDC_LIST2, m_List1); DDX_Control(pDX, IDC_STATIC1, m_static1); DDX_CBString(pDX, IDC_COMBO1, m_filter); DDX_Check(pDX, IDC_CHECK1, m_check1); DDX_Check(pDX, IDC_CHECK2, m_check2); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(ProcessAlarm, MyFormView) //{{AFX_MSG_MAP(ProcessAlarm) ON_BN_CLICKED(IDC_BUTclose, OnBUTclose) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeCombo1) ON_WM_TIMER() ON_BN_CLICKED(IDC_BUTshowphoto, OnBUTshowphoto) ON_BN_CLICKED(IDC_BUTexportphoto, OnBUTexportphoto) ON_BN_CLICKED(IDC_BUTimportphoto, OnBUTimportphoto) ON_BN_CLICKED(IDC_BUTTON2, OnButton2) ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST2, OnItemchangedList2) ON_BN_CLICKED(IDC_BUTburncd, OnBUTProcessAlarm) ON_NOTIFY(NM_DBLCLK, IDC_LIST2, OnDblclkList2) ON_NOTIFY(NM_CLICK, IDC_LIST2, OnClickList2) ON_BN_CLICKED(IDC_BUTburncd2, OnBUTburncd2) ON_BN_CLICKED(IDC_CHECK1, OnCheck1) ON_BN_CLICKED(IDC_CHECK2, OnCheck2) //}}AFX_MSG_MAP ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST2, OnCustomdrawList) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // ProcessAlarm diagnostics #ifdef _DEBUG void ProcessAlarm::AssertValid() const { MyFormView::AssertValid(); } void ProcessAlarm::Dump(CDumpContext& dc) const { MyFormView::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // ProcessAlarm message handlers void ProcessAlarm::OnInitialUpdate() { MyFormView::OnInitialUpdate(); // TODO: Add your specialized code here and/or call the base class CMyMdi Mdi; Mdi.SetSubView((CWnd*)GetParent(), (CWnd*)this); GetDlgItem(IDC_BUTburncd2)->EnableWindow(IsHasRights2new(49)); // Here we create the outbar control using the splitter as its parent // and setting its id to the first pane. tmdoday = ::GetTmFromStr(g_date); //tmdt tmdindan CRect rc2; GetWindowRect(rc2); ::MoveWindow(m_hWnd, g_rc.left, g_rc.top, g_rc.Width(), g_rc.Height(), TRUE); EnumChildWindows(m_hWnd, (WNDENUMPROC)EnumChildProc, 0); m_static1.SetFont(&g_titlefont); #ifdef CHILD_VERSION m_List1.SetHeadings("订单号,109;家长姓名,85;宝宝姓名,85;门市,85;订单日期,86;拍照时间,86;选片时间,86;拍照,70;拍完,70;选片,50;看样,50;件齐,50;取走,50;手机,100;固定电话,100"); #else m_List1.SetHeadings("订单号,109;男宾姓名,85;女宾姓名,85;门市,85;订单日期,86;拍照时间,86;选片时间,86;拍照,70;拍完,70;选片,50;看样,50;件齐,50;取走,50;男宾电话,100;女宾电话,100" ); #endif m_List1.LoadColumnInfo(303); // 获取alarmview视图数据,并转换; g_sendhead.bsql = 0; g_sendhead.code[0] = 229; // alarmview需要重新设计; g_sendhead.tabcount = 1; g_pMainWnd->ProcessChatMessageRequest2(1); if (g_bSendOK == 0) return; DataToArray(&m_List1array); // 初始化列表框数据记录; FillGrid(); m_combo1.GetWindowRect(rc2); ScreenToClient(rc2); rc2.bottom += 200; m_combo1.MoveWindow(rc2); GetDlgItem(IDC_BUTclose)->GetWindowRect(rc2); SetComboHei(&m_combo1, rc2.Height()); } void ProcessAlarm::FillGrid(BOOL bStatus)//对list列表框初始化数据记录; { HidePrice(); m_List1.DeleteAllItems2(); int ii = 0; m_List1.m_arLabels.SetSize(m_List1array.GetSize(), 1); //m_List1.m_arLabels.SetSize( m_List1array.GetSize()-2, 1 ); int count = 0; if (m_filter.IsEmpty()) { for (ii = 0; ii < m_List1.m_arLabels.GetSize(); ii++) { m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii)); } } else { int type = GetType(m_filter); if (type == 1)//电话 { for (ii = 0; ii < m_List1.m_arLabels.GetSize(); ii++) { if (m_List1array.ElementAt(ii).ElementAt(11).Find(m_filter) != -1 || \ m_List1array.ElementAt(ii).ElementAt(12).Find(m_filter) != -1) { m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii)); } } } else if (type == 2)//手机、固话; { m_filter.MakeUpper(); for (ii = 0; ii < m_List1.m_arLabels.GetSize(); ii++) { if (m_List1array.ElementAt(ii).ElementAt(13).Find(m_filter) != -1 || \ m_List1array.ElementAt(ii).ElementAt(14).Find(m_filter) != -1) { m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii)); } } } else { for (ii = 0; ii < m_List1.m_arLabels.GetSize(); ii++) { if (m_List1array.ElementAt(ii).ElementAt(0).Find(m_filter) != -1 || \ m_List1array.ElementAt(ii).ElementAt(1).Find(m_filter) != -1 || \ m_List1array.ElementAt(ii).ElementAt(2).Find(m_filter) != -1 || \ m_List1array.ElementAt(ii).ElementAt(3).Find(m_filter) != -1 || \ m_List1array.ElementAt(ii).ElementAt(14).Find(m_filter) != -1 || \ m_List1array.ElementAt(ii).ElementAt(11).Find(m_filter) != -1 || \ m_List1array.ElementAt(ii).ElementAt(12).Find(m_filter) != -1 || \ m_List1array.ElementAt(ii).ElementAt(13).Find(m_filter) != -1) { m_List1.m_arLabels.ElementAt(count++).Copy(m_List1array.ElementAt(ii)); } } } } m_List1.m_arLabels.SetSize(count, 1); ii = count; m_List1.m_LabelCount = ii; m_List1.SetItemCountEx(ii); CString str; str.Format("单数:%d", ii); SetDlgItemText(IDC_STATIC2, str); if (!g_id.IsEmpty()) { for (int i = 0; i < m_List1.GetItemCount(); i++) { if (g_id == m_List1.GetItemText(i, 0)) { m_List1.SetItemState(i, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED); m_List1.EnsureVisible(i, FALSE); break; } } } } void ProcessAlarm::OnBUTclose() { GetParent()->SendMessage(WM_CLOSE); } void ProcessAlarm::OnSelchangeCombo1() { SetTimer(1, 100, NULL); } void ProcessAlarm::OnTimer(UINT nIDEvent) { KillTimer(nIDEvent); OnButton1(); } BOOL ProcessAlarm::PreTranslateMessage(MSG* pMsg) { try { if (pMsg->message == WM_KEYDOWN) { switch (pMsg->wParam) { case VK_RETURN: OnButton1(); return 1; case 0x43: // copy if ((GetKeyState(VK_CONTROL) & 0x80)) { GetFocus()->SendMessage(WM_COPY); return TRUE; } break; case 0x56: //Ctrl + V: if ((GetKeyState(VK_CONTROL) & 0x80)) { GetFocus()->SendMessage(WM_PASTE); return TRUE; } break; case 0x58: // cut if ((GetKeyState(VK_CONTROL) & 0x80)) { GetFocus()->SendMessage(WM_CUT); return TRUE; } break; case 0x5A: //undo case 0x59: //redo if ((GetKeyState(VK_CONTROL) & 0x80)) { GetFocus()->SendMessage(WM_UNDO); return TRUE; } break; } } return MyFormView::PreTranslateMessage(pMsg); } catch (...) { } } extern int CALLBACK BrowseProc(HWND hwnd, UINT msg, LPARAM lParam, LPARAM lpData); void ProcessAlarm::GetSavePath(CString &path) { char lpszDisplayName[MAX_PATH], szFileName[MAX_PATH]; LPITEMIDLIST pidlDesktop, pidlCurrent; if (SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &pidlDesktop) == NOERROR) { BROWSEINFO bi; bi.hwndOwner = this->m_hWnd; bi.pidlRoot = pidlDesktop; bi.pszDisplayName = lpszDisplayName; bi.lpszTitle = "\n文档保存的目录:"; bi.ulFlags = BIF_STATUSTEXT&BIF_RETURNONLYFSDIRS; bi.lpfn = BrowseProc; bi.lParam = 0; bi.iImage = 0; pidlCurrent = SHBrowseForFolder(&bi); SHGetPathFromIDList(pidlCurrent, szFileName); path = szFileName; } } int ProcessAlarm::FindArray(CStringArray *pArray, CString Str) { for (int i = 0; i < pArray->GetSize(); i++) { if (pArray->ElementAt(i) == Str) return i; } return -1; } //----------------------------------------------------------------- // remark by Jeff 2014-12-12 // 函数:GetNo // 描述:从str中解析出每个相片名,然后存入空的CStringArray中; // 参数: // str:选好的相片名串,如:"001,002,003" 后分隔符改为"|",结果应是"001|002|003" // array:空的数组,用来存放解析后的相片名; // 返回: // 注意:更换分隔符造成的问题,在该函数已解决; //----------------------------------------------------------------- void ProcessAlarm::GetNo(CString str, CStringArray &array) { if (!str.IsEmpty()) { #ifdef USE_SEP_VEB int pos = str.Find(SEPS_VEB); #else int pos = str.Find(","); #endif while (pos != -1) { if (FindArray(&array, str.Left(pos)) == -1) array.Add(str.Left(pos)); str = str.Right(str.GetLength() - pos - 1); #ifdef USE_SEP_VEB pos = str.Find(SEPS_VEB); #else pos = str.Find(","); #endif } if (FindArray(&array, str) == -1) array.Add(str); } } //----------------------------------------------------------------- // remark by Jeff 2014-12-12 // 函数:GetSelName // 描述: // 参数: // name:由GetNo解析出来后的单个相片名,如:"001" // spnamearray:订单下的商品数组,case 50所得; // 返回: // 注意:更换分隔符造成的问题,在该函数已解决; //----------------------------------------------------------------- CString ProcessAlarm::GetSelName(CString name, CArray&spnamearray) { CString ret; #ifdef USE_SEP_VEB name = SEPS_VEB + name + SEPS_VEB; #else name = "," + name + ","; #endif CString str; for (int i = 0; i < spnamearray.GetSize(); i++) { #ifdef USE_SEP_VEB str = SEPS_VEB + spnamearray.ElementAt(i).ElementAt(6) + SEPS_VEB; #else str = "," + spnamearray.ElementAt(i).ElementAt(6) + ","; #endif if (str.Find(name) != -1) { ret += spnamearray.ElementAt(i).ElementAt(5); ret += ";"; } } ret.TrimRight(";"); ret.Replace("*", "x"); return ret; } void ProcessAlarm::OnBUTexportphoto() { } void ProcessAlarm::OnBUTimportphoto() { } void ProcessAlarm::OnBUTshowphoto() { } void ProcessAlarm::OnButton1() { UpdateData(); m_filter.TrimLeft(); m_filter.TrimRight(); FillGrid(); } void ProcessAlarm::OnButton2() { } void ProcessAlarm::OnItemchangedList2(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; *pResult = 0; } void ProcessAlarm::OnDblclkList2(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; } void ProcessAlarm::OnClickList2(NMHDR* pNMHDR, LRESULT* pResult) { POSITION pos; pos = m_List1.GetFirstSelectedItemPosition(); if (pos == NULL)return; int iItem = m_List1.GetNextSelectedItem(pos); g_id = m_List1.GetItemText(iItem, 0); *pResult = 0; } void ProcessAlarm::HidePrice() { if (IsHasRights2new(31))return; for ( int i = 0; i < m_List1array.GetSize(); i++ ) { m_List1array.ElementAt(i).SetAt(13, "***"); m_List1array.ElementAt(i).SetAt(14, "***"); } } //lYFZ void ProcessAlarm::OnCheck1() { UpdateData(); FillGrid(); } void ProcessAlarm::OnCheck2() { OnCheck1(); } void ProcessAlarm::OnCustomdrawList(NMHDR* pNMHDR, LRESULT* pResult) { NMLVCUSTOMDRAW* pLVCD = reinterpret_cast(pNMHDR); // Take the default processing unless we set this to something else below. *pResult = 0; // First thing - check the draw stage. If it's the control's prepaint // stage, then tell Windows we want messages for every item. if (CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage) { *pResult = CDRF_NOTIFYITEMDRAW; } else if (CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage) { // This is the prepaint stage for an item. Here's where we set the // item's text color. Our return value will tell Windows to draw the // item itself, but it will use the new color we set here. // We'll cycle the colors through red, green, and light blue. *pResult = CDRF_NOTIFYSUBITEMDRAW; /* if(pLVCD->nmcd.dwItemSpec%2) pLVCD->clrTextBk = g_gridcol1; else pLVCD->clrTextBk = g_gridcol2; if(pLVCD->nmcd.dwItemSpec==0)pLVCD->clrTextBk = RGB(220,0,0); if(pLVCD->nmcd.dwItemSpec==2)pLVCD->clrTextBk = RGB(20,133,20); */ } else if ((CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage) { // This is the prepaint stage for a subitem. Here's where we set the // item's text and background colors. Our return value will tell // Windows to draw the subitem itself, but it will use the new colors // we set here. // The text color will cycle through red, green, and light blue. // The background color will be light blue for column 0, red for // column 1, and black for column 2. COLORREF crBkgnd; if (1) { if (pLVCD->nmcd.dwItemSpec % 2) crBkgnd = g_gridcol1; else crBkgnd = g_gridcol2; } #if 0 static BOOL b1 = FALSE; static BOOL b2 = FALSE; static BOOL b3 = FALSE; static BOOL b4 = FALSE; static BOOL b5 = FALSE; if ( 7 == pLVCD->iSubItem ) // 拍照字段; **不修改对比时间 { tmdindan= ::GetTmFromStr(m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(4)); tmdt=tmdoday-tmdindan; if(tmdt.GetDays()>=atoi(g_cominfoarray.ElementAt(0).ElementAt(141)) && m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(7)=="未拍") { b1 = FALSE; crBkgnd = RGB(220,0,0); // 红 } else { b1 = TRUE; crBkgnd = RGB(20,133,20); // 绿 } } else if ( 8 == pLVCD->iSubItem ) // 拍完字段; **不修改对比时间 { tmdindan= ::GetTmFromStr(m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(4)); tmdt=tmdoday-tmdindan; if(tmdt.GetDays()>=atoi(g_cominfoarray.ElementAt(0).ElementAt(142)) && m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(8)=="未拍完" || b1==FALSE) //if(tmdt.GetDays()>=atoi(g_cominfoarray.ElementAt(0).ElementAt(142)) && b1==FALSE) { b2 = FALSE; crBkgnd = RGB(220,0,0); } else { b2 = TRUE; crBkgnd = RGB(20,133,20); } } else if ( 9 == pLVCD->iSubItem ) // 选片字段; **对比拍完时间 { tmdindan= ::GetTmFromStr(m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(5)); // (5).拍照时间 && 拍照状态=ok tmdt=tmdoday-tmdindan; //if(tmdt.GetDays()>=atoi(g_cominfoarray.ElementAt(0).ElementAt(143)) && m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(9)!="OK" || b2==FALSE/*&& m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(8)=="未拍完"*/ ) if(tmdt.GetDays()>=atoi(g_cominfoarray.ElementAt(0).ElementAt(143)) && b2==FALSE ) { b3 = FALSE; crBkgnd = RGB(220,0,0); } else { b3 = TRUE; crBkgnd = RGB(20,133,20); } } else if ( 10 == pLVCD->iSubItem ) // 看样字段; **对比选完时间 { tmdindan= ::GetTmFromStr(m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(6)); // (6).选片时间 && 选片状态=ok tmdt=tmdoday-tmdindan; //if(tmdt.GetDays()>=atoi(g_cominfoarray.ElementAt(0).ElementAt(144)) && m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt (10)!="OK" || b3 == FALSE/* && m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(9)=="未选"*/) if(tmdt.GetDays()>=atoi(g_cominfoarray.ElementAt(0).ElementAt(144)) && b3 == FALSE) { b4 = FALSE; crBkgnd = RGB(220,0,0); } else { b4 = TRUE; crBkgnd = RGB(20,133,20); } } else if ( 11 == pLVCD->iSubItem ) // 件齐字段; **对比选完时间 { tmdindan= ::GetTmFromStr(m_List1.m_arLabels.ElementAt (pLVCD->nmcd.dwItemSpec).ElementAt(6)); // (6).选片时间 && 选片状态=ok tmdt=tmdoday-tmdindan; //if(tmdt.GetDays()>=atoi(g_cominfoarray.ElementAt(0).ElementAt(145)) && m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt (11)!="OK" || b4==FALSE/* && m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(9)=="未选"*/) if(tmdt.GetDays()>=atoi(g_cominfoarray.ElementAt(0).ElementAt(145)) && b4==FALSE) { b5 = FALSE; crBkgnd = RGB(220,0,0); } else { b5 = TRUE; crBkgnd = RGB(20,133,20); } } else if ( 12 == pLVCD->iSubItem ) // 取走字段; **对比选完时间 { tmdindan= ::GetTmFromStr(m_List1.m_arLabels.ElementAt (pLVCD->nmcd.dwItemSpec).ElementAt(6)); // (6).选片时间 && 选片状态=ok tmdt=tmdoday-tmdindan; //if(tmdt.GetDays()>=atoi(g_cominfoarray.ElementAt(0).ElementAt(146)) && m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt (12)=="未取" || b5==FALSE/*&& m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(9)=="未选"*/) if(tmdt.GetDays()>=atoi(g_cominfoarray.ElementAt(0).ElementAt(146)) && b5==FALSE) crBkgnd = RGB(220,0,0); else crBkgnd = RGB(20,133,20); } #else static BOOL b1 = FALSE; static BOOL b2 = FALSE; static BOOL b3 = FALSE; switch (pLVCD->iSubItem) { case 7:// 拍照字段; **不修改对比时间 tmdindan = ::GetTmFromStr(m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(4)); tmdt = tmdoday - tmdindan; if (tmdt.GetDays() >= atoi(g_cominfoarray.ElementAt(0).ElementAt(141)) && m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(7) == "未拍") { b1 = FALSE; crBkgnd = RGB(220, 0, 0); // 红 } else { b1 = TRUE; crBkgnd = RGB(20, 133, 20); // 绿 } break; case 8: // 拍完字段 red = !b1 && tmdt>(142) && 未拍完 tmdindan = ::GetTmFromStr(m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(4)); //printf("Jeff:订单号:%s,订单时间:%s\n\n",m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(1),m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(4));//Jeff Printf; //printf("Jeff:订单号;%s,订单时间:%s,订单后%s天\n\n",m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(1),m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(4),g_cominfoarray.ElementAt(0).ElementAt(142));//Jeff Printf; tmdt = tmdoday - tmdindan; //printf("Jeff:离订单时间后:%d天\n\n",tmdt.GetDays());// Jeff Printf; if ( /*b1==FALSE ||*/ tmdt.GetDays() >= atoi(g_cominfoarray.ElementAt(0).ElementAt(142)) && m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(8) == "未拍完") { b2 = FALSE; crBkgnd = RGB(220, 0, 0); } else { b2 = TRUE; crBkgnd = RGB(20, 133, 20); } break; case 9: // 选片字段 if (m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(5) == "") // 拍照时间空; { crBkgnd = RGB(20, 133, 20); } else { tmdindan = ::GetTmFromStr(m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(5)); // (5).拍照时间 && 拍照状态=ok tmdt = tmdoday - tmdindan; if (b2 == FALSE || tmdt.GetDays() >= atoi(g_cominfoarray.ElementAt(0).ElementAt(143)) && m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(9) != "OK" /*&& m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(8)=="未拍完"*/) { b3 = FALSE; crBkgnd = RGB(220, 0, 0); } else { b3 = TRUE; crBkgnd = RGB(20, 133, 20); } } break; case 10: // 看样字段; if (m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(6) == "") // 选片时间空; { //printf("Jeff:选片时间为空\n\n");//Jeff Printf; crBkgnd = RGB(20, 133, 20); } else { tmdindan = ::GetTmFromStr(m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(6)); // (6).选片时间 && 选片状态=ok // 若没有选片时间,该值为空; tmdt = tmdoday - tmdindan; if (b3 == FALSE || tmdt.GetDays() >= atoi(g_cominfoarray.ElementAt(0).ElementAt(144)) && m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(10) != "OK") { //b4 = FALSE; crBkgnd = RGB(220, 0, 0); } else { //b4 = TRUE; crBkgnd = RGB(20, 133, 20); } } break; case 11: // 件齐字段; if (m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(6) == "") { crBkgnd = RGB(20, 133, 20); } else { tmdindan = ::GetTmFromStr(m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(6)); // (6).选片时间 && 选片状态=ok tmdt = tmdoday - tmdindan; if (b3 == FALSE || tmdt.GetDays() >= atoi(g_cominfoarray.ElementAt(0).ElementAt(145)) && m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(11) != "OK" /* && m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(9)=="未选"*/) { /*b5 = FALSE;*/ crBkgnd = RGB(220, 0, 0); } else { //b5 = TRUE; crBkgnd = RGB(20, 133, 20); } } break; case 12: // 取走字段; if (m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(6) == "") { crBkgnd = RGB(20, 133, 20); } else { tmdindan = ::GetTmFromStr(m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(6)); // (6).选片时间 && 选片状态=ok tmdt = tmdoday - tmdindan; if (b3 == FALSE || tmdt.GetDays() >= atoi(g_cominfoarray.ElementAt(0).ElementAt(146)) && m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(12) == "未取" /*&& m_List1.m_arLabels.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(9)=="未选"*/) crBkgnd = RGB(220, 0, 0); else crBkgnd = RGB(20, 133, 20); } break; default: break; } #endif // Store the colors back in the NMLVCUSTOMDRAW struct. pLVCD->clrText = RGB(0, 0, 0); pLVCD->clrTextBk = crBkgnd; // Tell Windows to paint the control itself. *pResult = CDRF_DODEFAULT; } } void ProcessAlarm::OnBUTProcessAlarm() { // TODO: Add your control notification handler code here AlarmDays dlg; if (IDOK == dlg.DoModal()) OnButton1(); } void ProcessAlarm::OnBUTburncd2() { ListToXLS(&m_List1, "c:\\客人流程.xls", 0); }