You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
3.1 KiB
126 lines
3.1 KiB
// RemoveFSPDlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "ConfigTest.h"
|
|
#include "RemoveFSPDlg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
typedef unsigned long ULONG_PTR, *PULONG_PTR;
|
|
typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
|
|
|
|
#include "..\..\..\inc\fxsapip.h"
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CRemoveFSPDlg dialog
|
|
|
|
|
|
CRemoveFSPDlg::CRemoveFSPDlg(HANDLE hFax, CWnd* pParent /*=NULL*/)
|
|
: CDialog(CRemoveFSPDlg::IDD, pParent),
|
|
m_hFax (hFax)
|
|
{
|
|
//{{AFX_DATA_INIT(CRemoveFSPDlg)
|
|
m_cstrGUID = _T("");
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
|
|
void CRemoveFSPDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CRemoveFSPDlg)
|
|
DDX_Control(pDX, IDC_COMBO, m_cbFSPs);
|
|
DDX_Text(pDX, IDC_GUID, m_cstrGUID);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CRemoveFSPDlg, CDialog)
|
|
//{{AFX_MSG_MAP(CRemoveFSPDlg)
|
|
ON_BN_CLICKED(IDREMOVE, OnRemove)
|
|
ON_CBN_SELCHANGE(IDC_COMBO, OnSelChangeCombo)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CRemoveFSPDlg message handlers
|
|
|
|
void CRemoveFSPDlg::OnRemove()
|
|
{
|
|
if (!UpdateData ())
|
|
{
|
|
return;
|
|
}
|
|
if (!FaxUnregisterServiceProviderEx(m_hFax, m_cstrGUID))
|
|
{
|
|
CString cs;
|
|
cs.Format ("Failed while calling FaxUnregisterServiceProviderEx (%ld)",
|
|
GetLastError ());
|
|
AfxMessageBox (cs, MB_OK | MB_ICONHAND);
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox ("FSP successfully removed. You need to restart the service for the change to take effect", MB_OK | MB_ICONHAND);
|
|
}
|
|
}
|
|
|
|
void
|
|
CRemoveFSPDlg::RefreshList ()
|
|
{
|
|
PFAX_DEVICE_PROVIDER_INFO pFSPs;
|
|
DWORD dwNumFSPs;
|
|
CString cs;
|
|
|
|
m_cbFSPs.ResetContent ();
|
|
if (!FaxEnumerateProviders (m_hFax, &pFSPs, &dwNumFSPs))
|
|
{
|
|
cs.Format ("Failed while calling FaxEnumerateProviders (%ld)", GetLastError());
|
|
AfxMessageBox (cs, MB_OK | MB_ICONHAND);
|
|
return;
|
|
}
|
|
for (DWORD dw = 0; dw < dwNumFSPs; dw++)
|
|
{
|
|
|
|
int iIndex = m_cbFSPs.AddString (pFSPs[dw].lpctstrFriendlyName);
|
|
CString *pCString = new CString (pFSPs[dw].lpctstrGUID);
|
|
m_cbFSPs.SetItemData (iIndex, (DWORD) pCString);
|
|
}
|
|
if (!dwNumFSPs)
|
|
{
|
|
m_cbFSPs.EnableWindow (FALSE);
|
|
}
|
|
else
|
|
{
|
|
m_cbFSPs.SetCurSel (0);
|
|
DWORD dwData = m_cbFSPs.GetItemData (0);
|
|
m_cstrGUID = *((CString *)(dwData));
|
|
}
|
|
UpdateData (FALSE);
|
|
FaxFreeBuffer (LPVOID(pFSPs));
|
|
}
|
|
|
|
BOOL CRemoveFSPDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
RefreshList ();
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CRemoveFSPDlg::OnSelChangeCombo()
|
|
{
|
|
int iIndex = m_cbFSPs.GetCurSel ();
|
|
if (CB_ERR == iIndex)
|
|
{
|
|
return;
|
|
}
|
|
m_cstrGUID = *((CString *)(m_cbFSPs.GetItemData (iIndex)));
|
|
UpdateData (FALSE);
|
|
}
|