157 lines
4.0 KiB
C++
157 lines
4.0 KiB
C++
/**********************************************************************/
|
|
/** Microsoft Windows/NT **/
|
|
/** Copyright(c) Microsoft Corporation, 1996 - 2002 **/
|
|
/**********************************************************************/
|
|
|
|
//============================================================================
|
|
// History:
|
|
// ??/??/?? Tony Romano Created.
|
|
// 05/16/96 Abolade Gbadegesin Revised.
|
|
//============================================================================
|
|
|
|
#ifndef __IPCTRL_H
|
|
#define __IPCTRL_H
|
|
|
|
#if _MSC_VER >= 1000
|
|
#pragma once
|
|
#endif // _MSC_VER >= 1000
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Class: IPControl
|
|
//
|
|
// Controls an IP-address edit-control.
|
|
//----------------------------------------------------------------------------
|
|
|
|
class IPControl {
|
|
|
|
public:
|
|
|
|
IPControl( );
|
|
~IPControl( );
|
|
|
|
BOOL
|
|
Create(
|
|
HWND hParent,
|
|
UINT nID );
|
|
|
|
VOID
|
|
Create(HWND hwnd)
|
|
{
|
|
m_hIPaddr = hwnd;
|
|
}
|
|
|
|
operator
|
|
HWND( ) { ASSERT(m_hIPaddr); return m_hIPaddr; }
|
|
|
|
BOOL
|
|
IsBlank( );
|
|
|
|
VOID
|
|
SetFocusField(
|
|
DWORD dwField );
|
|
|
|
VOID
|
|
SetFieldRange(
|
|
DWORD dwField,
|
|
DWORD dwMin,
|
|
DWORD dwMax );
|
|
|
|
VOID
|
|
ClearAddress( );
|
|
|
|
VOID
|
|
SetAddress(
|
|
DWORD ardwAddress[4] );
|
|
|
|
VOID
|
|
SetAddress(
|
|
DWORD a1,
|
|
DWORD a2,
|
|
DWORD a3,
|
|
DWORD a4 );
|
|
|
|
VOID
|
|
SetAddress(
|
|
LPCTSTR lpszString );
|
|
|
|
INT
|
|
GetAddress(
|
|
DWORD ardwAddress[4] );
|
|
|
|
INT
|
|
GetAddress(
|
|
DWORD* a1,
|
|
DWORD* a2,
|
|
DWORD* a3,
|
|
DWORD* a4 );
|
|
|
|
INT
|
|
GetAddress(
|
|
CString& address );
|
|
|
|
LRESULT
|
|
SendMessage(
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam );
|
|
|
|
public:
|
|
|
|
HWND m_hIPaddr;
|
|
};
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Macro: MAKEADDR
|
|
//
|
|
// Given an a, b, c, and d, constructs a network-order DWORD corresponding
|
|
// to the IP-address a.b.c.d
|
|
//----------------------------------------------------------------------------
|
|
|
|
#define MAKEADDR(a, b, c, d) \
|
|
(((a) & 0xff) | (((b) & 0xff) << 8) | (((c) & 0xff) << 16) | (((d) & 0xff) << 24))
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Macros: INET_NTOA
|
|
// INET_ADDR
|
|
//
|
|
// Generic-text macros for IP-address conversion.
|
|
//----------------------------------------------------------------------------
|
|
|
|
/*
|
|
#ifndef UNICODE
|
|
#define INET_NTOA(a) inet_ntoa(*(struct in_addr *)&(a))
|
|
#define INET_ADDR inet_addr
|
|
#else
|
|
#define INET_NTOA(a) inet_ntoaw(*(struct in_addr *)&(a))
|
|
#define INET_ADDR inet_addrw
|
|
#endif
|
|
*/
|
|
|
|
//----------------------------------------------------------------------------
|
|
// Macro: INET_CMP
|
|
//
|
|
// Comparison macro for IP addresses.
|
|
//
|
|
// This macro compares two IP addresses in network order by
|
|
// masking off each pair of octets and doing a subtraction;
|
|
// the result of the final subtraction is stored in the third argument
|
|
//----------------------------------------------------------------------------
|
|
|
|
inline int INET_CMP(DWORD a, DWORD b)
|
|
{
|
|
DWORD t;
|
|
|
|
return ((t = ((a & 0x000000ff) - (b & 0x000000ff))) ? t :
|
|
((t = ((a & 0x0000ff00) - (b & 0x0000ff00))) ? t :
|
|
((t = ((a & 0x00ff0000) - (b & 0x00ff0000))) ? t :
|
|
((t = (((a>>8) & 0x00ff0000) - ((b>>8) & 0x00ff0000)))))));
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif
|