📄 faxmachinedlg.cpp
字号:
case WM_FAXPROCESSPAGEDATA:
{
m_Status = "正发送传真页……";
switch(lParam)
{
case D1DMR:
{
if(m_bEcmFlag)
m_Status += "(ECM MH)……";
else
m_Status += "(1DMH)……";
break;
}
case D2DMR:
{
if(m_bEcmFlag)
m_Status += "(ECM 2DMR)……";
else
m_Status += "(2DMR)……";
break;
}
case D2DMMR:
{
if(m_bEcmFlag)
m_Status += "(ECM MMR)……";
else
m_Status += "(2DMMR)……";
break;
}
}
}
break;
default:
;
}
this->UpdateData(false);
}
else
{
//当前是接收传真操作
this->UpdateData(FALSE);
this->UpdateData(TRUE);
static unsigned long faxdata = 0 ;
switch(wParam)
{
case WM_FAXANI:
{
m_CallerNo = (char*)lParam ;
m_Status = "呼叫来自" + m_CallerNo ;
this->UpdateData(FALSE);
break;
}
case WM_FAXMONITORCLOSE:
{
m_Status = "停止监听……";
break;
}
case WM_FAXMONITORSTART:
{
m_Status = "等待呼叫……";
m_CallerNo="";
break;
}
case WM_FAXUSERCANCE:
{
m_Status = "用户取消接收传真……";
break;
}
case WM_FAXMISSIONINOVER:
{
m_bFaxing = false ;
if(!m_AutoReply)
{
ShutdownTAPI();
}
else
{
lineDrop(g_hCall , NULL, 0);
}
KillTimer(100);
this->GetDlgItem(IDC_RECEIVEFAX)->EnableWindow(true);
this->GetDlgItem(IDC_ABORT)->EnableWindow(false);
this->GetDlgItem(IDC_EXIT)->EnableWindow(true);
if (lParam==0)
m_Status = "传真接收成功!";
else if(lParam==888)
m_Status = "传真接收失败(因用户取消)。";
else
m_Status = "传真接收失败!";
if(m_AutoReply && m_PortType!=0)
{
SmartFaxMonitorPort(&g_hFax,m_PortType,GetSafeHwnd(),WM_SMARTFAX);
}
break;
}
case WM_FAXCHANGESTATE:
{
switch(lParam)
{
case FAXINIT:
{
m_nTimes = 0 ;
SetTimer(100,1000, 0);
faxdata = 0;
m_Status = "初始化设备。";
m_Remote="";
m_CallerNo="";
m_ActualSpeed=("00 bps");
m_Data="0 K";
this->GetDlgItem(IDC_RECEIVEFAX)->EnableWindow(false);
this->GetDlgItem(IDC_ABORT)->EnableWindow(true);
this->GetDlgItem(IDC_EXIT)->EnableWindow(false);
break;
}
case DIALFAX:
{
m_Status = "拨号……";
break;
}
case ANSWER:
{
m_Status = "应答……";
break;
}
case NEGOTIATION:
{
m_Status = "协商版本号……";
break;
}
case TRAINING:
{
m_Status = "训练……";
break;
}
}
break;
}
case WM_FAXSETCIS:
{
m_Remote.Format("%s",(char*)lParam );
m_Remote.TrimLeft(" ");
m_Remote.TrimRight(" ");
break;
}
case WM_FAXRECVPAGEDATA:
{
faxdata+=(unsigned long)lParam;
m_Data.Format("%dK",faxdata/1024);
break;
}
case WM_ACCEPTPAGE:
{
m_Status = "接受页……";
break;
}
case WM_REJECTPAGE:
{
m_Status = "弹出页……";
break;
}
case WM_FAXSPEED:
{
m_ActualSpeed.Format("%d%s",lParam,"00 bps");
break;
}
case WM_FAXPAGE:
{
m_nPage = (int)lParam;
m_Page.Format("%d",m_nPage);
break;
}
case WM_FAXECM:
{
m_bEcmFlag = lParam == 0 ? false : true ;
break;
}
case WM_FAXRING:
{
int nRingTimes = (int)lParam ;
if(m_CallerNo.GetLength())
{
m_Status = "呼叫来自" + m_CallerNo ;
}
else
{
m_Status = "无名呼叫……";
}
TRACE(m_Status);
this->UpdateData(false);
if(nRingTimes >= 2 )
{
if(m_PortType==0 )
RecvFaxInTapi();
else
OnReceivefax();
TRACE("应答呼叫...\n");
}
break;
}
case WM_FAXPROCESSPAGEDATA:
{
m_Status = "正在接收传真页。";
switch(lParam)
{
case D1DMR:
{
m_Status += "(1DMH)……";
break;
}
case D2DMR:
{
m_Status += "(2DMR)……";
break;
}
case D2DMMR:
{
if(m_bEcmFlag)
{
m_Status += "(ECM MMR)……";
}
else
{
m_Status += "(2DMMR)……";
}
break;
}
}
break;
}
}
this->UpdateData(false);
}
}
void CFaxMachineDlg::OnExit()
{
// TODO: Add your control notification handler code here
this->EndDialog(0);
}
void CFaxMachineDlg::OnRadioSend()
{
// TODO: Add your control notification handler code here
CWnd *myWnd;
myWnd=this->GetDlgItem(IDC_HIGH);
myWnd->EnableWindow(true);
myWnd=this->GetDlgItem(IDC_NORMAL);
myWnd->EnableWindow(true);
myWnd=this->GetDlgItem(IDC_STATIC_RESOLUTION);
myWnd->EnableWindow(true);
myWnd=this->GetDlgItem(IDC_AUTOREPLY);
myWnd->EnableWindow(false);
myWnd=this->GetDlgItem(IDC_STATIC_PHONE);
myWnd->EnableWindow(true);
myWnd=this->GetDlgItem(IDC_PHONE);
myWnd->EnableWindow(true);
myWnd=this->GetDlgItem(IDC_STATIC_FROM);
myWnd->EnableWindow(true);
myWnd=this->GetDlgItem(IDC_STATIC_TO);
myWnd->EnableWindow(true);
myWnd=this->GetDlgItem(IDC_FROM);
myWnd->EnableWindow(true);
myWnd=this->GetDlgItem(IDC_TO);
myWnd->EnableWindow(true);
myWnd=this->GetDlgItem(IDC_FAXHEAD);
myWnd->EnableWindow(true);
myWnd=this->GetDlgItem(IDC_STATIC_DATA);
myWnd->SetWindowText("发送数据:");
myWnd=this->GetDlgItem(IDC_FAXHEAD);
myWnd->EnableWindow(true);
myWnd=this->GetDlgItem(IDC_STATIC_CALLERNO);
myWnd->EnableWindow(false);
m_ReceiveFax.EnableWindow(false);
m_SendFax.EnableWindow(true);
bSendNotRcv=true;
UpdateData(true);
ShutdownTAPI();
}
void CFaxMachineDlg::OnRadioRcv()
{
// TODO: Add your control notification handler code here
CWnd *myWnd;
myWnd=this->GetDlgItem(IDC_HIGH);
myWnd->EnableWindow(false);
myWnd=this->GetDlgItem(IDC_NORMAL);
myWnd->EnableWindow(false);
myWnd=this->GetDlgItem(IDC_STATIC_RESOLUTION);
myWnd->EnableWindow(false);
myWnd=this->GetDlgItem(IDC_AUTOREPLY);
myWnd->EnableWindow(true);
myWnd=this->GetDlgItem(IDC_STATIC_PHONE);
myWnd->EnableWindow(false);
myWnd=this->GetDlgItem(IDC_PHONE);
myWnd->EnableWindow(false);
myWnd=this->GetDlgItem(IDC_STATIC_FROM);
myWnd->EnableWindow(false);
myWnd=this->GetDlgItem(IDC_STATIC_TO);
myWnd->EnableWindow(false);
myWnd=this->GetDlgItem(IDC_FROM);
myWnd->EnableWindow(false);
myWnd=this->GetDlgItem(IDC_TO);
myWnd->EnableWindow(false);
myWnd=this->GetDlgItem(IDC_FAXHEAD);
myWnd->EnableWindow(false);
myWnd=this->GetDlgItem(IDC_STATIC_DATA);
myWnd->SetWindowText("接收数据:");
myWnd=this->GetDlgItem(IDC_STATIC_CALLERNO);
myWnd->EnableWindow(true);
m_SendFax.EnableWindow(false);
m_ReceiveFax.EnableWindow(true);
bSendNotRcv=false;
UpdateData(true);
ShutdownTAPI();
OnAutoReply();
/*if(m_AutoReply)
{
if(!InitializeTAPI(0))
{
if(g_bInitializing)
{
ShutdownTAPI();
}
AfxMessageBox("InitializeTAPI fail ... \n");
}
}*/
}
void CFaxMachineDlg::OnAbort()
{
// TODO: Add your control notification handler code here
AbortPort(&g_hFax);
}
void CFaxMachineDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if(nIDEvent == 100 )
{
CTimeSpan ts(0,0,0,m_nTimes++);
m_Time.Format("%01d:%01d:%02d",ts.GetHours(),ts.GetMinutes(),ts.GetSeconds());
this->UpdateData(false);
}
CDialog::OnTimer(nIDEvent);
}
void CFaxMachineDlg::OnFaxhead()
{
// TODO: Add your control notification handler code here
BOOL fEnable ;
this->UpdateData();
fEnable = m_FaxHead ;
GetDlgItem(IDC_FROM)->EnableWindow(fEnable);
GetDlgItem(IDC_TO)->EnableWindow(fEnable);
GetDlgItem(IDC_STATIC_FROM)->EnableWindow(fEnable);
GetDlgItem(IDC_STATIC_TO)->EnableWindow(fEnable);
}
void CFaxMachineDlg::OnReceivefax()
{
// TODO: Add your control notification handler code here
m_Time="";
this->UpdateData(TRUE);
if(m_PortType==0) //通过Tapi接收
{
if(m_AutoReply)
{
InitFaxTapiCall(g_hLine,g_hCall);
}
else
{
int nSel = m_ModemList.GetCurSel();
DWORD dwDevice = m_ModemList.GetItemData(nSel);
if(dwDevice >=0 )
{
InitializeTAPI(dwDevice);
InitFaxTapiCall(g_hLine,g_hCall);
}
}
return ;
}
else //通过Com端口接收
{
RecvFaxInComPort();
}
}
bool CFaxMachineDlg::RecvFaxInComPort()
{
SFaxParam *FaxParam =(SFaxParam *) new SFaxParam;
FaxParam->hFax = &g_hFax;
FaxParam->Hwnd = this->GetSafeHwnd();
FaxParam->Msg = WM_SMARTFAX ;
FaxParam->nComPort = m_PortType;
FaxParam->Speed = GetSelSpeed(m_FaxSpeed);
FaxParam->Is2D = m_Compress == TRUE ? U2D_ENABLE : U2D_DISABLE ;
FaxParam->Volume = GetFaxVolume(m_Volume);
FaxParam->Class = m_FaxProtocol == 0 ? CLASS_1 : CLASS_2 ;
FaxParam->Ecm = m_Ecm == TRUE ? ECM_ENABLE : ECM_DISABLE ;
strcpy(FaxParam->FileName,m_File);
strcpy(FaxParam->Identifi,m_Identity);
SmartReceiveFax(FaxParam);
delete FaxParam;
return true;
}
bool CFaxMachineDlg::RecvFaxInTapi()
{
if(m_bFaxing)
{
return false;
}
m_bFaxing = true;
this->UpdateData();
SFaxParam *FaxParam =(SFaxParam *) new SFaxParam;
FaxParam->hFax = &g_hFax;
FaxParam->hCall = g_hCall;
FaxParam->hLine = g_hLine;
FaxParam->Hwnd = this->GetSafeHwnd();
FaxParam->Msg = WM_SMARTFAX;
FaxParam->Speed = GetSelSpeed(m_FaxSpeed);
FaxParam->Is2D = m_Compress == TRUE ? U2D_ENABLE : U2D_DISABLE ;
FaxParam->Volume = GetFaxVolume(m_Volume);
FaxParam->Class = m_FaxProtocol == 0 ? CLASS_1 : CLASS_2 ;
FaxParam->Ecm = m_Ecm == TRUE ? ECM_ENABLE : ECM_DISABLE ;
strcpy(FaxParam->FileName,m_File);
strcpy(FaxParam->Identifi,m_Identity);
TapiSmartReceiveFax(FaxParam);
delete FaxParam;
return true;
}
void CFaxMachineDlg::OnAutoReply()
{
// TODO: Add your control notification handler code here
this->UpdateData(TRUE);
if(m_PortType==0) //通过Tapi接收
{
int nSel = m_ModemList.GetCurSel();
DWORD dwDevice = m_ModemList.GetItemData(nSel);
if(dwDevice >=0)
{
if(m_AutoReply)
{
if(!InitializeTAPI(dwDevice))
{
if(g_hLineApp||g_bTapiInUse)
{
ShutdownTAPI();
}
m_AutoReply = FALSE ;
UpdateData(FALSE);
AfxMessageBox("InitializeTAPI fail ... \n");
}
else
{
PostMessage(WM_SMARTFAX,WM_FAXMONITORSTART,0);
}
}
else
{
ShutdownTAPI();
PostMessage(WM_SMARTFAX,WM_FAXMONITORCLOSE,0);
}
}
}else //通过Com端口接收
{
if(m_AutoReply)
{
if(SmartFaxMonitorPort(&g_hFax,m_PortType,GetSafeHwnd(),WM_SMARTFAX) == 0 )
{
m_Status = "Waiting for call ...";
}
else
{
m_Status = "Monitor device failed ...";
m_AutoReply = FALSE;
g_hFax = NULL;
}
UpdateData(FALSE);
}
else
{
AbortPort(&g_hFax);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -