// DLG_SmsDY.cpp : implementation file // #include "stdafx.h" #include "corpsms.h" #include "DLG_SmsDY.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // DLG_SmsDY dialog #include "DLG_SmsDY_Add.h" #include "DLG_SmsDYType_Add.h" DLG_SmsDY::DLG_SmsDY(CWnd* pParent /*=NULL*/) : CDialog(DLG_SmsDY::IDD, pParent) { //{{AFX_DATA_INIT(DLG_SmsDY) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT m_bRefresh2 = false; m_bOpenItem = false; m_bDblclkSelect = true; } void DLG_SmsDY::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(DLG_SmsDY) DDX_Control(pDX, IDC_SMSDY_TYPE, m_wndType); DDX_Control(pDX, IDC_SMSDY_LIST, m_wndList); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(DLG_SmsDY, CDialog) //{{AFX_MSG_MAP(DLG_SmsDY) ON_BN_CLICKED(IDC_SMSDY_ADD, OnSmsdyAdd) ON_NOTIFY(NM_DBLCLK, IDC_SMSDY_LIST, OnDblclkSmsdyList) ON_BN_CLICKED(IDC_SMSDY_MODIFY, OnSmsdyModify) ON_BN_CLICKED(IDC_SMSDY_DELETE, OnSmsdyDelete) ON_NOTIFY(NM_DBLCLK, IDC_SMSDY_TYPE, OnDblclkSmsdyType) ON_NOTIFY(LVN_ITEMCHANGED, IDC_SMSDY_TYPE, OnItemchangedSmsdyType) ON_BN_CLICKED(IDC_SMSTYPE_ADD, OnSmstypeAdd) ON_BN_CLICKED(IDC_SMSTYPE_MODIFY, OnSmstypeModify) ON_BN_CLICKED(IDC_SMSTYPE_DEL, OnSmstypeDel) ON_WM_CLOSE() ON_WM_DESTROY() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // DLG_SmsDY message handlers BOOL DLG_SmsDY::OnInitDialog() { CDialog::OnInitDialog(); //创建图像列表 m_Image.Create( 4 , 18 , ILC_COLOR32|ILC_MASK , 5 , 1); CBitmap bmp; //bmp.LoadBitmap( IDB_L_DY ); m_Image.Add( &bmp , RGB(193,193,193) ); //设置 bmp.DeleteObject(); //加入图像列表 m_wndList.SetImageList(&m_Image,LVSIL_SMALL); //m_wndList.SetBkColor( RGB(237,238,188) ); //m_wndList.SetTextBkColor( RGB(237,238,188) ); m_wndList.SubClassWindow2(); m_wndList.SetHeadings(_T(" 短语内容,280;")); m_wndList.SetGridLines(true); //加入图像列表 m_wndType.SetImageList(&m_Image,LVSIL_SMALL); //m_wndType.SetBkColor( RGB(237,238,188) ); //m_wndType.SetTextBkColor( RGB(237,238,188) ); m_wndType.SubClassWindow2(); m_wndType.SetHeadings(_T(" 短语类别,160;")); m_wndType.SetGridLines(true); RefreshList(); if ( m_wndType.GetItemCount()>0 ) { m_wndType.SelectItem(0); RefreshDY(); } if ( !m_bDblclkSelect ) { GetDlgItem(IDOK)->SetWindowText(_T("确 定(&O)")); } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void DLG_SmsDY::SetParam(CAdoRecordSet *pAdoRS) { m_pAdoRS = pAdoRS; } void DLG_SmsDY::RefreshList() { m_bRefresh2 = true; CString strSelect; strSelect = _T("Select * from smsdytype"); BOOL b = m_pAdoRS->Open(strSelect); if ( b && m_pAdoRS->GetRecordCount() ) { m_pAdoRS->MoveFirst(); CString strMsg; long lCount=0; long lDYID; while( !m_pAdoRS->IsEOF() ) { m_pAdoRS->GetCollect( _T("DYID") , lDYID ); m_pAdoRS->GetCollect( _T("Title") , strMsg ); //m_wndList.InsertItem( lCount , _itot(lCount+1,szBuf,10) , 0 ); //m_wndList.SetItemText(lCount,1,strMsg); m_wndType.InsertItem( lCount , strMsg,0); m_wndType.SetItemData(lCount,lDYID); lCount++; m_pAdoRS->MoveNext(); } } m_bRefresh2 = false; } void DLG_SmsDY::OnSmsdyAdd() { if ( !m_bOpenItem ) return ; DLG_SmsDY_Add dlg(this); if ( dlg.DoModal() == IDOK ) { m_pAdoRS->Open( _T("smsdy") , adCmdTable ); m_pAdoRS->AddNew(); m_pAdoRS->PutCollect( _T("Type") , m_strTitle ); m_pAdoRS->PutCollect( _T("Msg") , dlg.m_strMsg2 ); m_pAdoRS->Update(); long lDYID; m_pAdoRS->GetCollect( _T("DYID") , lDYID ); m_pAdoRS->Close(); long lCount = m_wndList.GetItemCount(); m_wndList.InsertItem( lCount , dlg.m_strMsg2 , 0 ); m_wndList.SetItemData(lCount,lDYID); } } void DLG_SmsDY::OnDblclkSmsdyList(NMHDR* pNMHDR, LRESULT* pResult) { *pResult = 0; if ( m_bDblclkSelect ) OnOK(); else OnSmsdyModify(); } long DLG_SmsDY::GetCurrentSelected() { POSITION pos = m_wndList.GetFirstSelectedItemPosition(); if ( pos ) { return m_wndList.GetNextSelectedItem(pos); } return -1; } void DLG_SmsDY::OnOK() { long lItem = GetCurrentSelected(); if ( lItem < 0 ) { MessageBox( _T("你必须要从左边列表选择一条记录!"),_T("错误"),MB_ICONWARNING); return; } m_strDY = m_wndList.GetItemText(lItem,0); CDialog::OnOK(); } void DLG_SmsDY::OnSmsdyModify() { if ( !m_bOpenItem ) return ; long lItem = GetCurrentSelected(); if ( lItem < 0 ) { MessageBox( _T("你必须要从左边列表选择一条记录!"),_T("错误"),MB_ICONWARNING); return; } CString strMsg = m_wndList.GetItemText( lItem , 0 ); long lDYID = m_wndList.GetItemData(lItem); DLG_SmsDY_Add dlg(this); dlg.SetParam(strMsg); if ( dlg.DoModal() == IDOK ) { CString strSelect; CString strTemp = dlg.m_strMsg2; strTemp.Replace( _T("'") , _T("''") ); strSelect.Format( _T("update smsdy set Msg='%s' where DYID=%d") , strTemp,lDYID ); m_pAdoRS->Open( strSelect ); m_pAdoRS->Close(); m_wndList.SetItemText(lItem,0,dlg.m_strMsg2); } } void DLG_SmsDY::OnSmsdyDelete() { if ( !m_bOpenItem ) return ; long lItem = GetCurrentSelected(); if ( lItem < 0 ) { MessageBox( _T("你必须要从左边列表选择一条记录!"),_T("错误"),MB_ICONWARNING); return; } long lDYID = m_wndList.GetItemData(lItem); CString strSelect; strSelect.Format( _T("delete from smsdy where DYID=%d") , lDYID ); m_pAdoRS->Open(strSelect); m_pAdoRS->Close(); m_wndList.DeleteItem( lItem ); } void DLG_SmsDY::OnDblclkSmsdyType(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here *pResult = 0; } void DLG_SmsDY::OnItemchangedSmsdyType(NMHDR* pNMHDR, LRESULT* pResult) { HD_NOTIFY *phdn = (HD_NOTIFY *) pNMHDR; *pResult = 0; if ( m_bRefresh2 ) return ; if ( m_wndType.GetSelectedCount() > 1 ) //只处理一条 return; RefreshDY(); } void DLG_SmsDY::RefreshDY() { m_wndList.ShowWindow( SW_HIDE ); //加快显示速度 m_wndList.DeleteAllItems(); m_bOpenItem= false; long lItem = GetCurrentSelectedT(); if ( lItem < 0 ) { m_wndList.ShowWindow( SW_SHOW ); //加快显示速度 return ; } long lDYID = m_wndType.GetItemData(lItem); m_strTitle.Format( _T("%d") , lDYID ); CString strSelect; strSelect.Format(_T("Select * from smsdy where Type='%d'"),lDYID); BOOL b = m_pAdoRS->Open(strSelect); if ( b && m_pAdoRS->GetRecordCount() ) { m_pAdoRS->MoveFirst(); CString strMsg; //char szBuf[32]; long lCount=0; long lDYID; while( !m_pAdoRS->IsEOF() ) { m_pAdoRS->GetCollect( _T("DYID") , lDYID ); m_pAdoRS->GetCollect( _T("Msg") , strMsg ); //m_wndList.InsertItem( lCount , _itot(lCount+1,szBuf,10) , 0 ); //m_wndList.SetItemText(lCount,1,strMsg); m_wndList.InsertItem( lCount , strMsg,0); m_wndList.SetItemData(lCount,lDYID); lCount++; m_pAdoRS->MoveNext(); } } m_bOpenItem = true; m_wndList.ShowWindow( SW_SHOW ); //加快显示速度 } long DLG_SmsDY::GetCurrentSelectedT() { POSITION pos = m_wndType.GetFirstSelectedItemPosition(); if ( pos ) { return m_wndType.GetNextSelectedItem(pos); } return -1; } void DLG_SmsDY::OnSmstypeAdd() { DLG_SmsDYType_Add dlg(this); if ( dlg.DoModal() == IDOK ) { m_pAdoRS->Open( _T("smsdytype") , adCmdTable ); m_pAdoRS->AddNew(); m_pAdoRS->PutCollect( _T("Title") , dlg.m_strMsg2 ); m_pAdoRS->Update(); long lDYID; m_pAdoRS->GetCollect( _T("DYID") , lDYID ); m_pAdoRS->Close(); long lCount = m_wndType.GetItemCount(); m_wndType.InsertItem( lCount , dlg.m_strMsg2 , 0 ); m_wndType.SetItemData(lCount,lDYID); } } void DLG_SmsDY::OnSmstypeModify() { long lItem = GetCurrentSelectedT(); if ( lItem < 0 ) { MessageBox( _T("你必须要从短语类别列表选择一条记录!"),_T("错误"),MB_ICONWARNING); return; } CString strMsg = m_wndType.GetItemText( lItem , 0 ); long lDYID = m_wndType.GetItemData(lItem); DLG_SmsDYType_Add dlg(this); dlg.SetParam(strMsg); if ( dlg.DoModal() == IDOK ) { CString strSelect; CString strTemp = dlg.m_strMsg2; strTemp.Replace( _T("'") , _T("''") ); strSelect.Format( _T("update smsdytype set Title='%s' where DYID=%d") , strTemp,lDYID ); m_pAdoRS->Open( strSelect ); m_pAdoRS->Close(); m_wndType.SetItemText(lItem,0,dlg.m_strMsg2); } } void DLG_SmsDY::OnSmstypeDel() { long lItem = GetCurrentSelectedT(); if ( lItem < 0 ) { MessageBox( _T("你必须要从短语类别列表选择一条记录!"),_T("错误"),MB_ICONWARNING); return; } long lDYID = m_wndType.GetItemData(lItem); CString strSelect; strSelect.Format( _T("delete from smsdytype where DYID=%d") , lDYID ); m_pAdoRS->Open(strSelect); m_pAdoRS->Close(); strSelect.Format( _T("delete from smsdy where Type='%d'") , lDYID ); m_pAdoRS->Open(strSelect); m_pAdoRS->Close(); m_wndType.DeleteItem( lItem ); } void DLG_SmsDY::OnClose() { m_bRefresh2 = true; //为了不刷新 CDialog::OnClose(); } void DLG_SmsDY::OnDestroy() { m_bRefresh2 = true; //为了不刷新 CDialog::OnDestroy(); }