Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

238 lines
3.8 KiB

//============================================================================
// Copyright (C) Microsoft Corporation, 1996 - 1999
//
// File: ipctrl.cpp
//
// 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