#ifndef IPDLG_H
#define IPDLG_H


#ifndef STRICT
    #define STRICT
#endif
#include <windows.h>
#include <commctrl.h>
#include "Resource.h"

char szIPAdd[64];

LRESULT CALLBACK IpDlgProc(HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
{
    static HWND hIp;
    static BYTE byVal[4];
    LPNMIPADDRESS lpnmipa;
    LPARAM IpAddress;

    switch (msg) {
        case WM_INITDIALOG:
            hIp = GetDlgItem(hDlg, IDC_IPADDRESS);
            IpAddress = MAKEIPADDRESS(byVal[0], byVal[1], byVal[2], byVal[3]);
            SendMessage(hIp, IPM_SETADDRESS, 0, IpAddress);
            SetFocus(hIp);
            break;
        case WM_COMMAND:
            switch (LOWORD(wp)) {
                case IDOK:
                    EndDialog(hDlg, IDOK);
                    return TRUE;
                case IDCANCEL:    
                    EndDialog(hDlg, IDCANCEL);
                    return TRUE;
            }
            return FALSE;
        case WM_NOTIFY:
            if (((LPNMHDR)lp)->hwndFrom == hIp) {
                lpnmipa = (LPNMIPADDRESS)lp;
                switch (lpnmipa->hdr.code) {
                    case IPN_FIELDCHANGED:
                        byVal[lpnmipa->iField] = lpnmipa->iValue;
                        wsprintf(szIPAdd, "%d.%d.%d.%d",
                            byVal[0], byVal[1], byVal[2], byVal[3]);
                        InvalidateRect(GetParent(hDlg), NULL, TRUE);
                        return TRUE;
                    default:
                        return FALSE;
                }
            }
            return FALSE;
    }
    return FALSE;
}

#endif // IPDLG_H
