uicall.cpp
上传用户:hcyyun520
上传日期:2019-05-14
资源大小:365k
文件大小:1k
源码类别:

TAPI编程

开发平台:

Visual C++

  1. // uicall.cpp
  2. #include "pch.h"
  3. #include "wavetsp.h"
  4. #include "uicall.h"
  5. CuiCall::CuiCall(
  6.     HTAPIDIALOGINSTANCE htDlgInst,
  7.     TUISPIDLLCALLBACK   lpfnUIDLLCallback,
  8.     LPCSTR              pszAddress,
  9.     LINEDIALPARAMS*     pdp,
  10.     TSPUIDATA*          pData)
  11. :
  12.     m_htDlgInst(htDlgInst),
  13.     m_pfnCallback(lpfnUIDLLCallback),
  14.     m_pData(pData),
  15.     m_pdp(pdp),
  16.     m_dsAddress(this, pszAddress)
  17. {
  18. }
  19. bool CuiCall::Dial(HWND hwndDialog)
  20. {
  21.     m_hwndDialog = hwndDialog;
  22.     if( m_dsAddress.Dial(WAVE_MAPPER, m_pdp->dwDigitDuration, m_pdp->dwDialPause) )
  23.     {
  24.         SetCallState(LINECALLSTATE_DIALING);
  25.         return true;
  26.     }
  27.     return false;
  28. }
  29. void CuiCall::SetCallState(DWORD dwCallState)
  30. {
  31.     Callback(dwCallState, 0);
  32. }
  33. void CuiCall::Cancel()
  34. {
  35.     m_dsAddress.Cancel();
  36.     Callback(0, LINEERR_OPERATIONFAILED);
  37. }
  38. // CtDialStringSink
  39. void CuiCall::OnDialDone()
  40. {
  41.     SetCallState(LINECALLSTATE_CONNECTED);
  42.     EndDialog(m_hwndDialog, IDOK);
  43. }
  44. void CuiCall::OnDialError()
  45. {
  46.     SetCallState(LINECALLSTATE_IDLE);
  47.     EndDialog(m_hwndDialog, IDABORT);
  48. }
  49. void CuiCall::Callback(DWORD nCallState, LONG tr)
  50. {
  51.     m_pData->nCallState = nCallState;
  52.     m_pData->tr = tr;
  53.     m_pfnCallback((DWORD)m_htDlgInst, TUISPIDLL_OBJECT_DIALOGINSTANCE, m_pData, sizeof(*m_pData));
  54.     // Can only complete asynch operation once
  55.     m_pData->dwRequestID = 0;
  56. }