//============================================================================ // 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