210 lines
5.8 KiB
C++
210 lines
5.8 KiB
C++
|
// CnctDlg.cpp : implementation file
|
||
|
//
|
||
|
|
||
|
#include "stdafx.h"
|
||
|
#include "resource.h"
|
||
|
|
||
|
#include "KeyObjs.h"
|
||
|
#include "CmnKey.h"
|
||
|
#include "W3Key.h"
|
||
|
#include "W3Serv.h"
|
||
|
|
||
|
#include "CnctDlg.h"
|
||
|
#include "IPDlg.h"
|
||
|
|
||
|
#ifdef _DEBUG
|
||
|
#define new DEBUG_NEW
|
||
|
#undef THIS_FILE
|
||
|
static char THIS_FILE[] = __FILE__;
|
||
|
#endif
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CConnectionDlg dialog
|
||
|
|
||
|
|
||
|
CConnectionDlg::CConnectionDlg(CWnd* pParent /*=NULL*/)
|
||
|
: CDialog(CConnectionDlg::IDD, pParent),
|
||
|
m_pKey( NULL )
|
||
|
{
|
||
|
//{{AFX_DATA_INIT(CConnectionDlg)
|
||
|
m_int_connection_type = -1;
|
||
|
//}}AFX_DATA_INIT
|
||
|
}
|
||
|
|
||
|
|
||
|
void CConnectionDlg::DoDataExchange(CDataExchange* pDX)
|
||
|
{
|
||
|
CDialog::DoDataExchange(pDX);
|
||
|
//{{AFX_DATA_MAP(CConnectionDlg)
|
||
|
DDX_Control(pDX, IDC_BTN_SELECT_IPADDRESS, m_cbutton_choose_ip);
|
||
|
DDX_Radio(pDX, IDC_BTN_KEYVIEW_NONE, m_int_connection_type);
|
||
|
//}}AFX_DATA_MAP
|
||
|
|
||
|
// do the ip address field by hand
|
||
|
if ( pDX->m_bSaveAndValidate )
|
||
|
m_szIPAddress = GetIPAddress();
|
||
|
else
|
||
|
FSetIPAddress( m_szIPAddress );
|
||
|
}
|
||
|
|
||
|
|
||
|
BEGIN_MESSAGE_MAP(CConnectionDlg, CDialog)
|
||
|
//{{AFX_MSG_MAP(CConnectionDlg)
|
||
|
ON_BN_CLICKED(IDC_BTN_KEYVIEW_DEFAULT, OnBtnKeyviewDefault)
|
||
|
ON_BN_CLICKED(IDC_BTN_KEYVIEW_IPADDR, OnBtnKeyviewIpaddr)
|
||
|
ON_BN_CLICKED(IDC_BTN_KEYVIEW_NONE, OnBtnKeyviewNone)
|
||
|
ON_BN_CLICKED(IDC_BTN_SELECT_IPADDRESS, OnBtnSelectIpaddress)
|
||
|
//}}AFX_MSG_MAP
|
||
|
END_MESSAGE_MAP()
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CConnectionDlg message handlers
|
||
|
//----------------------------------------------------------------
|
||
|
// override virtual oninitdialog
|
||
|
BOOL CConnectionDlg::OnInitDialog( )
|
||
|
{
|
||
|
// call the base oninit
|
||
|
CDialog::OnInitDialog();
|
||
|
|
||
|
// set enable the ip address as appropriate to start with
|
||
|
switch( m_int_connection_type )
|
||
|
{
|
||
|
case CONNECTION_NONE:
|
||
|
m_cbutton_choose_ip.EnableWindow( FALSE );
|
||
|
GetDlgItem(IDC_IPA_IPADDRESS)->EnableWindow(FALSE);
|
||
|
break;
|
||
|
case CONNECTION_DEFAULT:
|
||
|
m_cbutton_choose_ip.EnableWindow( FALSE );
|
||
|
GetDlgItem(IDC_IPA_IPADDRESS)->EnableWindow(FALSE);
|
||
|
break;
|
||
|
case CONNECTION_IPADDRESS:
|
||
|
m_cbutton_choose_ip.EnableWindow( TRUE );
|
||
|
GetDlgItem(IDC_IPA_IPADDRESS)->EnableWindow(TRUE);
|
||
|
break;
|
||
|
};
|
||
|
|
||
|
// return 0 to say we set the default item
|
||
|
// return 1 to just select the default default item
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
//------------------------------------------------------------------------------
|
||
|
void CConnectionDlg::OnBtnKeyviewNone()
|
||
|
{
|
||
|
// clear the address field
|
||
|
UpdateData( TRUE );
|
||
|
m_szIPStorage = m_szIPAddress;
|
||
|
ClearIPAddress();
|
||
|
|
||
|
// disable the address field and chooser
|
||
|
m_cbutton_choose_ip.EnableWindow( FALSE );
|
||
|
GetDlgItem(IDC_IPA_IPADDRESS)->EnableWindow(FALSE);
|
||
|
}
|
||
|
|
||
|
//------------------------------------------------------------------------------
|
||
|
void CConnectionDlg::OnBtnKeyviewDefault()
|
||
|
{
|
||
|
// get the data from the form
|
||
|
UpdateData( TRUE );
|
||
|
m_szIPStorage = m_szIPAddress;
|
||
|
ClearIPAddress();
|
||
|
|
||
|
// disable the address field and chooser
|
||
|
m_cbutton_choose_ip.EnableWindow( FALSE );
|
||
|
GetDlgItem(IDC_IPA_IPADDRESS)->EnableWindow(FALSE);
|
||
|
}
|
||
|
|
||
|
//------------------------------------------------------------------------------
|
||
|
void CConnectionDlg::OnBtnKeyviewIpaddr()
|
||
|
{
|
||
|
// enable the address field and chooser
|
||
|
m_cbutton_choose_ip.EnableWindow( TRUE );
|
||
|
GetDlgItem(IDC_IPA_IPADDRESS)->EnableWindow(TRUE);
|
||
|
|
||
|
// ip address field
|
||
|
UpdateData( TRUE );
|
||
|
m_szIPAddress = m_szIPStorage;
|
||
|
UpdateData( FALSE );
|
||
|
}
|
||
|
|
||
|
|
||
|
//------------------------------------------------------------------------------
|
||
|
void CConnectionDlg::OnBtnSelectIpaddress()
|
||
|
{
|
||
|
// run the choose ip dialog here
|
||
|
CChooseIPDlg dlg;
|
||
|
|
||
|
// set up the ip dialog member variables
|
||
|
dlg.m_szIPAddress = m_szIPAddress;
|
||
|
dlg.m_pKey = m_pKey;
|
||
|
|
||
|
// run the dialog
|
||
|
if ( dlg.DoModal() == IDOK )
|
||
|
{
|
||
|
UpdateData( TRUE );
|
||
|
m_szIPAddress = dlg.m_szIPAddress;
|
||
|
UpdateData( FALSE );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//------------------------------------------------------------------------------
|
||
|
// Set and get the ip STRING from the ip edit control
|
||
|
BOOL CConnectionDlg::FSetIPAddress( CString& szAddress )
|
||
|
{
|
||
|
DWORD dword, b1, b2, b3, b4;
|
||
|
|
||
|
// break the string into 4 numerical bytes (reading left to right)
|
||
|
dword = sscanf( szAddress, "%d.%d.%d.%d", &b1, &b2, &b3, &b4 );
|
||
|
|
||
|
// if we didn't get all four, fail
|
||
|
if ( dword != 4 )
|
||
|
return FALSE;
|
||
|
|
||
|
// make the numerical ip address out of the bytes
|
||
|
dword = (DWORD)MAKEIPADDRESS(b1,b2,b3,b4);
|
||
|
|
||
|
// set the ip address into the control
|
||
|
SendDlgItemMessage( IDC_IPA_IPADDRESS, IPM_SETADDRESS, 0, dword );
|
||
|
|
||
|
#ifdef _DEBUG
|
||
|
dword = 0;
|
||
|
// dword = SendDlgItemMessage( IDC_IPA_IPADDRESS, IPM_GETADDRESS, 0, 0 );
|
||
|
#endif
|
||
|
|
||
|
// return success
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
//------------------------------------------------------------------------------
|
||
|
CString CConnectionDlg::GetIPAddress()
|
||
|
{
|
||
|
CString szAnswer;
|
||
|
DWORD dword, b1, b2, b3, b4;
|
||
|
|
||
|
// get the ip address from the control
|
||
|
SendDlgItemMessage( IDC_IPA_IPADDRESS, IPM_GETADDRESS, 0, (LPARAM)&dword );
|
||
|
|
||
|
|
||
|
// get the constituent parts
|
||
|
b1 = FIRST_IPADDRESS( dword );
|
||
|
b2 = SECOND_IPADDRESS( dword );
|
||
|
b3 = THIRD_IPADDRESS( dword );
|
||
|
b4 = FOURTH_IPADDRESS( dword );
|
||
|
|
||
|
// format the string
|
||
|
if ( dword )
|
||
|
szAnswer.Format( "%d.%d.%d.%d", b1, b2, b3, b4 );
|
||
|
else
|
||
|
szAnswer.Empty();
|
||
|
|
||
|
return szAnswer;
|
||
|
}
|
||
|
|
||
|
//------------------------------------------------------------------------------
|
||
|
// Set and get the ip STRING from the ip edit control
|
||
|
void CConnectionDlg::ClearIPAddress()
|
||
|
{
|
||
|
// clear the ip address control
|
||
|
SendDlgItemMessage( IDC_IPA_IPADDRESS, IPM_CLEARADDRESS, 0, 0 );
|
||
|
}
|