ipaddr.h
上传用户:qxsjcl
上传日期:2007-01-08
资源大小:263k
文件大小:4k
源码类别:

网络截获/分析

开发平台:

Visual C++

  1. #ifndef _IPADDR_H // Only include this file once
  2. #define _IPADDR_H
  3. #pragma title("IP Address Custom Control Definitions")
  4. // Created by Joseph A. Dziedzic, September 1997
  5. // Revised April 1998
  6. // Thanks to Dan Anderson, Kenny Goers, Kevin Lussier, and Doug Miller for their suggestions
  7. // and code enhancements.
  8. // Mail comments to dziedzic@ma.ultranet.com
  9. // The structure we use to pass addresses around
  10. typedef struct tagIPA_ADDR {
  11. unsigned char nAddr1; // The four bytes of the IP address
  12. unsigned char nAddr2;
  13. unsigned char nAddr3;
  14. unsigned char nAddr4;
  15. UINT nInError; // Address byte with erroroneous/missing data (1..4)
  16. } IPA_ADDR;
  17. // IP Address control style bits
  18. #define IPAS_NOVALIDATE 0x0001 // Don't validate fields as they are input
  19. // Messages to/from the IP Address control
  20. enum IPAM {
  21. IPAM_GETADDRESS = WM_USER,
  22. IPAM_SETADDRESS,
  23. IPAM_SETREADONLY
  24. };
  25. // Resource IDs for our edit controls
  26. enum RID {
  27. IDC_ADDR1 = 1,
  28. IDC_ADDR2,
  29. IDC_ADDR3,
  30. IDC_ADDR4
  31. };
  32. class CIPAddrCtl;
  33. void DDX_IPAddr(CDataExchange* pDX, int nIDC, unsigned char* nAddr);
  34. void DDX_IPAddr(CDataExchange* pDX, int nIDC, CString& szAddr);
  35. /////////////////////////////////////////////////////////////////////////////
  36. // CIPAddrEdit window
  37. class CIPAddrEdit : public CEdit
  38. {
  39. // Construction
  40. public:
  41. CIPAddrEdit();
  42. // Attributes
  43. public:
  44. friend class CIPAddrCtl;
  45. // Operations
  46. public:
  47. // Overrides
  48. // ClassWizard generated virtual function overrides
  49. //{{AFX_VIRTUAL(CIPAddrEdit)
  50. //}}AFX_VIRTUAL
  51. // Implementation
  52. public:
  53. virtual ~CIPAddrEdit();
  54. // Generated message map functions
  55. protected:
  56. CIPAddrCtl* m_pParent;
  57. void SetParent(CIPAddrCtl* pParent);
  58. //{{AFX_MSG(CIPAddrEdit)
  59. afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
  60. afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
  61. //}}AFX_MSG
  62. DECLARE_MESSAGE_MAP()
  63. };
  64. /////////////////////////////////////////////////////////////////////////////
  65. /////////////////////////////////////////////////////////////////////////////
  66. // CIPAddrCtl window
  67. class CIPAddrCtl : public CWnd
  68. {
  69.     DECLARE_DYNCREATE(CIPAddrCtl)
  70. // Construction
  71. public:
  72. static BOOL Register();
  73. CIPAddrCtl();
  74. // Attributes
  75. public:
  76. friend class CIPAddrEdit;
  77. // Operations
  78. public:
  79. BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, DWORD dwExStyle=0);
  80. // Overrides
  81. // ClassWizard generated virtual function overrides
  82. //{{AFX_VIRTUAL(CIPAddrCtl)
  83. //}}AFX_VIRTUAL
  84. // Implementation
  85. public:
  86. virtual ~CIPAddrCtl();
  87. BOOL GetAddress(BOOL bPrintErrors, IPA_ADDR* lpIPAddr)
  88. { return (BOOL) ::SendMessage(m_hWnd, IPAM_GETADDRESS, (WPARAM) bPrintErrors, (LPARAM) lpIPAddr); };
  89. BOOL SetAddress(IPA_ADDR* lpIPAddr)
  90. { return (BOOL) ::SendMessage(m_hWnd, IPAM_SETADDRESS, 0, (LPARAM) lpIPAddr); };
  91. BOOL SetReadOnly(BOOL bReadOnly = TRUE)
  92. { return (BOOL) ::SendMessage(m_hWnd, IPAM_SETREADONLY, (WPARAM) bReadOnly, 0); };
  93. CIPAddrEdit* GetEditControl(int nIndex);
  94. // Generated message map functions
  95. protected:
  96. void OnChildChar(UINT nChar, UINT nRepCnt, UINT nFlags, CIPAddrEdit& child);
  97. //{{AFX_MSG(CIPAddrCtl)
  98. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  99. afx_msg void OnNcDestroy();
  100. afx_msg void OnSize(UINT nType, int cx, int cy);
  101. afx_msg void OnSetFocus(CWnd* pOldWnd);
  102. afx_msg void OnPaint();
  103. afx_msg void OnEnable(BOOL bEnable);
  104. afx_msg LONG OnSetFont(UINT wParam, LONG lParam);
  105. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  106. afx_msg LONG OnGetAddress(UINT wParam, LONG lParam);
  107. afx_msg LONG OnSetAddress(UINT wParam, LONG lParam);
  108. afx_msg LONG OnSetReadOnly(UINT wParam, LONG lParam);
  109. //}}AFX_MSG
  110. DECLARE_MESSAGE_MAP()
  111. private:
  112. CIPAddrEdit m_Addr[4];
  113. CRect m_rcAddr[4];
  114. CRect m_rcDot[3];
  115. BOOL ParseAddressPart(CEdit& edit, int& n);
  116. BOOL m_bEnabled;
  117. BOOL m_bReadOnly;
  118. BOOL m_bNoValidate;
  119. static BOOL m_bRegistered;
  120. };
  121. // WNDPROC
  122. #ifdef __cplusplus
  123. extern "C" {
  124. #endif
  125. LRESULT CALLBACK IPAddrWndProc(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam);
  126. #ifdef __cplusplus
  127. }
  128. #endif
  129. /////////////////////////////////////////////////////////////////////////////
  130. #endif // _IPADDR_H