Поле для ввода IP адреса (IP address control)

Поле для ввода IP адреса позволяет пользователю ввести адрес в доступной форме. Этот элемент управления также позволяет приложению получить адрес в числовой форме, а не в текстовом виде.

Этот орган управления позволяет вводить только числовые значения, которые пользователь может вводить в каждой из четырех областей. Как только три цифры введены в одной области, фокус автоматически перемещается в следующую область. Если заполнение всего поля не требуется, пользователь может ввести менее трех цифр.

Для создания органа управления необходимо вызвать функцию CreateWindow или CreateWindowEx. Имя класса для создания органа управления WC_IPADDRESS, который определен в Commctrl.h. Для данного органа управления нет специфических стилей. Достаточно указать стиль WS_CHILD.

Пример создания поля для ввода IP адреса (IP address control):

1
2
3
4
5
6
hIp = CreateWindow(WC_IPADDRESS,
                   NULL, WS_CHILD | WS_VISIBLE,
                   10, 10, 150, 25,
                   hWindow,
                   HMENU(1000),
                   hInstance, 0);

Диапазона по умолчанию для каждого поля от 0 до 255, но приложение может задать любой диапазон , для этого нужно отправить сообщение IPM_SETRANGE.
Параметры сообщения:
wParam — c нуля индекс поля, в котором диапазон будет применяться.
lParam – содержит нижний предел диапазона в нижнем байте и верхний предел в верхнем байте. Для определения нижнего и верхнего пределов используется макрос MAKEIPRANGE

Пример задания диапазона нижнего и верхнего пределов:

1
SendMessage(hIp, IPM_SETRANGE, 1, MAKEIPRANGE(10,20));

Для установки некого значение в поле для ввода IP адреса необходимо отправить сообщение IPM_SETADDRESS.
Параметры сообщения:
wParam – должен быть равен NULL.
lParam – cодержит новый адрес. Значение трельего поля содержится в битах от 0 до 7, значение второго поля содержится в битах с 8 по 15, значение первого поля содержится в битах от 16 до 23, значение нулевого поля содержится в битах 24 до 31. Для определения IP адреса используется макром MAKEIPADDRESS

Пример установки IP адреса:

1
SendMessage(hIp, IPM_SETADDRESS, NULL, MAKEIPADDRESS(110,149,189,100));

Для установки фокуса в поле для ввода IP адреса необходимо отправить сообщение IPM_SETFOCUS. Это сообщение не требует никаких параметров.

Пример установки фокуса:

1
SendMessage(hIp, IPM_SETFOCUS, 0, NULL);

Для получения IP адреса необходимо отправить сообщение IPM_GETADDRESS.
Параметры сообщения:
wParam – должен быть равен NULL.
lParam – cодержит ссылку на переменную, в которую будет помещено значение введенное в поле для ввода IP адреса.

Пример получения IP адреса:

1
SendMessage(hIp, IPM_GETADDRESS, NULL, (LPARAM)(LPDWORD)&CurAddress);

Для получения значений каждого из четырех полей поля для ввода IP адреса используются соответствующие макросы: FIRST_IPADDRESS, SECOND_IPADDRESS, THIRD_IPADDRESS,FOURTH_IPADDRESS.

Пример извлечения IP адреса в переменные типа BYTE:

1
2
3
4
IP1 = FIRST_IPADDRESS((LPARAM)CurAddress);
IP2 = SECOND_IPADDRESS((LPARAM)CurAddress);
IP3 = THIRD_IPADDRESS((LPARAM)CurAddress);
IP4 = FOURTH_IPADDRESS((LPARAM)CurAddress);

Проект — пример работы с полем для ввода IP адреса (IP address control) Visual Studio 2008:
Зеркало 1
Зеркало 2

Оставить комментарий


Примечание - Вы можете использовать эти HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>