// DressEarlyWarning.cpp : implementation file // #include "stdafx.h" #include "ylgl.h" #include "DressEarlyWarning.h" #include "MyMdi.H" #include "HireDress.h" #include "HireDress2.h" #include "HireDressReturn.h" #include "SendMsgDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // DressEarlyWarning IMPLEMENT_DYNCREATE(DressEarlyWarning, MyFormView) DressEarlyWarning::DressEarlyWarning() : MyFormView(DressEarlyWarning::IDD) { //{{AFX_DATA_INIT(DressEarlyWarning) m_filter = _T(""); m_dtdays = 2; //}}AFX_DATA_INIT } DressEarlyWarning::~DressEarlyWarning() { } void DressEarlyWarning::DoDataExchange(CDataExchange* pDX) { MyFormView::DoDataExchange(pDX); //{{AFX_DATA_MAP(DressEarlyWarning) DDX_Control(pDX, IDC_SPIN1, m_spin1); 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_Text(pDX, IDC_EDITyear, m_dtdays); DDV_MinMaxUInt(pDX, m_dtdays, 0, 100); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(DressEarlyWarning, MyFormView) //{{AFX_MSG_MAP(DressEarlyWarning) ON_BN_CLICKED(IDC_BUTclose, OnBUTclose) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_WM_TIMER() ON_NOTIFY(NM_DBLCLK, IDC_LIST2, OnDblclkList2) ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeCombo1) ON_BN_CLICKED(IDC_BUTTON2, OnButton2) ON_BN_CLICKED(IDC_BUTTON3, OnButton3) ON_BN_CLICKED(IDC_BUTTON4, OnButton4) ON_BN_CLICKED(IDC_BUTTON5, OnButton5) ON_BN_CLICKED(IDC_BUTTON6, OnButton6) ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST2, OnItemchangedList2) ON_BN_CLICKED(IDC_BUTTON10, OnButton10) ON_EN_CHANGE(IDC_EDITyear, OnChangeEDITyear) ON_WM_DESTROY() //}}AFX_MSG_MAP ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST2, OnCustomdrawList) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // DressEarlyWarning diagnostics #ifdef _DEBUG void DressEarlyWarning::AssertValid() const { MyFormView::AssertValid(); } void DressEarlyWarning::Dump(CDumpContext& dc) const { MyFormView::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // DressEarlyWarning message handlers void DressEarlyWarning::OnInitialUpdate() { MyFormView::OnInitialUpdate(); GetDlgItem(IDC_BUTTON4)->EnableWindow(IsHasRights2new(41)); GetDlgItem(IDC_BUTTON5)->EnableWindow(IsHasRights2new(41)); GetDlgItem(IDC_BUTTON2)->EnableWindow(IsHasRights2new(41)); GetDlgItem(IDC_BUTTON6)->EnableWindow(IsHasRights2new(42)); GetDlgItem(IDC_BUTTON3)->EnableWindow(IsHasRights2new(49)); m_spin1.SetRange(0, 100); // TODO: Add your specialized code here and/or call the base class CMyMdi Mdi; Mdi.SetSubView((CWnd*)GetParent(), (CWnd*)this); // Here we create the outbar control using the splitter as its parent // and setting its id to the first pane. 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); m_List1.SetHeadings("编号,100;名称,100;数量,60;已售,60;客人,100;电话,100;数量,60;取件日,100;还件日,100;经手人,100;日期,100"); m_List1.LoadColumnInfo (280); m_List1.m_bSortSupport =0; g_sendhead.bsql=0; g_sendhead.code[0]=222; g_sendhead.tabcount=1; g_pMainWnd->ProcessChatMessageRequest2("(hireorsale<>'售' or hireorsale is null) and (isreturn<>'已还' or isreturn is null)");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 ()); m_dtdays=AfxGetApp()->GetProfileInt (LYFZVERSION, "dtdays", 2); UpdateData(0); } void DressEarlyWarning::FillGrid() { m_filter.MakeUpper(); m_List1.DeleteAllItems2 (); int ii=0; m_List1.m_arLabels.SetSize( m_List1array.GetSize (), 1 ); int count=0; if(m_filter.IsEmpty ()) { for(ii=0; iiSendMessage(WM_CLOSE); } void DressEarlyWarning::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default KillTimer(nIDEvent); OnButton1(); } BOOL DressEarlyWarning::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class 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(...) { } return true; } void DressEarlyWarning::OnButton1() { // TODO: Add your control notification handler code here UpdateData(); m_filter.TrimLeft (); m_filter.TrimRight (); FillGrid(); } void DressEarlyWarning::OnDblclkList2(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here OnButton6(); /* POSITION pos; pos=m_List1.GetFirstSelectedItemPosition(); if(pos==NULL) { return; } int iItem=m_List1.GetNextSelectedItem(pos); CString memberno=m_List1.GetItemText (iItem, 1); AddMember dlg; dlg.m_memberno =memberno; dlg.m_bAdd=0; if(dlg.DoModal ()==IDOK) { g_sendhead.bsql=0; g_sendhead.code[0]=68; g_sendhead.tabcount=1; g_pMainWnd->ProcessChatMessageRequest2(1);if(g_bSendOK==0)return; DataToArray(&m_List1array); OnButton1(); }*/ *pResult = 0; } void DressEarlyWarning::OnSelchangeCombo1() { // TODO: Add your control notification handler code here SetTimer(1, 100, NULL); } void DressEarlyWarning::GetData() { } void DressEarlyWarning::OnButton4() { // TODO: Add your control notification handler code here } void DressEarlyWarning::OnButton5() { // TODO: Add your control notification handler code here } void DressEarlyWarning::OnButton6() //修改 { } void DressEarlyWarning::OnButton2() { } void DressEarlyWarning::OnItemchangedList2(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; // TODO: Add your control notification handler code here *pResult = 0; } void DressEarlyWarning::OnButton10() { } void DressEarlyWarning::OnChangeEDITyear() { OnButton1(); } void DressEarlyWarning::OnDestroy() { MyFormView::OnDestroy(); // TODO: Add your message handler code here AfxGetApp()->WriteProfileInt (LYFZVERSION, "dtdays", m_dtdays); } void DressEarlyWarning::OnButton3() { UpdateData(); POSITION pos; CStringArray array; CString name; pos=m_List1.GetFirstSelectedItemPosition(); if(pos==NULL) { AfxMessageBox("请先选中您要发送短信的客人!", MB_ICONINFORMATION); return; } int iItem; while (pos) { iItem = m_List1.GetNextSelectedItem(pos); array.Add (m_List1.GetItemText (iItem, 5)); } SendMsgDlg dlg; // if(m_radio==5) dlg.m_mode=1; dlg.m_pArray=&array; dlg.DoModal (); } void DressEarlyWarning::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. COLORREF crText; int pos=pLVCD->nmcd.dwItemSpec; if(pos%2) pLVCD->clrTextBk = g_gridcol1; else pLVCD->clrTextBk = g_gridcol2; int posbase=pos; while(m_List1.m_arLabels.ElementAt (posbase).ElementAt (0).IsEmpty ()) { posbase--; if(posbase<1)break; } BOOL bNeedReturn=0; CTimeSpan dt(m_dtdays, 0, 0, 0); CTime todaytm(atoi(g_date.Mid (0,4)),atoi(g_date.Mid (5,2)),atoi(g_date.Mid (8,2)),0,0,0); todaytm+=dt; int cot=atoi(m_List1.m_arLabels.ElementAt (posbase).ElementAt (2))-atoi(m_List1.m_arLabels.ElementAt (posbase).ElementAt (3)); if(posbase==pos) { bNeedReturn=0; CString time1=m_List1.m_arLabels.ElementAt (pos).ElementAt (8); if(time1.GetLength()>5) { CTime returntm(atoi(time1.Mid (0,4)),atoi(time1.Mid (5,2)),atoi(time1.Mid (8,2)),0,0,0); if(todaytm>=returntm) bNeedReturn=1; } if(bNeedReturn||atoi(m_List1.m_arLabels.ElementAt (posbase).ElementAt (6))>cot) crText = RGB(220,0,0); else crText = RGB(20,133,20); pLVCD->clrText = crText; } else { CString time1=m_List1.m_arLabels.ElementAt (pos).ElementAt (7); CTime taketm(atoi(time1.Mid (0,4)),atoi(time1.Mid (5,2)),atoi(time1.Mid (8,2)),0,0,0); //取衣日 for(int i=posbase; i=taketm) cot-=atoi(m_List1.m_arLabels.ElementAt (i).ElementAt (6)); // else if(returntm<=todaytm) // cot-=atoi(m_List1.m_arLabels.ElementAt (i).ElementAt (6)); } bNeedReturn=0; time1=m_List1.m_arLabels.ElementAt (pos).ElementAt (8); if(time1.GetLength()>5) { CTime returntm(atoi(time1.Mid (0,4)),atoi(time1.Mid (5,2)),atoi(time1.Mid (8,2)),0,0,0); if(returntm<=todaytm) bNeedReturn=1; } if(bNeedReturn==0 && cot>=atoi(m_List1.m_arLabels.ElementAt (pos).ElementAt (6))) crText = RGB(20,133,20); else crText = RGB(220,0,0); pLVCD->clrText = crText; } // Store the color back in the NMLVCUSTOMDRAW struct. // Tell Windows to paint the control itself. *pResult = CDRF_DODEFAULT; } }