求MFC中IP地址控件类 CIPAddressCtrl 定义及各函数 代码

[复制链接]
查看11 | 回复3 | 2011-3-13 10:41:37 | 显示全部楼层 |阅读模式
回复

使用道具 举报

千问 | 2011-3-13 10:41:37 | 显示全部楼层
<pre id=\"best-answer-content\" class=\"reply-text mb10\">class CIPAddressCtrl : public CWnd
{
DECLARE_DYNAMIC(CIPAddressCtrl)

public:
// Constructors
CIPAddressCtrl();

// Generic creator
virtual BOOL Create(_In_ DWORD dwStyle, _In_ const RECT

// Generic creator allowing extended style bits
virtual BOOL CreateEx(_In_ DWORD dwExStyle, _In_ DWORD dwStyle, _In_ const RECT

// Attributes
// Determines if all fields in the IP address control are blank.
BOOL IsBlank() const;

// Clears the contents of the IP address control.
void ClearAddress();

// Retrieves the address values for all four fields in the IP address control.
int GetAddress(_Out_ BYTE
int GetAddress(_Out_ DWORD

// Sets the address values for all four fields in the IP address control.
void SetAddress(_In_ DWORD dwAddress);
void SetAddress(_In_ BYTE nField0, _In_ BYTE nField1, _In_ BYTE nField2, _In_ BYTE nField3);

// Sets the keyboard focus to the specified field in the IP address control.
void SetFieldFocus(_In_ WORD nField);

// Sets the valid range for the specified field in the IP address control.
void SetFieldRange(_In_ int nField, _In_ BYTE nLower, _In_ BYTE nUpper);

// Implementation
public:
virtual ~CIPAddressCtrl();
};


_AFXCMN_INLINE CIPAddressCtrl::CIPAddressCtrl()
{ }
_AFXCMN_INLINE void CIPAddressCtrl::ClearAddress()
{ ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, IPM_CLEARADDRESS, 0, 0L); }
_AFXCMN_INLINE BOOL CIPAddressCtrl::IsBlank() const
{ ASSERT(::IsWindow(m_hWnd)); return (BOOL) ::SendMessage(m_hWnd, IPM_ISBLANK, 0, 0L); }
_AFXCMN_INLINE int CIPAddressCtrl::GetAddress(DWORD return (int) ::SendMessage(m_hWnd, IPM_GETADDRESS, 0, (LPARAM)}
_AFXCMN_INLINE void CIPAddressCtrl::SetAddress(DWORD dwAddress)
{ ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, IPM_SETADDRESS, 0, (LPARAM) dwAddress); }
_AFXCMN_INLINE void CIPAddressCtrl::SetAddress(BYTE nField0, BYTE nField1, BYTE nField2, BYTE nField3)
{ ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, IPM_SETADDRESS, 0, (LPARAM) MAKEIPADDRESS(nField0, nField1, nField2, nField3)); }
_AFXCMN_INLINE void CIPAddressCtrl::SetFieldFocus(WORD nField)
{ ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, IPM_SETFOCUS, (WPARAM) nField, 0); }
_AFXCMN_INLINE void CIPAddressCtrl::SetFieldRange(int nField, BYTE nLower, BYTE nUpper)
{ ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, IPM_SETRANGE, (WPARAM) nField, MAKEIPRANGE(nLower, nUpper)); }


CIPAddressCtrl::~CIPAddressCtrl()
{
DestroyWindow();
}

BOOL CIPAddressCtrl::Create(DWORD dwStyle, const RECT

// the IP Address Control must be a child
ASSERT(dwStyle

CWnd* pWnd = this;
return pWnd-Create(WC_IPADDRESS, NULL, dwStyle, rect, pParentWnd, nID);
}

BOOL CIPAddressCtrl::CreateEx(DWORD dwExStyle, DWORD dwStyle,
const RECT
if (bRet
}
return bRet;
}

int CIPAddressCtrl::GetAddress(BYTE
DWORD dwAddress;
LRESULT nRetVal = ::SendMessage(m_hWnd, IPM_GETADDRESS, 0, (LPARAM)

nField0 = (BYTE) FIRST_IPADDRESS(dwAddress);
nField1 = (BYTE) SECOND_IPADDRESS(dwAddress);
nField2 = (BYTE) THIRD_IPADDRESS(dwAddress);
nField3 = (BYTE) FOURTH_IPADDRESS(dwAddress);

//IA64: only four fields in an IP address, so an int won\'t overflow
return int(nRetVal);
}
回复

使用道具 举报

千问 | 2011-3-13 10:41:37 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-1524241\">搜了下安装目录找到了,但MFC类文件具体是 怎么分布的啊
回复

使用道具 举报

千问 | 2011-3-13 10:41:37 | 显示全部楼层
<pre class=\"replyask-text\" id=\"content-1532815\">这个没仔细研究,层次太复杂了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行