Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учеб_пос_Виз_сред_разраб_прилож.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
1.34 Mб
Скачать

4.4.1. Создание каркаса приложения

Создаем новый MFC-проект с помощью мастера приложений AppWisard и даем этому проекту имя, например, Sock. На первом шаге указывается, что приложение будет диалоговым, на втором шаге не забываем указать, что приложение будет использовать поддержку для Windows Socket. Далее выбираем кнопку Finish.

Внешний вид окна и начальные действия

После того как создан каркас приложения, приступаем к созданию внешнего вида окна. Здесь нужно создать набор радиокнопок, с помощью которых можно установить параметры приложения, а именно, является ли данная копия приложения клиентской или серверной. Затем нам понадобится пара окон для редактирования текста, в которых мы будем указывать имя компьютера и номер порта, на котором будет слушать сервер. Нам нужна командная кнопка, которая будет заставлять сервер приступать к прослушиванию на сокете или же заставлять клиента устанавливать соединение с сервером, а также кнопка, которая позволит закрывать соединение. Кроме того, нам понадобится окно для редактирования текста, в которое мы будем вводить сообщение, предназначенное для передачи другому приложению, и кнопка, которая будет осуществлять такую передачу.

Наконец, нужно иметь пару окон для списка, в которые будут помещаться переданные и полученные сообщения. Расположим все эти элементы управления в соответствии с тем, как показано на рис.4.1, а свойства элементов управления зададим в соответствии с табл.4.2.

Р ис.4.1. Расположение элементов управления

Таблица 4.2

Параметры элементов управления

Объект

Свойства

Значение

1

2

3

Group Box

ID

IDC_STATICTYPE

Caption

Socket Type

RadioButton

ID

IDC_RCLIENT

Caption

&Client

Group

Checked

RadioButton

ID

IDC_RSERVER

Caption

&Server

Static Text

ID

IDC_STATICNAME

Caption

Server &Name:

Edit Box

ID

IDC_ESERVNAME

Static Text

ID

IDC_STATICPORT

Caption

Server &Port:

Edit Box

ID

IDC_ESERVPORT

Command Button

ID

IDC_BCONNECT

Caption

C&onnect

Command Button

ID

IDC_BCLOSE

Caption

C&lose

Disabled

Checked

Static Text

ID

IDC_STATICMSG

Caption

&Message:

Disabled

Checked

Edit Box

ID

IDC_EMSG

Disabled

Checked

Command Button

ID

IDC_BSEND

Caption

S&end

Disabled

Checked

Static Text

ID

IDC_STATIC

Caption

Sent:

List Box

ID

I

Окончание табл.4.2

DC_LSENT

Tab Stop

Unchecket

1

2

3

Selection

None

Static Text

ID

IDC_STATIC

Caption

Received:

List Box

ID

IDC_LRECVD

Tab Stop

Unchecket

Sort

Unchecket

Selection

None

После того как основа диалогового окна сконструирована, открываем «Матер классов» и создаем переменные для элементов контроля в соответствии с переменными элементов управления (табл.4.3).

Таблица 4.3

Переменные элементов управления

Объект

Имя

Категория

Тип

IDC_BCONNECT

m_ctlConnect

Control

CButton

IDC_EMSG

m_strMessage

Value

CString

IDC_ESERVNAME

m_strName

Value

CString

IDC_ESERVPORT

m_iPort

Value

int

IDC_LRECVD

m_ctlRecvd

Control

CListBox

IDC_LSENT

m_ctlSent

Control

CListBox

IDC_RCLIENT

m_iType

Value

int

Чтобы иметь возможность использовать кнопку CONNECT повторно и поставить приложение-сервер "прослушивать" в ожидании соединения, нужно вставить функцию к радиокнопкам; текст, изображаемый на командной кнопке, зависит от того, какая выбрана радиокнопка. Чтобы вставить требуемую функцию, соответствующую сообщению о событии BN_CLICKED для идентификатора IDC_RCLIENT, используем имя функции OnRType. Вставим такую же функцию для события BN_CLICKED для элемента управления с идентификатором IDC_RSERVER. Функция имеет вид:

void CSockDlg::OnRType()

{

//Синхронизируем элементы управления в соответствии с переменными

UpdateDate(TRUE);

//В каком мы режиме?

if (m_iType == 0) //Устанавливаем текст на кнопке

m_ctlConnect.SetWindowText("C&onnect");

else

m_ctlConnect.SetWindowText("&Listen");}

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