#if !defined(AFX_SYNIPADDRESSCTRL_H__2CBFA120_62D7_48D5_8FAE_809DE7DB7CD7__INCLUDED_)
#define AFX_SYNIPADDRESSCTRL_H__2CBFA120_62D7_48D5_8FAE_809DE7DB7CD7__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// SynIPAddressCtrl.h : header file
//
/
// CSynIPAddressCtrl window
class CSynIPAddressCtrl : public CIPAddressCtrl
{
// Construction
public:
CSynIPAddressCtrl();
// Attributes
public:
DWORD m_dwAddrSelf; // 本控件的IP
BOOL m_bSyn; // 是否要与m_pIPRes的地址同步
CIPAddressCtrl *m_pIPRes; // 同步的IP的来源
DWORD m_dwAddrRes; // 同步的IP
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CSynIPAddressCtrl)
protected:
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CSynIPAddressCtrl();
// Generated message map functions
protected:
//{{AFX_MSG(CSynIPAddressCtrl)
afx_msg void OnTimer(UINT nIDEvent);
afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
//}}AFX_MSG
afx_msg void OnSetfocus();
afx_msg void OnKillfocus();
DECLARE_MESSAGE_MAP()
};
/
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_SYNIPADDRESSCTRL_H__2CBFA120_62D7_48D5_8FAE_809DE7DB7CD7__INCLUDED_)
// SynIPAddressCtrl.cpp : implementation file
//
#include "stdafx.h"
#include "hrinetnsm_con.h"
#include "SynIPAddressCtrl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/
// CSynIPAddressCtrl
CSynIPAddressCtrl::CSynIPAddressCtrl()
{
m_dwAddrSelf = 0;
m_bSyn = TRUE;
m_pIPRes = NULL;
m_dwAddrRes = 0;
}
CSynIPAddressCtrl::~CSynIPAddressCtrl()
{
}
BEGIN_MESSAGE_MAP(CSynIPAddressCtrl, CIPAddressCtrl)
//{{AFX_MSG_MAP(CSynIPAddressCtrl)
ON_WM_TIMER()
ON_WM_CTLCOLOR_REFLECT()
//}}AFX_MSG_MAP
ON_CONTROL_REFLECT(EN_SETFOCUS, OnSetfocus)
ON_CONTROL_REFLECT(EN_KILLFOCUS, OnKillfocus)
END_MESSAGE_MAP()
/
// CSynIPAddressCtrl message handlers
void CSynIPAddressCtrl::OnSetfocus()
{
if (m_bSyn)
{// 当输入焦点进入后,自动同步来源IP控件的IP
// DWORD dwAddr;
//
// m_pIPRes->GetAddress(dwAddr);
//
// m_dwAddr = dwAddr;
//
// SetAddress(m_dwAddr);
}
}
void CSynIPAddressCtrl::OnKillfocus()
{
DWORD dwAddr;
GetAddress(dwAddr);
if (dwAddr != m_dwAddrSelf)
{// 一旦自行编辑过,则不再同步
m_dwAddrSelf = dwAddr;
m_bSyn = FALSE;
}
}
void CSynIPAddressCtrl::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
if (m_bSyn)
{
DWORD dwAddrSelf = 0, dwAddrRes = 0;
if (m_pIPRes != NULL)
{
m_pIPRes->GetAddress(dwAddrRes);
if (m_dwAddrRes != dwAddrRes)
{
m_dwAddrRes = dwAddrRes;
GetAddress(dwAddrSelf);
if (dwAddrSelf != m_dwAddrRes)
{// 当发现,本控件IP与源控件IP不一样时,则同步
SetAddress(m_dwAddrRes);
m_dwAddrSelf = m_dwAddrRes;
}
}
}
}
CIPAddressCtrl::OnTimer(nIDEvent);
}
HBRUSH CSynIPAddressCtrl::CtlColor(CDC* pDC, UINT nCtlColor)
{
// TODO: Change any attributes of the DC here
SetTimer(1, 100, NULL);
// TODO: Return a non-NULL brush if the parent's handler should not be called
return NULL;
}