// DLG_QueryFilt_Inport.cpp : implementation file // #include "stdafx.h" #include "corpsms.h" #include "DLG_QueryFilt_Inport.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // DLG_QueryFilt_Inport dialog DLG_QueryFilt_Inport::DLG_QueryFilt_Inport(CWnd* pParent /*=NULL*/) : CDialog(DLG_QueryFilt_Inport::IDD, pParent) { //{{AFX_DATA_INIT(DLG_QueryFilt_Inport) //}}AFX_DATA_INIT } void DLG_QueryFilt_Inport::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(DLG_QueryFilt_Inport) DDX_Control(pDX, IDD_SMSJS_EXPORT_S1, m_B_Tips); DDX_Control(pDX, IDC_USER_INPORT_RECORD_SPLIT, m_C_RecordSplit); DDX_Control(pDX, IDC_USER_INPORT_FIELD_SPLIT, m_C_FieldSplit); DDX_Control(pDX, IDD_SMSJS_EXPORT_LIST, m_L_List); DDX_Control(pDX, IDD_SMSJS_EXPORT_FILENAME, m_E_FileName); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(DLG_QueryFilt_Inport, CDialog) //{{AFX_MSG_MAP(DLG_QueryFilt_Inport) ON_BN_CLICKED(IDD_SMSJS_EXPORT_SELALL, OnSmsjsExportSelall) ON_BN_CLICKED(IDD_SMSJS_EXPORT_CLEAR, OnSmsjsExportClear) ON_BN_CLICKED(IDD_SMSJS_EXPORT_GETFILE, OnSmsjsExportGetfile) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // DLG_QueryFilt_Inport message handlers BOOL DLG_QueryFilt_Inport::OnInitDialog() { CDialog::OnInitDialog(); CButton * pButton=(CButton * )GetDlgItem(IDD_SMSJS_EXPORT_TYPE1); pButton->SetCheck(true); m_C_FieldSplit.SetCurSel(0); m_C_RecordSplit.SetCurSel(0); InitList(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void DLG_QueryFilt_Inport::InitList() { m_L_List.Init(true,-1,1,-1); m_L_List.InsertColumn( 0 , _T("顺序") , LVCFMT_LEFT , 40 , 0); m_L_List.InsertColumn( 1 , _T(" 字段名") , LVCFMT_LEFT , 120 , 1); m_L_List.SetTextColor( RGB(0,0,255) ); TCHAR * pItem[] = { _T("姓名"), _T("手机号码"), _T("备注"), }; TCHAR Buf[256]; for ( int i = 0 ; i<3 ; i++ ) { m_L_List.InsertItem( i , _itot(i+1,Buf,10) ); m_L_List.SetItemText(i , 1 , pItem[i] ); m_L_List.SetItemData(i , i ); //设置这个是为了顺序不至于打乱 } m_L_List.CheckAll(); m_L_List.NoverCheck(); m_L_List.ReShowSort(); } void DLG_QueryFilt_Inport::OnSmsjsExportSelall() { m_L_List.CheckAll(); } void DLG_QueryFilt_Inport::OnSmsjsExportClear() { m_L_List.ClearAll(); } void DLG_QueryFilt_Inport::OnOK() { long lItemCount = m_L_List.GetItemCount(); long lExPortItem[50];memset(&lExPortItem,0,sizeof(lExPortItem)); for ( int j=0 ; j < 50 ; j++ ) lExPortItem[j] = -1; long lCheckCount = 0; for ( int i=0 ; iGetCheck() ) lQueryType =1; //取分隔 TCHAR szFieldSplit[8]={0}; TCHAR szRecordSplit[8]={0}; m_C_FieldSplit.GetWindowText( szFieldSplit , sizeof(szFieldSplit)); m_C_RecordSplit.GetWindowText( szRecordSplit , sizeof(szRecordSplit)); if ( _tcslen( szRecordSplit )<=0 ) { MessageBox( _T("记录分隔不能为空,请输入!") , _T("错误") , MB_ICONWARNING ); m_C_RecordSplit.SetFocus(); return ; } if ( !_tcsncmp(szRecordSplit,_T("换行"),4) ) { _tcscpy( szRecordSplit,_T("\n") ); } if ( _tcslen( szFieldSplit )<=0 ) { MessageBox( _T("字段分隔不能为空,请输入!") , _T("错误") , MB_ICONWARNING ); m_C_FieldSplit.SetFocus(); return ; } szFieldSplit[1]=0; //字段分隔只能是一个字符 TCHAR szFileName[512]; m_E_FileName.GetWindowText( szFileName , sizeof(szFileName) ); if ( _tcslen(AllTrim(szFileName)) <=0 ) { MessageBox( _T("你必须输入导入的文件名。") , _T("错误") , MB_OK|MB_ICONWARNING ); m_E_FileName.SetFocus(); return ; } //先清空原已有的记录 Close(); //打开文件  CFile fTalk; if ( !fTalk.Open( szFileName , CFile::modeRead ) ) { TCHAR Buf[512]; _stprintf( Buf , _T("打开文件:%s\n产生错误!") , szFileName ); MessageBox( Buf , _T("错误") , MB_ICONWARNING|MB_OK ); return ; } TCHAR szPNBuf[512]={0}; TCHAR szName[512]={0}; long lLineCount = 0; //计算行数 long lNameCount = 0; //计算用户数 BOOL bShowReMobile = true; long lReMobileType = 0;; CString str; ANS_QueryFilt_Data user; #ifdef UNICODE TCHAR szTemp[512]={0}; char szTempA[512]={0}; char szPNBuf2[512]={0}; char szRecordSplit2[512]={0}; strcpy(szRecordSplit2,CAdoRecordSet::Ado_W2A(szRecordSplit,szTempA)); #endif while ( true ) { memset( szPNBuf , 0 , sizeof( szPNBuf ) ); #ifdef UNICODE if ( ReadLine( &fTalk , szRecordSplit2, szPNBuf2 , sizeof( szPNBuf2 )-5 ) ) { _tcscpy(szPNBuf,CAdoRecordSet::Ado_A2W(szPNBuf2,szTemp)); #else if ( ReadLine( &fTalk , szRecordSplit, szPNBuf , sizeof( szPNBuf )-5 ) ) { #endif ExChar( szPNBuf , _T("\r") ); ExChar( szPNBuf , _T("\n") ); ExChar( szPNBuf , szRecordSplit ); for ( i=0;i<9;i++ ) { _tcscat( szPNBuf , szFieldSplit ); } memset( &user , 0 , sizeof(user) ); // user.ulPurviewType = PURVIEWTYPE_ADDRESS; for ( i=0 ; i0) { if ( _tcslen(user.szName) <= 0 ) _stprintf( user.szName , _T("IP%d") , lNameCount ); //添加用户 lNameCount ++; _stprintf( szName , _T("现正处理->%d") , lNameCount ); m_B_Tips.SetWindowText( szName ); ANS_QueryFilt_Data * pUser = new ANS_QueryFilt_Data; *pUser = user; pUser->lType = lQueryType; pUser->lStatus=1; m_QueryFilt.AddTail( pUser ); } lLineCount ++; } else { break; } } fTalk.Close(); CDialog::OnOK(); } long DLG_QueryFilt_Inport::ReadLine(CFile *file, char *pSplit, char *szBuf, long lLen) { int i,j; int lLineCount = 0; int lSplitLen = strlen(pSplit); char c; i = 0; while ( true ) { j = file->Read( &c , 1 ); if ( j < 1 ) { szBuf[i]=0; return i; } if ( i >= lLen-1 ) { szBuf[i] = 0; return i; } szBuf[i] = c; i++; if ( !memcmp( szBuf+i-lSplitLen , pSplit , lSplitLen ) ) //换行标志 { szBuf[i] = 0; return i; } } return 0; } void DLG_QueryFilt_Inport::Close() { //清除队列中的内容 while (!m_QueryFilt.IsEmpty()) { ANS_QueryFilt_Data * pData = m_QueryFilt.GetHead(); m_QueryFilt.RemoveHead(); delete pData; } } void DLG_QueryFilt_Inport::OnSmsjsExportGetfile() { #define FILE_FILTER_TEXT \ TEXT("txt文本文件 (*.txt)\0*.txt\0")\ TEXT("Excel csv 文件 (*.csv)\0*.csv\0")\ TEXT("所有文件 (*.*)\0*.*;\0\0") TCHAR szFile[ 256 ]; TCHAR szFileB[ 256 ]; *szFileB = NULL; _stprintf( szFile , _T("*.txt") ); OPENFILENAME sOpen; sOpen.lStructSize = sizeof( sOpen ); sOpen.hwndOwner = this->m_hWnd ; sOpen.Flags = OFN_EXPLORER|OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY; sOpen.lpstrFilter = FILE_FILTER_TEXT; sOpen.lpstrDefExt = _T("txt"); sOpen.lpstrCustomFilter = NULL; sOpen.nMaxCustFilter = 0; sOpen.lpstrFile = szFile; sOpen.nMaxFile = sizeof( szFile ); sOpen.lpstrFileTitle = szFileB; sOpen.nMaxFileTitle = sizeof( szFileB ); sOpen.lpstrInitialDir = NULL; sOpen.lpstrTitle = _T("打开导入发送列表的文件"); if ( ::GetOpenFileName( &sOpen ) ) { m_E_FileName.SetWindowText(sOpen.lpstrFile); return ; } }