// 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 ); }