240 lines
4.0 KiB
C++
240 lines
4.0 KiB
C++
/**********************************************************************/
|
|
/** Microsoft Windows/NT **/
|
|
/** Copyright(c) Microsoft Corporation, 1996 - 2002 **/
|
|
/**********************************************************************/
|
|
|
|
//============================================================================
|
|
// History:
|
|
// Tony Romano Created.
|
|
// 06/17/96 Abolade Gbadegesin Revised.
|
|
//
|
|
// Implements the C++ class encapsulating the IP-address custom control.
|
|
//============================================================================
|
|
|
|
#include "stdafx.h"
|
|
extern "C" {
|
|
#include "ipaddr.h"
|
|
};
|
|
|
|
#include "ipctrl.h"
|
|
|
|
|
|
|
|
|
|
IPControl::IPControl( ) { m_hIPaddr = 0; }
|
|
|
|
IPControl::~IPControl( ) { }
|
|
|
|
|
|
|
|
BOOL
|
|
IPControl::Create(
|
|
HWND hParent,
|
|
UINT nID
|
|
) {
|
|
|
|
ASSERT(IsWindow(hParent));
|
|
|
|
if (hParent)
|
|
m_hIPaddr = GetDlgItem(hParent, nID);
|
|
|
|
return m_hIPaddr != NULL;
|
|
}
|
|
|
|
|
|
|
|
LRESULT
|
|
IPControl::SendMessage(
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
) {
|
|
|
|
ASSERT(IsWindow(m_hIPaddr));
|
|
|
|
return ::SendMessage(m_hIPaddr, uMsg, wParam, lParam);
|
|
}
|
|
|
|
|
|
|
|
BOOL
|
|
IPControl::IsBlank(
|
|
) {
|
|
|
|
return (BOOL)SendMessage(IP_ISBLANK, 0, 0);
|
|
}
|
|
|
|
|
|
|
|
VOID
|
|
IPControl::SetAddress(
|
|
DWORD ardwAddress[4]
|
|
) {
|
|
|
|
SendMessage(
|
|
IP_SETADDRESS, 0,
|
|
MAKEIPADDRESS(
|
|
ardwAddress[0], ardwAddress[1], ardwAddress[2], ardwAddress[3]
|
|
)
|
|
);
|
|
}
|
|
|
|
|
|
|
|
VOID
|
|
IPControl::SetAddress(
|
|
DWORD a1,
|
|
DWORD a2,
|
|
DWORD a3,
|
|
DWORD a4
|
|
) {
|
|
|
|
SendMessage(IP_SETADDRESS, 0, MAKEIPADDRESS(a1,a2,a3,a4));
|
|
}
|
|
|
|
|
|
|
|
VOID
|
|
IPControl::SetAddress(
|
|
LPCTSTR lpszString
|
|
) {
|
|
|
|
if (!lpszString) { ClearAddress(); }
|
|
|
|
SendMessage(WM_SETTEXT, 0, (LPARAM)lpszString);
|
|
}
|
|
|
|
|
|
INT
|
|
IPControl::GetAddress(
|
|
DWORD *a1,
|
|
DWORD *a2,
|
|
DWORD *a3,
|
|
DWORD *a4
|
|
) {
|
|
|
|
INT_PTR nSet;
|
|
DWORD dwAddress;
|
|
|
|
ASSERT(a1 && a2 && a3 && a4);
|
|
|
|
if ((nSet = SendMessage(IP_GETADDRESS,0,(LPARAM)&dwAddress)) == 0) {
|
|
|
|
*a1 = 0;
|
|
*a2 = 0;
|
|
*a3 = 0;
|
|
*a4 = 0;
|
|
}
|
|
else {
|
|
|
|
*a1 = FIRST_IPADDRESS( dwAddress );
|
|
*a2 = SECOND_IPADDRESS( dwAddress );
|
|
*a3 = THIRD_IPADDRESS( dwAddress );
|
|
*a4 = FOURTH_IPADDRESS( dwAddress );
|
|
}
|
|
|
|
return (INT)nSet;
|
|
}
|
|
|
|
|
|
INT
|
|
IPControl::GetAddress(
|
|
DWORD ardwAddress[4]
|
|
) {
|
|
|
|
INT_PTR nSet;
|
|
DWORD dwAddress;
|
|
|
|
if ((nSet = SendMessage(IP_GETADDRESS, 0, (LPARAM)&dwAddress )) == 0) {
|
|
|
|
ardwAddress[0] = 0;
|
|
ardwAddress[1] = 0;
|
|
ardwAddress[2] = 0;
|
|
ardwAddress[3] = 0;
|
|
}
|
|
else {
|
|
|
|
ardwAddress[0] = FIRST_IPADDRESS( dwAddress );
|
|
ardwAddress[1] = SECOND_IPADDRESS( dwAddress );
|
|
ardwAddress[2] = THIRD_IPADDRESS( dwAddress );
|
|
ardwAddress[3] = FOURTH_IPADDRESS( dwAddress );
|
|
}
|
|
|
|
return (INT)nSet;
|
|
}
|
|
|
|
|
|
INT
|
|
IPControl::GetAddress(
|
|
CString& address
|
|
) {
|
|
|
|
INT_PTR c, nSet;
|
|
DWORD dwAddress;
|
|
|
|
nSet = SendMessage(IP_GETADDRESS, 0, (LPARAM)&dwAddress);
|
|
|
|
address.ReleaseBuffer((int)(c = SendMessage(WM_GETTEXT, 256, (LPARAM)address.GetBuffer(256))));
|
|
|
|
return (INT)nSet;
|
|
}
|
|
|
|
|
|
VOID
|
|
IPControl::SetFocusField(
|
|
DWORD dwField
|
|
) {
|
|
|
|
SendMessage(IP_SETFOCUS, dwField, 0);
|
|
}
|
|
|
|
|
|
VOID
|
|
IPControl::ClearAddress(
|
|
) {
|
|
|
|
SendMessage(IP_CLEARADDRESS, 0, 0);
|
|
}
|
|
|
|
|
|
VOID
|
|
IPControl::SetFieldRange(
|
|
DWORD dwField,
|
|
DWORD dwMin,
|
|
DWORD dwMax
|
|
) {
|
|
|
|
SendMessage(IP_SETRANGE, dwField, MAKERANGE(dwMin,dwMax));
|
|
}
|
|
|
|
#if 0
|
|
WCHAR *
|
|
inet_ntoaw(
|
|
struct in_addr dwAddress
|
|
) {
|
|
|
|
static WCHAR szAddress[16];
|
|
|
|
mbstowcs(szAddress, inet_ntoa(*(struct in_addr *)&dwAddress), 16);
|
|
|
|
return szAddress;
|
|
}
|
|
|
|
|
|
DWORD
|
|
inet_addrw(
|
|
LPCWSTR szAddressW
|
|
) {
|
|
|
|
CHAR szAddressA[16];
|
|
|
|
wcstombs(szAddressA, szAddressW, 16);
|
|
|
|
return inet_addr(szAddressA);
|
|
}
|
|
#endif
|
|
|
|
|
|
|
|
|