⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ipcountdlg.cpp

📁 IP电话计费管理系统本地版
💻 CPP
📖 第 1 页 / 共 5 页
字号:
/****************************************************************************

    编写日期:  2002-07-28
    代码编写:  by xiaolz
    代码功能:  主程序,打开串口,提取DTMF信号,数据库的读写

****************************************************************************/

//v1.0版 增加hotline 以控制线路
//v1.10版 修改全开按钮bug,修改数字发往错误线路的BUGS
//12.08 2002-09-13 修改费率初始代码
//v12.10 修改计费的一些代码
//v12.11修改打印部分功能,修改附加费率
//v12.12增加优惠时段代码,修改计费算法,完成自动配置ODBC代码
//v12.03.01 等同于v12.12b
//12.03.02 为程序添加桌面快捷方式修改代码
//v12.03.03 修改用户管理,不能删除最后一个超级用户,修改写注册表DriverId代码,从字符串值变为DWORD值,修改原来所有float 型为double
//v12.03.04 将PERSON_INFO的值由20变为30
//v12.03.05 修改计费的时候从控件中读费率为直接读保存的结果strGFeeRate[i],修改因为锁定无效导致的bugs
//v12.03.05 修改收到错号时,将该号由0变为7,以使不出现国内变国际的情况.
//v12.03.06 修改统计时总个数改为总基本话费
//v12.03.07 修改写数据库时立即写入为PostMessage WM_ADD_DB消息
//v12.03.08 修改结算时有时数据库不正确的BUG
//v12.03.09 每次通话增加一定的时长
//v12.03.10 计费从01开始
//v12.04.10 修改1分钟时间可调
#include "stdafx.h"
#include "IPCount.h"
#include "IPCountDlg.h"
#include "RegConf.h"
#include "myscrollview.h"
#include "splash.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define PERSON_INFO 30
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CIPCountDlg dialog

CIPCountDlg::CIPCountDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CIPCountDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CIPCountDlg)
	m_strShow = _T("");
	m_strName = _T("");
	m_strPswd = _T("");
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	AfxMessageBox("初始化构造函数");
	sdlg=new CSaleMang();
	mdlg=new CSysSetUp();
	cdlg=new CChgPswd();
//	fdlg=new CFeeRate();

	ComMsg=new CComReceive;

	bFoundChar=FALSE;

	strSaveInfo="";

	for(int k=0;k<16;k++)
	     nFlagLine[k]=7;//锁定
	for(int d=0;d<16;d++)
	{
		bClosedLine[d]=TRUE;
		bTalking[d]=FALSE;
		bClosed[d]=FALSE;
		strTempNum[d]="";
	    strStreamNum[d]="";
		strAreaName[d]="";
		m_CalledTempNum[d]="";
		m_szStartTime[d]="";
		m_CalledNum[d]=-1;
		
		////////////////////////////////////////优惠时段变量
		strCutRate[d]="";
		strLowCutRate[d]="";
		strLowestCutRate[d]="";
		nCutLevelFlag[d]=0;
		strStartCutYear[d]="";
		strEndCutYear[d]="";
		strStartCutMon[d]="";
		strEndCutMon[d]="";
		strStartCutDay[d]="";
		strEndCutDay[d]="";
        strStartCutHour[d]="";
		strEndCutHour[d]="";
		strStartCutWeek[d]="";
		strEndCutWeek[d]="";

		/////////////////////////////////////////////////////
		m_RecodeInfo[d].m_Line = "";
		m_RecodeInfo[d].m_CalledNum = "";
		m_RecodeInfo[d].m_RTLen = "";
		m_RecodeInfo[d].m_Rate = "";
		m_RecodeInfo[d].m_CDay = "";
		m_RecodeInfo[d].m_RCount = "";
	    m_RecodeInfo[d].m_StreamNum = "";
		m_RecodeInfo[d].m_RAreaName = "";
		m_RecodeInfo[d].m_COper = "";
		m_RecodeInfo[d].m_ORate = "";
		m_RecodeInfo[d].m_PrePay = "";
		m_RecodeInfo[d].m_Remain = "";

	}
	nLine=0;
	strFlag="";
	bReboot=FALSE;
	nBCount=0;
	nDCount=0;
	bStatics=FALSE;
	bRate=FALSE;
	bSystem=FALSE;
	bOpenSale=FALSE;
	strLevel="";
	nFlagLevel=0;
	bChgAndCount=FALSE;
    m_TelIndex="";

	nPrintAtOnce=0;//不是立即打印
	nOperateLines = 0;
	for(int nFeeInit=0;nFeeInit<100;nFeeInit++)
	{
		strFeeType[nFeeInit]="";
		strFeeMoney[nFeeInit]="";
		strOFeeMoney[nFeeInit]="";
		strOFeeTimeLen[nFeeInit]="";
		strStartTLen[nFeeInit]="";
	}
	nFeeNum=0;
	bOpenStatics=FALSE;//判断话费统计对话框是否打开
    nGetSaleCutFlag=0;//判断是否启用优惠时段计费
	nPrintMode=0;//打印方式
	strUpSpace="";
	#ifdef IPCOUNT_FOR_FS 
	    m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON5);
	#else
		m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON13);
    #endif

    for (int nInitCom=0;nInitCom <nMaxPort;nInitCom++)
	{
		bOpenCom[nInitCom] = FALSE;
		m_strRXData[nInitCom] = "";
	}
	hThread = NULL;

	OneSecondOfMin = 60;
	AfxMessageBox("初始化构造函数结束");
}

void CIPCountDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CIPCountDlg)
	DDX_Control(pDX, IDC_BUTTON_TITLE, m_BTitle);
	DDX_Control(pDX, IDC_BUTTON_VER, m_BVer);
	DDX_Control(pDX, IDCANCEL, m_BExit);
	DDX_Control(pDX, IDC_BUTTON_STATICS, m_BStatics);
	DDX_Control(pDX, IDC_BUTTON_MODPSWD, m_BModPswd);
	DDX_Control(pDX, IDC_BUTTON_LOGIN, m_BLogin);
	DDX_Control(pDX, IDC_BUTTON_MANG, m_BMang);
	DDX_Control(pDX, IDC_BUTTON_RATE, m_BRate);
	DDX_Control(pDX, IDC_BUTTON_SETUP, m_BSetUp);
	DDX_Control(pDX, IDC_EDIT_SHOW, m_eShow);
	DDX_Control(pDX, IDC_MSCOMM1, m_ctrlComm);
	DDX_Text(pDX, IDC_EDIT_SHOW, m_strShow);
	DDX_Text(pDX, IDC_EDIT_NAME, m_strName);
	DDX_Text(pDX, IDC_EDIT_PSWD, m_strPswd);
	DDX_Control(pDX, IDC_MSCOMM2, m_ctrlComm2);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CIPCountDlg, CDialog)
	//{{AFX_MSG_MAP(CIPCountDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_BUTTON_SETUP, OnSysSetup)
	ON_BN_CLICKED(IDC_BUTTON_MANG, OnSaleMang)
	ON_BN_CLICKED(IDC_BUTTON_STATICS, OnStatics)
	ON_BN_CLICKED(IDC_BUTTON_RATE, OnRate)
	ON_BN_CLICKED(IDC_BUTTON_MODPSWD, OnModpswd)
	ON_BN_CLICKED(IDC_BUTTON_VER, OnVer)
	ON_BN_CLICKED(IDC_BUTTON_LOGIN, OnLogin)
	ON_WM_TIMER()
	ON_WM_CTLCOLOR()
	ON_BN_CLICKED(IDC_BUTTON_TITLE, OnTitle)
	ON_WM_CREATE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CIPCountDlg message handlers

BOOL CIPCountDlg::OnInitDialog()
{
	AfxMessageBox("oninitdialogStart1");
	CDialog::OnInitDialog();
    AfxMessageBox("oninitdialogStart2");
    CRect rect;
	GetWindowRect(&rect);
	CRuntimeClass *pViewClass=RUNTIME_CLASS(CMyScrollView);
	CCreateContext *pContext;
	pContext=new CCreateContext;
	pContext->m_pCurrentDoc=NULL;
	pContext->m_pCurrentFrame=NULL;
	pContext->m_pLastView=NULL;
	pContext->m_pNewDocTemplate=NULL;
	pContext->m_pNewViewClass=pViewClass;
	CWnd *pWnd=NULL;
	pWnd=DYNAMIC_DOWNCAST(CWnd,pViewClass->CreateObject());
	pWnd->Create(NULL,NULL,AFX_WS_DEFAULT_VIEW,CRect(200,200,200,200),this,0,pContext);
	delete pContext;
	CMyScrollView *pScrollView=DYNAMIC_DOWNCAST(CMyScrollView,pWnd);
    pScrollView->SetScrollSizes(MM_TEXT,CSize(rect.right-rect.left-20,rect.bottom-rect.top-100));
	pScrollView->MoveWindow(rect.left,rect.top,rect.right-rect.left-20,rect.bottom-rect.top-100,TRUE);
	// Add "About..." menu item to system menu.
	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);
    
	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);
	AfxMessageBox("oninitdialog");
	// Set small icon
	/*if(!bIsValid())//检测用户是否合法
	{
		EndDialog(0);
	}*/
     //dlg.DoModal();
    //////////////////////////////////////////////////////////////////////
     OSVERSIONINFO osvi; 
     memset(&osvi, 0, sizeof(OSVERSIONINFO)); 
     osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO); 
     GetVersionEx (&osvi); 
      
//     CString s; 
//     s.Format("你 的 Windows版 本 为 : %d.%d", osvi.dwMajorVersion, osvi.dwMinorVersion); 

	//获得文件的当前路径
	TCHAR pFileName[MAX_PATH];
	GetModuleFileName(NULL,pFileName,MAX_PATH);
	if(strchr(pFileName,'\\'))
		*strrchr(pFileName,'\\')='\0';
    strcat(pFileName,"\\IPCount.mdb");

	//////////////////////////////////////////////////////////////////////
    if(mdlg->GetODBCFlag()==0)
	{
		//增加自动配置ODBC代码
		CString strSpecChar='\\';
		CString strMajVer,strMinVer;
		strMajVer.Format("%d",osvi.dwMajorVersion);
		strMinVer.Format("%d",osvi.dwMinorVersion);
		if(atoi(strMajVer)==4)//windows me and 98
		{
		    mdlg->SetODBCDataSources("Microsoft Access Driver (*.mdb)");
		    mdlg->SetODBCDriver("C:"+strSpecChar+"windows"+strSpecChar+"System"+strSpecChar+"odbcjt32.dll");
		}
		else
		{
		    mdlg->SetODBCDataSources("Driver do Microsoft Access (*.mdb)");
		    mdlg->SetODBCDriver("C:"+strSpecChar+"WINNT"+strSpecChar+"System32"+strSpecChar+"odbcjt32.dll");
		}
		mdlg->SetODBCDBQ(pFileName);
		mdlg->SetODBCDriverId(25);//设置DWORD值
		mdlg->SetODBCJet("Yes");
		mdlg->SetODBCFlag(1);
	    //初始设置代码
	    mdlg->SetRadio(2);
		mdlg->SetPrintOneFlag(1);
		mdlg->SetUpSpace("57");
	}
//互斥代码
/************************************************************/    
    CWnd *hWndIP;
	HANDLE hMutex;
    hWndIP=CWnd::FindWindow("#32770","LCT IPCount V12.03.11");
    //是该程序只能运行一次
    hMutex = CreateMutex(NULL, FALSE,"IPCount");
    DWORD dw=GetLastError();//获得错误,退出程序

  	/*if(dw==ERROR_ALREADY_EXISTS)
	{
		//加入处理代码,显示窗口
        hWndIP->ShowWindow(SW_SHOW);
		hWndIP->SetForegroundWindow();
        ::ExitProcess(dw);
		  
	}
	*/
	this->SetWindowText("LCT IPCount V12.03.11");
/*************************************************************/


	char InBuf[80];
	CString sCommon = "";
    GetPrivateProfileString("IPCount::Common", "Lines", "8", InBuf, 80, GetCurrentPath("IPCount.ini"));
    sCommon = InBuf; 
	nOperateLines = atoi(sCommon);

    GetPrivateProfileString("IPCount::Common", "GW1", "100", InBuf, 80, GetCurrentPath("IPCount.ini"));
    sCommon = InBuf;   
	nGwCom[0] = atoi(sCommon);
	if (nOperateLines > 8)
	{
		GetPrivateProfileString("IPCount::Common", "GW2", "100", InBuf, 80, GetCurrentPath("IPCount.ini"));
		sCommon = InBuf;
		nGwCom[1] = atoi(sCommon);
	}
	else
		nGwCom[1] = 100;

	for (int i=0; i<nMaxPort; i++)
	{
		if (nGwCom[i]<100)
		{
			bOpenCom[i] = InitCom(i+1, nGwCom[i]);
			if (bOpenCom[i])
			    SendData("0d", nGwCom[i]);
		}
	}

    GetPrivateProfileString("IPCount::Common", "SOM", "60", InBuf, 80, GetCurrentPath("IPCount.ini"));
    sCommon = InBuf;   
	
	OneSecondOfMin = atoi(sCommon);
	//确保可调的时间在45秒至60秒之间
    if (OneSecondOfMin < 45)
        OneSecondOfMin = 45;

	if (OneSecondOfMin > 60)
		OneSecondOfMin = 60;

	// TODO: Add extra initialization here
	CFont *m_font=new CFont;
    m_font->CreateFont(46,0,0,0,FW_HEAVY,FALSE,FALSE,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH&FF_ROMAN,"Arial");
	m_eShow.SetFont(m_font,TRUE);
/////////////////////////////给按钮加图标////////////////////////////////////
	//登陆按钮图标
	m_BLogin.ShowWindow(SW_SHOW);
    m_BLogin.SetIcon(IDI_ICON_LOGIN,22,22);
	m_BLogin.SetImageOffset(12);
	m_BLogin.SetTextOffset(-10);
    //退出按钮图标
	m_BExit.SetIcon(IDI_ICON_EXIT,38,38);
	m_BExit.SetImageOffset(5);
	m_BExit.SetTextOffset(-18);
    //修改密码按钮图标
	m_BModPswd.SetIcon(IDI_ICON_MOD,20,20);
	m_BModPswd.SetImageOffset(5);
	m_BModPswd.SetTextOffset(-3);
    //版本信息按钮图标
	m_BVer.SetIcon(IDI_ICON_VER,34,34);
	m_BVer.SetImageOffset(0);
	m_BVer.SetTextOffset(-10);
    //系统设置按钮图标
	m_BSetUp.SetIcon(IDI_ICON_SETUP,25,25);
	m_BSetUp.SetImageOffset(5);
	m_BSetUp.SetTextOffset(-10);
    //费率管理按钮图标
	m_BRate.SetIcon(IDI_ICON_RATE,18,25);
	m_BRate.SetImageOffset(8);
	m_BRate.SetTextOffset(2);
    //话费统计按钮图标
	m_BStatics.SetIcon(IDI_ICON_STATICS,18,18);
	m_BStatics.SetImageOffset(8);
	m_BStatics.SetTextOffset(5);
    //营业管理按钮图标
	m_BMang.SetIcon(IDI_ICON_MANG,20,20);
	m_BMang.SetImageOffset(8);
	m_BMang.SetTextOffset(0);

////////////////////////////////////////////////////////////////////////////
//	m_bkbrush.CreateSolidBrush(RGB(20,110,165));
	char szGetInfo[50];
	memset(szGetInfo,0,50);
	CFile pFile;
	//获得文件的当前路径
	TCHAR pTitleFileName[MAX_PATH];
	GetModuleFileName(NULL,pTitleFileName,MAX_PATH);
	if(strchr(pTitleFileName,'\\'))
		*strrchr(pTitleFileName,'\\')='\0';
    strcat(pTitleFileName,"\\Title.DAT");
	if (pFile.Open(pTitleFileName, CFile::modeRead))
	{
		pFile.Read(szGetInfo,50);
		pFile.Close();
	}
    
 	m_strShow=szGetInfo;//("        世纪网通营业厅计费系统");
	m_strShow="       "+m_strShow;
	UpdateData(FALSE);
	AfxMessageBox("oninitdialogEnd");
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CIPCountDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -