CorpSms/DLG_User_InportK.cpp
2025-02-27 16:58:16 +08:00

772 lines
20 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// DLG_User_InportK.cpp : implementation file
//
#include "stdafx.h"
#include "corpsms.h"
#include "DLG_User_InportK.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// DLG_User_InportK dialog
#include "MainFrm.h"
#include "FKAddress.h"
#include "DLG_User_ModifyK.h"
#include "DLG_AddWarning.h"
DLG_User_InportK::DLG_User_InportK(CWnd* pParent /*=NULL*/)
: CDialog(DLG_User_InportK::IDD, pParent)
{
//{{AFX_DATA_INIT(DLG_User_InportK)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_bInport = true;
m_pList = NULL;
m_bReMobile = false;
}
void DLG_User_InportK::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(DLG_User_InportK)
DDX_Control(pDX, IDC_USER_INPORTK_S1, m_B_Tips);
DDX_Control(pDX, IDC_USER_INPORTK_LIST, m_L_List);
DDX_Control(pDX, IDC_USER_INPORTK_FILENAME, m_E_FileName);
DDX_Control(pDX, IDC_USER_INPORTK_REMOBILE, m_B_ReMobile);
DDX_Control(pDX, IDC_USER_INPORTK_RECORD_SPLIT, m_C_RecordSplit);
DDX_Control(pDX, IDC_USER_INPORTK_FIELD_SPLIT, m_C_FieldSplit);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(DLG_User_InportK, CDialog)
//{{AFX_MSG_MAP(DLG_User_InportK)
ON_BN_CLICKED(IDC_USER_INPORTK_GETFILE, OnUserInportkGetfile)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// DLG_User_InportK message handlers
BOOL DLG_User_InportK::OnInitDialog()
{
CDialog::OnInitDialog();
if ( !m_bInport )
{
this->SetWindowText(_T("导出客户资料(*.txt , *.csv)"));
CWnd * pWnd = (CWnd*)GetDlgItem(IDOK);
pWnd->SetWindowText(_T("导 出"));
pWnd = (CWnd*)GetDlgItem(IDC_USER_INPORTK_S2);
pWnd->SetWindowText(_T("导出字段与顺序(拖动选择,打勾为导出字段)"));
pWnd = (CWnd*)GetDlgItem(IDC_USER_INPORTK_S1);
pWnd->SetWindowText(_T("导出txt/csv文件名"));
m_C_FieldSplit.EnableWindow(false);
m_C_RecordSplit.EnableWindow(false);
}
m_C_FieldSplit.SetCurSel(0);
m_C_RecordSplit.SetCurSel(0);
InitList();
if ( !m_bInport)
{
m_B_ReMobile.ShowWindow(SW_HIDE);
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void DLG_User_InportK::OnOK()
{
m_bReMobile = m_B_ReMobile.GetCheck();
BOOL b= false;
if ( m_bInport )
{
b=User_Inport();
}
else
{
b=User_Export();
}
if (b)
CDialog::OnOK();
}
void DLG_User_InportK::SetInport(CFKAddress *pFKAddress, CListCtrl *pList, BOOL bInport)
{
m_pFKAddress = pFKAddress;
m_pList = pList;
m_bInport = bInport;
m_AdoRS.SetAdoConnection( &m_pFKAddress->m_pMainFrame->m_adoConnection );
}
void DLG_User_InportK::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) );
/*
char * pItem[] =
{
"姓 名",
"车 牌",
"省 份",
"地 址",
"邮 编",
"电 话",
"手 机",
"身份证号",
"生 日",
"购车日期",
"登记日期",
"购车省份",
"购车城市",
"车 型",
"发动机号",
"底盘号",
"生产编码",
"服务站代码",
"服务站名称",
"备 注",
};
*/
TCHAR * pItem[] =
{
_T("客户姓名"),
_T("客户手机"),
_T("客户电话"),
_T("客户车牌"),
_T("客户生日"),
_T("身份证号"),
_T("省 份"),
_T("服务站代码"),
_T("服务站名称"),
_T("客户地址"),
_T("客户单位"),
_T("邮政编码"),
_T("购车日期"),
_T("登记日期"),
_T("生产日期"),
_T("车 型"),
_T("发动机号"),
_T("底盘号"),
_T("生产编码"),
_T("购车省份"),
_T("购车城市"),
_T("备 注"),
};
TCHAR Buf[256];
for ( int i = 0 ; i<22 ; 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();
}
BOOL DLG_User_InportK::User_Export()
{
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 ; i<lItemCount ; i++ )
{
if ( m_L_List.GetCheck(i) )
{
lExPortItem[lCheckCount] = m_L_List.GetItemData(i) ;
lCheckCount ++;
}
}
if ( lCheckCount <=0 )
{
if ( m_bInport )
MessageBox( _T("你必须从左边的字段列表中选择一个或多个导入字段。") , _T("选择错误") , MB_OK|MB_ICONWARNING );
else
MessageBox( _T("你必须从左边的字段列表中选择一个或多个导出字段。") , _T("选择错误") , MB_OK|MB_ICONWARNING );
return false;
}
TCHAR szFileName[512];
m_E_FileName.GetWindowText( szFileName , sizeof(szFileName) );
if ( _tcslen(AllTrim(szFileName)) <=0 )
{
if ( m_bInport )
MessageBox( _T("你必须输入导入的文件名。") , _T("错误") , MB_OK|MB_ICONWARNING );
else
MessageBox( _T("你必须输入导出的文件名。") , _T("错误") , MB_OK|MB_ICONWARNING );
m_E_FileName.SetFocus();
return false;
}
CFile fTalk;
if ( !fTalk.Open( szFileName , CFile::modeReadWrite|CFile::modeCreate ) )
{
TCHAR Buf[512];
_stprintf( Buf , _T("创建文件:%s\n产生错误!") , szFileName );
MessageBox( Buf , _T("错误") , MB_ICONWARNING|MB_OK );
return false;
}
long lAdrCount = m_pList->GetItemCount();
TCHAR Buf[1024];
TCHAR Buf2[256];
long lRecnCount= 0; //总记录数
long lFileSize = 0; //文件总字节数
long lBufLen = 0;
#ifdef UNICODE
char szTempA[4096];
#endif
CString strSelect;
if ( _tcslen(m_pFKAddress->m_szGroupID)<=0 ) //如果是根用户组为NULL
strSelect.Format( _T("select * from kaddress where GroupID is null or len(GroupID)=0 and UserType='1' ") ); //查找此组下的用户
else
strSelect.Format( _T("Select * from kaddress where GroupID='%s' AND UserType='1' ") , m_pFKAddress->m_szGroupID ); //查找此组下的用户
BOOL b = m_AdoRS.Open( strSelect );
long lCount = m_AdoRS.GetRecordCount();
if ( b && lCount )
{
COleDateTime t;
m_AdoRS.MoveFirst();
while(!m_AdoRS.IsEOF() )
{
memset(Buf , 0 , sizeof(Buf) );
for( int j = 0 ; j< lCheckCount ; j++ ) //按按所选中的字段,取通讯录内容进行保存。
{
memset(Buf2 , 0 , sizeof(Buf2) );
switch( lExPortItem[j] )
{
case 0: //姓名
m_AdoRS.GetCollect( _T("Name") , Buf2 );
break;
case 1: //手 机
m_AdoRS.GetCollect( _T("Mobile") , Buf2 );
break;
case 2: //电 话
m_AdoRS.GetCollect( _T("Tel") , Buf2 );
break;
case 3: //车 牌
m_AdoRS.GetCollect( _T("CarNum") , Buf2 );
break;
case 4: //生日
m_AdoRS.GetCollect( _T("Birthday") , t );
if ( t.GetStatus() == COleDateTime::valid )
_stprintf( Buf2 , _T("%04d-%02d-%02d") , t.GetYear(),t.GetMonth(),t.GetDay() );
else
memset(Buf2 , 0 , sizeof(Buf2));
break;
case 5: //身份证号
m_AdoRS.GetCollect( _T("SFZ") , Buf2 );
break;
case 6: //省 份
m_AdoRS.GetCollect( _T("Province") , Buf2 );
break;
case 7: //服务站代码
m_AdoRS.GetCollect( _T("FWNum") , Buf2 );
break;
case 8: //服务站名称
m_AdoRS.GetCollect( _T("FWName") , Buf2 );
break;
case 9: //地 址
m_AdoRS.GetCollect( _T("Addr") , Buf2 );
break;
case 10: //单 位
m_AdoRS.GetCollect( _T("Corp") , Buf2 );
break;
case 11: //邮 编
m_AdoRS.GetCollect( _T("Postcode") , Buf2 );
break;
case 12: //购车日期
m_AdoRS.GetCollect( _T("BuyDate") , t );
if ( t.GetStatus() == COleDateTime::valid )
_stprintf( Buf2 , _T("%04d-%02d-%02d") , t.GetYear(),t.GetMonth(),t.GetDay() );
else
memset(Buf2 , 0 , sizeof(Buf2));
break;
case 13: //登记日期
m_AdoRS.GetCollect( _T("RegDate") , t );
if ( t.GetStatus() == COleDateTime::valid )
_stprintf( Buf2 , _T("%04d-%02d-%02d") , t.GetYear(),t.GetMonth(),t.GetDay() );
else
memset(Buf2 , 0 , sizeof(Buf2));
break;
case 14: //生产日期
m_AdoRS.GetCollect( _T("SCDate") , t );
if ( t.GetStatus() == COleDateTime::valid )
_stprintf( Buf2 , _T("%04d-%02d-%02d") , t.GetYear(),t.GetMonth(),t.GetDay() );
else
memset(Buf2 , 0 , sizeof(Buf2));
break;
case 15: //车 型
m_AdoRS.GetCollect( _T("CarType") , Buf2 );
break;
case 16: //发动机号
m_AdoRS.GetCollect( _T("FDJNum") , Buf2 );
break;
case 17: //底盘号
m_AdoRS.GetCollect( _T("DPNum") , Buf2 );
break;
case 18: //生产编码
m_AdoRS.GetCollect( _T("SCNum") , Buf2 );
break;
case 19: //购车省份
m_AdoRS.GetCollect( _T("BuyProvince") , Buf2 );
break;
case 20: //购车城市
m_AdoRS.GetCollect( _T("BuyCity") , Buf2 );
break;
case 21: //备 注
m_AdoRS.GetCollect( _T("BZ") , Buf2 );
break;
}
_tcscat(Buf , Buf2 );
if ( j < lCheckCount-1 ) //最后一条不用加","号
_tcscat(Buf , _T(",") );
}
_tcscat(Buf , _T("\r\n") ); //换行
#ifdef UNICODE
CAdoRecordSet::Ado_W2A(Buf,szTempA);
lBufLen = strlen(szTempA);
fTalk.Write( szTempA , lBufLen );
#else
lBufLen = _tcslen(Buf);
fTalk.Write( Buf , lBufLen );
#endif
lRecnCount++; //取得总记录数
lFileSize = lFileSize + lBufLen ; //取得总字节数
m_AdoRS.MoveNext();
}
}
fTalk.Close();
this->EndWaitCursor();
_stprintf(Buf , _T("导出发送列表成功,具体如下:\n导出文件类型:TXT\n导出记录数:%d\n导出字节数:%d\n导出文件名:%s") , lRecnCount , lFileSize , szFileName);
MessageBox( Buf , _T("导出成功"),MB_OK|MB_ICONINFORMATION );
return true;
}
BOOL DLG_User_InportK::User_Inport()
{
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 ; i<lItemCount ; i++ )
{
if ( m_L_List.GetCheck(i) )
{
lExPortItem[lCheckCount] = m_L_List.GetItemData(i) ;
lCheckCount ++;
}
}
if ( lCheckCount <=0 )
{
if ( m_bInport )
MessageBox( _T("你必须从左边的字段列表中选择一个或多个导入字段。") , _T("选择错误") , MB_OK|MB_ICONWARNING );
else
MessageBox( _T("你必须从左边的字段列表中选择一个或多个导出字段。") , _T("选择错误") , MB_OK|MB_ICONWARNING );
return false;
}
//取分隔
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 false;
}
if ( !_tcsncmp(szRecordSplit,_T("换行"),4) )
{
_tcscpy( szRecordSplit,_T("\n") );
}
if ( _tcslen( szFieldSplit )<=0 )
{
MessageBox( _T("字段分隔不能为空,请输入!") , _T("错误") , MB_ICONWARNING );
m_C_FieldSplit.SetFocus();
return false;
}
szFieldSplit[1]=0; //字段分隔只能是一个字符
TCHAR szFileName[512];
m_E_FileName.GetWindowText( szFileName , sizeof(szFileName) );
if ( _tcslen(AllTrim(szFileName)) <=0 )
{
if ( m_bInport )
MessageBox( _T("你必须输入导入的文件名。") , _T("错误") , MB_OK|MB_ICONWARNING );
else
MessageBox( _T("你必须输入导出的文件名。") , _T("错误") , MB_OK|MB_ICONWARNING );
m_E_FileName.SetFocus();
return false;
}
//打开文件 
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 false;
}
TCHAR szPNBuf[512];
TCHAR szName[512];
long lLineCount = 0; //计算行数
long lNameCount = 0; //计算用户数
BOOL bShowReMobile = true;
long lReMobileType = 0;;
CString str;
KAddress 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<25;i++ )
{
_tcscat( szPNBuf , szFieldSplit );
}
memset( &user , 0 , sizeof(user) );
_tcscpy( user.szUserType,_T("1") ); //用户类型
_tcscpy( user.szGroupID , m_pFKAddress->m_szGroupID); //用户组
for ( i=0 ; i<lCheckCount ; i++ )
{
memset(szName , 0 , sizeof(szName) );
GetReqMess( szPNBuf , szName , i , szFieldSplit[0] );
AllTrim(szName);
ExChar(szName,_T("\r"));
ExChar(szName,_T("\n"));
ExChar(szName,_T("\t"));
switch (lExPortItem[i])
{
case 0: //姓名
BreakChar(szName,sizeof(user.szName)-1);
_tcscpy(user.szName , szName );
break;
case 1: //手 机
BreakChar(szName,sizeof(user.szMobile)-1);
_tcscpy(user.szMobile , szName );
break;
case 2: //电 话
BreakChar(szName,sizeof(user.szTel)-1);
_tcscpy(user.szTel , szName );
break;
case 3: //车牌
BreakChar(szName,sizeof(user.szCarNum)-1);
_tcscpy(user.szCarNum , szName );
break;
case 4: //生日
try
{
COleDateTime abc;
CString str = szName;
str.Replace( _T(".") , _T("-") );
BOOL btime = abc.ParseDateTime(str,VAR_DATEVALUEONLY);
if ( abc.GetStatus() == COleDateTime::valid )
{
abc.GetAsSystemTime(user.tBirthday);
}
}
catch(...)
{
memset(&user.tBirthday,0,sizeof(user.tBirthday));
}
break;
case 5: //身份证号
BreakChar(szName,sizeof(user.szSFZ)-1);
_tcscpy(user.szSFZ , szName );
break;
case 6: //省 份
BreakChar(szName,sizeof(user.szProvince)-1);
_tcscpy(user.szProvince , szName );
break;
case 7: //服务站代码
BreakChar(szName,sizeof(user.szFWNum)-1);
_tcscpy( user.szFWNum , szName );
break;
case 8: //服务站名称
BreakChar(szName,sizeof(user.szFWName)-1);
_tcscpy( user.szFWName , szName );
break;
case 9: //地 址
BreakChar(szName,sizeof(user.szAddr)-1);
_tcscpy(user.szAddr , szName );
break;
case 10: //单 位
BreakChar(szName,sizeof(user.szCorp)-1);
_tcscpy(user.szCorp , szName );
break;
case 11: //邮 编
BreakChar(szName,sizeof(user.szPostcode)-1);
_tcscpy(user.szPostcode , szName );
break;
case 12: //购车日期
try
{
COleDateTime abc;
CString str = szName;
str.Replace( _T(".") , _T("-") );
BOOL btime = abc.ParseDateTime(str,VAR_DATEVALUEONLY);
if ( abc.GetStatus() == COleDateTime::valid )
{
abc.GetAsSystemTime(user.tBuyDate);
}
}
catch(...)
{
memset(&user.tBuyDate,0,sizeof(user.tBuyDate));
}
break;
case 13: //登记日期
try
{
COleDateTime abc;
CString str = szName;
str.Replace( _T(".") , _T("-") );
BOOL btime = abc.ParseDateTime(str,VAR_DATEVALUEONLY);
if ( abc.GetStatus() == COleDateTime::valid )
{
abc.GetAsSystemTime(user.tRegDate);
}
}
catch(...)
{
memset(&user.tRegDate,0,sizeof(user.tRegDate));
}
break;
case 14: //生产日期
try
{
COleDateTime abc;
CString str = szName;
str.Replace( _T(".") , _T("-") );
BOOL btime = abc.ParseDateTime(str,VAR_DATEVALUEONLY);
if ( abc.GetStatus() == COleDateTime::valid )
{
abc.GetAsSystemTime(user.tSCDate);
}
}
catch(...)
{
memset(&user.tSCDate,0,sizeof(user.tSCDate));
}
break;
case 15: //车 型
BreakChar(szName,sizeof(user.szCarType)-1);
_tcscpy( user.szCarType , szName );
break;
case 16: //发动机号
BreakChar(szName,sizeof(user.szFDJNum)-1);
_tcscpy( user.szFDJNum , szName );
break;
case 17: //底盘号
BreakChar(szName,sizeof(user.szDPNum)-1);
_tcscpy( user.szDPNum , szName );
break;
case 18: //生产编码
BreakChar(szName,sizeof(user.szSCNum)-1);
_tcscpy( user.szSCNum , szName );
break;
case 19: //购车省份
BreakChar(szName,sizeof(user.szBuyProvince)-1);
_tcscpy( user.szBuyProvince , szName );
break;
case 20: //购车城市
BreakChar(szName,sizeof(user.szBuyCity)-1);
_tcscpy( user.szBuyCity , szName );
break;
case 21: //备 注
BreakChar(szName,sizeof(user.szBZ)-1);
_tcscpy( user.szBZ , szName );
break;
}
}
if (_tcslen(user.szName) >0 || _tcslen(user.szTel) >0 ||
_tcslen(user.szMobile) >0)
{
if ( _tcslen(user.szName) <= 0 )
_stprintf( user.szName , _T("IP%d") , lNameCount );
//添加用户
_stprintf( szName , _T("现正处理->%d") , lLineCount );
m_B_Tips.SetWindowText( szName );
//先检测号码是否存在此组时,如果存在,提示
BOOL bAdd = true;
if ( m_bReMobile && _tcslen( user.szMobile ) > 0 )
{
if ( _tcslen(m_pFKAddress->m_szGroupID)<=0)
str.Format( _T("select * from kaddress where Mobile='%s' and (GroupID is null or len(GroupID)=0)") , user.szMobile );
else
str.Format( _T("select * from kaddress where Mobile='%s' and GroupID='%s'") , user.szMobile,m_pFKAddress->m_szGroupID );
if ( m_AdoRS.Open(str) && m_AdoRS.GetRecordCount()>0 )
{
//找到记录,证明有重复的号码
m_AdoRS.Close();
if ( bShowReMobile )
{
str.Format( _T("%s,%s") , user.szName , user.szMobile );
DLG_AddWarning dlg(str,this); //提示重复号码
dlg.DoModal();
bShowReMobile = dlg.m_bShowReMobile;
lReMobileType = dlg.m_lReMobileType;
}
if ( lReMobileType == 0 ) //跳过
{
bAdd = false;
}
}
}
if ( bAdd )
{
lNameCount ++;
m_pFKAddress->AddUser(user,false);
}
}
lLineCount ++;
}
else
{
break;
}
}
fTalk.Close();
_stprintf(szName , _T("导入发送列表成功,具体如下:\n导入文件类型:TXT\n导入记录数:%d\n文件总行数:%d\n导入文件名:%s") , lNameCount , lLineCount, szFileName);
MessageBox( szName , _T("导入成功"),MB_OK|MB_ICONINFORMATION );
m_pFKAddress->On_User_Refresh();
return true;
}
long DLG_User_InportK::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_User_InportK::OnUserInportkGetfile()
{
#define FILE_FILTER_TEXT \
TEXT("txt文本文件 (*.txt)\0*.txt\0")\
TEXT("Excel csv 文件 (*.csv)\0*.csv\0")\
TEXT("所有文件 (*.*)\0*.*;\0\0")
if ( m_bInport )
{
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 ;
}
}
else
{
TCHAR szFile[ 256 ];
TCHAR szFileB[ 256 ];
*szFileB = NULL;
_stprintf( szFile , _T("Address") );
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 ( ::GetSaveFileName( &sOpen ) )
{
m_E_FileName.SetWindowText(sOpen.lpstrFile);
}
}
}