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

📄 tmdialproc.cpp

📁 单路开发文档和源代码例子12-13 VC源码 自动拨号
💻 CPP
字号:
#include "stdafx.h"
#include "TmDialProc.h"
#include <windows.h>


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


CTmDialProc::CTmDialProc()
{

	m_nDialTimer = NULL;
}

BOOL CTmDialProc::InitWindow()
{
	CString szClassName = AfxRegisterWndClass(CS_CLASSDC|CS_SAVEBITS,
														  LoadCursor(NULL, IDC_ARROW));
	BOOL Ret=Create(szClassName,_T(""),0,CRect(0,0,1,1),AfxGetMainWnd(),9999,NULL);
	return TRUE;
}

CTmDialProc::~CTmDialProc()
{
}

BEGIN_MESSAGE_MAP(CTmDialProc, CWnd)
	//{{AFX_MSG_MAP(CTmDialProc)
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


BOOL CTmDialProc::StopTimer()
{
	if(m_nDialTimer)
	{
		KillTimer(m_nDialTimer);
		m_nDialTimer= NULL;
		return TRUE;
	}else
		return FALSE;
}

void CTmDialProc::OnTimer(UINT nIDEvent) 
{
	if(nIDEvent == m_nDialTimer)
	{
		//检测到拨号音或者超时
		if(TV_CheckDialSignal() || m_iCheckDialSigNum > 5)//超过5次,也就6*500=3000(3秒)
		{
			StopTimer();
			if(TV_StartDial((LPTSTR)(LPCTSTR)m_strCode,FALSE) <= 0)//
			{
				StopDial();
				PostMessage(TD_CALLBACK_MESSAGE,0x1,0);//发生错误,回调
			}
		}
		m_iCheckDialSigNum++;		
	}

	CWnd::OnTimer(nIDEvent);
}

BOOL CTmDialProc::StartDial(const CString &strExterCode,const CString &strCode)
{
	if(strCode.IsEmpty())
	{
		PostMessage(TD_CALLBACK_MESSAGE,0x1,0);//发生错误,回调
		return TRUE;
	}
	StopDial();
	m_strCode=strExterCode;//实际需要拨的号
	if(!m_strCode.IsEmpty() && m_strCode.Find(",") < 0)
		m_strCode += ",";//自动加一秒延迟

	m_strCode+=strCode;

	m_iCheckDialSigNum = 0;//设置检测拨号音当前次数为0

	TV_OffHookCtrl();//摘机,等待拨号音

#ifdef _DEBUG
	TV_OpenDoPlay();//测试时打开喇叭,听拨号音
#endif

	m_nDialTimer = SetTimer(200,500,NULL);
	return TRUE;
}

BOOL CTmDialProc::StopDial()
{
	StopTimer();
	TV_StopDial();
	TV_HangUpCtrl();
	return TRUE;
}

⌨️ 快捷键说明

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