}
// The one and only CChatCppApp object
CChatCppApp theApp;
// CChatCppApp initialization
BOOL CChatCppApp::InitInstance()
{
//InitCommonControls () требуется на WindowsXP, если прикладная декларация //определяет использование ComCtl32.dll версии 6 или позже позволить визуальные стили.
//Иначе, любое создание окна потерпит неудачу.
InitCommonControls();
CWinApp::InitInstance();
AfxEnableControlContainer();
if (!AfxSocketInit())
{
AfxMessageBox("Нет инициализации сокета!");
return FALSE;
}
CChatCppDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}
/////////////////////////////////////////////////////////БЛОК 3////////////////////////////////////////////////////////////////
СОКЕТ:
#include "stdafx.h"
#include "ChatCppDlg.h"
#include "Sock.h"
CSock::CSock()
: m_pParent(NULL)
{
}
CSock::~CSock()
{
}
/////////////////////////////////////////////////////////БЛОК 3.1////////////////////////////////////////////////////////////////
// Событие подключения на стороне клиентского приложения.
void CSock::OnConnect(int nErrorCode)
{
CChatCppDlg* pDlg = (CChatCppDlg*)m_pParent;
nErrorCode == 0 ? pDlg->OnConnect(FALSE) : pDlg->OnConnect(TRUE);
CAsyncSocket::OnConnect(nErrorCode);
}
/////////////////////////////////////////////////////////БЛОК 3.1////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////БЛОК 3.2////////////////////////////////////////////////////////////////
// Событие отключения от сети
void CSock::OnClose(int nErrorCode)
{
Beep(2000, 300);
CAsyncSocket::OnClose(nErrorCode);
}
/////////////////////////////////////////////////////////БЛОК 3.2////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////БЛОК 3.3////////////////////////////////////////////////////////////////
// Событие возможности получения сообщений.
void CSock::OnReceive(int nErrorCode)
{
CChatCppDlg* pDlg = (CChatCppDlg*)m_pParent;
pDlg->OnReceive();
CAsyncSocket::OnReceive(nErrorCode);
}
/////////////////////////////////////////////////////////БЛОК 3.3////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////БЛОК 3.4////////////////////////////////////////////////////////////////
// Запрос на подключение, направляемый клиентом серверу.
// Происходит на стороне серверного приложения.
void CSock::OnAccept(int nErrorCode)
{
CChatCppDlg* pDlg = (CChatCppDlg*)m_pParent;
pDlg->OnAccept();
CAsyncSocket::OnAccept(nErrorCode);
}
/////////////////////////////////////////////////////////БЛОК 3.4////////////////////////////////////////////////////////////////
5.Результат работы программы.
Результатом работы программы стал обмен текстовой информацией между удаленными компьютерами локальной сети.
Окно первого запуска
Окно сервера и окно клиента
Проверка отправки и прихода сообщений
6.Преимущества и недостатки приложения.
Программа обмена текстовыми сообщениями получилась простой, без большого количества дополнительных функций. Приятный интерфейс интуитивно понятен. Из дополнительных возможностей можно отменить выбор цвета и других атрибутов для отправляемых сообщений. Также на главной форме есть ползунок, с помощью которого мы можем сделать нашу программу прозрачной, на тот случай если это кому-нибудь когда-нибудь пригодится. Еще одним достоинством программы является то, что ее можно написать самому за пару часов, если у Вас вдруг (по странному стечению обстоятельств) под рукой не будет ни одной другой прогммы по обмену текстовыми сообщениями. Программу также можно свернуть в трей, что тоже иногда бывает очень полезным.
К минусам программы можно отнести почти полную неконкурентоспособность – почти на любом компьютере установлен NetMeeting, поставляемый с Windows, а сторонними разработчиками выпущено много других, еще более удобных и функциональных программ для обмена текстовыми сообщениями. Хотя возможно кто то найдет изюминку именно в этой программе, и она станет для него самым удобным и функциональным – о вкусах не спорят.
7.Заключение
При выполнении данной курсовой работы были освоены основы визуального программирования, получены навыки работы с интегрированной средой разработчика и интерфейсом среды визуального программирования C++Builder.
Также в процессе выполнения курсового проекта были изучены компоненты классов TForm, TLabel, TMemo, TBitBtn, TScrollBox, TButton, TPopupMenu, TActionList, TMainmenu, TPanel, TBevel, TTrayIcon, TStringGrid и другие . Мы ознакомились со специальными методами для работы с этими компонентами, научились обрабатывать реакцию этих компонентов на события, научились эффективно и эстетично использовать рабочее пространство формы и освоились со специфичностью написания программ на C++Builder(модульность).
Стало ясно, что роль модулей в C++Builder. не исчерпывается только механизмом раздельной компиляции. C++Builder. связывает с каждым включаемым в программу окном собственный модуль и таким способом локализует все свойства окна в отдельной программной единице. Выяснили, что основная программа весьма специфична: она содержит перечень всех используемых в программе модулей и несколько исполняемых операторов, обеспечивающих создание нужных окон и связь программы с Windows. Вся основная работа программы управляется кодом, содержащимся в модулях.
8.Список литературы
1. Фаронов В. В. DelphiПрограммирование на языке высокого уровня. – М.: «ПИТЕР», 2006. – 639 с.
2. Камилова А. М. Методические указания для выполнения лабораторных работ по дисциплине «Среды визуального программирования», обе части.
3. Конспекты лекций по предмету «Среды визуального программирования», преподаватель Камилова А. М.
4. Баженова И. Ю. «Delphi6 Самоучитель программиста», Кудиц-Образ, Москва, 2002.-345 с.