zoukankan      html  css  js  c++  java
  • IpAddress IP控件

    ipaddressctrl.hpp
    #ifndef ipaddressctrlH
    #define ipaddressctrlH

    namespace NSTS {

    #include <windows.h>
    #include <commctrl.h>
    #include <string.h>
    //#include <winsock2.h>

    #pragma comment (lib, "ws2_32.lib")
    #pragma comment (lib, "comctl32.lib")

    class CIpAddressCtrl {
    #define SELF_VALID IsWindow (m_hSelf)
    public:
    CIpAddressCtrl (void) {
    m_hSelf = m_hParent = NULL;
    };
    ~CIpAddressCtrl (void) {
    if (SELF_VALID) {
    Destroy ();
    }

    m_hSelf = m_hParent = NULL;
    };

    bool Init (HINSTANCE hInst, HWND hParent, const RECT* prc) {
    if (prc == NULL) {
    return false;
    }

    return Init (hInst, hParent, prc->left, prc->top, prc->right - prc->left, prc->bottom - prc->top);
    };

    bool Init (HINSTANCE hInst, HWND hParent, int iX, int iY, int iWidth, int iHeight) {
    Destroy ();
    if (hInst != NULL && IsWindow (hParent)) {
    INITCOMMONCONTROLSEX icc;
    icc.dwSize = sizeof (icc);
    icc.dwICC = ICC_INTERNET_CLASSES;
    InitCommonControlsEx (&icc);

    m_hSelf = CreateWindowEx (0,
    WC_IPADDRESS,
    NULL,
    WS_CHILD | WS_VISIBLE,
    iX, iY, iWidth, iHeight,
    hParent,
    NULL,
    hInst,
    NULL);
    if (m_hSelf == NULL) {
    return false;
    }

    m_hParent = hParent;
    return true;
    }

    return false;
    };
    void Destroy (void) {
    if (SELF_VALID) {
    DestroyWindow (m_hSelf);
    m_hSelf = NULL;
    }
    m_hParent = NULL;
    };
    bool Attach (HWND hwnd) {
    if (IsWindow (hwnd)) {
    m_hSelf = hwnd;
    m_hParent = ::GetParent (m_hSelf);
    }
    return false;
    };

    public:
    bool GetIpAddress (char* pszIp) const {
    if (pszIp != NULL) {
    DWORD dwIp = 0;
    if (GetIpAddress (&dwIp)) {
    struct in_addr addr;
    char* pszIpTemp = 0;
    addr.S_un.S_addr = htonl (dwIp);
    pszIpTemp = inet_ntoa (addr);
    if (pszIpTemp) {
    strcpy (pszIp, pszIpTemp);
    } else {
    strcpy (pszIp, "0.0.0.0");
    }
    return true;
    }
    }
    return false;
    };
    bool GetIpAddress (DWORD* pdwIp) const {
    if (SELF_VALID && pdwIp != NULL) {
    SendMessage (m_hSelf, IPM_GETADDRESS, (WPARAM)0, (LPARAM)pdwIp);
    return true;
    }
    return false;
    };
    bool SetIpAddress (const char* pszIp) {
    if (pszIp) {
    DWORD dwIp;
    dwIp = inet_addr (pszIp);
    return SetIpAddress (ntohl (dwIp));
    }
    return false;
    };
    bool SetIpAddress (BYTE b1, BYTE b2, BYTE b3, BYTE b4) {
    return SetIpAddress (MAKEIPADDRESS (b1, b2, b3, b4));
    };
    bool SetIpAddress (DWORD dwIp) {
    if (SELF_VALID) {
    SendMessage (m_hSelf, IPM_SETADDRESS, (WPARAM)0, (LPARAM)dwIp);
    return true;
    }
    return false;
    };
    bool Clear (void) {
    if (SELF_VALID) {
    SendMessage (m_hSelf, IPM_CLEARADDRESS, (WPARAM)0, (LPARAM)0);
    return true;
    }
    return false;
    };

    HWND GetHwnd (void) const { return m_hSelf; };
    HWND GetParent (void) const { return m_hParent; } ;

    private:
    HWND m_hSelf;
    HWND m_hParent;
    };

    }

    #endif // ipaddressctrlH

    Usage:

    NSTS::CIpAddressCtrl g_ip1, g_ip2;

    WM_INITDIALOG:
    g_ip1.Init (hInst, hwndDlg, 0, 0, 150, 20);
    g_ip2.Attach (GetDlgItem (hwndDlg, IDC_IP1));

    WM_COMMAND
    IDC_GETIP:
    {
    char szIp [64] = {0};
    g_ip1.GetIpAddress (szIp);
    MessageBoxA (NULL, szIP, NULL, MB_OK);
    }

    IDC_SETIP:
    {
    g_ip1.SetIpAddress ("1.1.1.2");
    }



  • 相关阅读:
    Django使用Mysql已存在数据表的方法
    ajax加载验证码这样不断刷新的文件无法刷新问题
    flask ajax发送请求返回400
    flask启动找不到路由问题
    Python开发之路
    文件读写的简单应用
    sql 简单查询修改
    kafka 查询 SQL Query
    kafka条件查询excel拼接
    shelve模块
  • 原文地址:https://www.cnblogs.com/lin1270/p/2332532.html
Copyright © 2011-2022 走看看