Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Labas / Messager / MessagerDlg

.cpp
Скачиваний:
6
Добавлен:
15.06.2014
Размер:
14.77 Кб
Скачать
// MessagerDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Messager.h"
#include "MessagerDlg.h"
#include ".\messagerdlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	enum { IDD = IDD_ABOUTBOX };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

// Implementation
protected:
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()


// CMessagerDlg dialog



CMessagerDlg::CMessagerDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CMessagerDlg::IDD, pParent)
	, m_cln(_T(""))
	, m_but(false)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CMessagerDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_EDIT1, m_cln);
	DDX_Control(pDX, IDC_COMBO1, m_combo);
	DDX_Control(pDX, IDC_EDIT1, m_mk);
	DDX_Control(pDX, IDC_LIST1, m_list);
}

BEGIN_MESSAGE_MAP(CMessagerDlg, CDialog)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	//}}AFX_MSG_MAP
	ON_BN_CLICKED(IDC_BUTTON3, OnBnClickedButton3)
	ON_BN_CLICKED(IDC_BUTTON2, OnBnClickedButton2)
	ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
	ON_BN_CLICKED(IDC_BUTTON4, OnBnClickedButton4)
	ON_BN_CLICKED(IDOK, OnBnClickedOk)
	ON_BN_CLICKED(IDC_BUTTON5, OnBnClickedButton5)
END_MESSAGE_MAP()


// CMessagerDlg message handlers

BOOL CMessagerDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon

	// TODO: Add extra initialization here
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CMessagerDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CMessagerDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this function to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CMessagerDlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}

void CMessagerDlg::OnBnClickedButton3()
{
	m_cln=" ";
UpdateData(FALSE); // Обновить экран

	// TODO: Add your control notification handler code here
}

void CMessagerDlg::OnBnClickedButton2()
{
	WinExec("C:\\Program Files\\server.exe",SW_SHOW );
	// TODO: Add your control notification handler code here
}

void CMessagerDlg::OnBnClickedButton1()
{
	 //активизация окна служебной информации по нажатию
 //кнопки "Send"
	{if (m_but==TRUE)

GetDlgItem(IDC_LIST1)->ShowWindow( SW_HIDE);
else
GetDlgItem(IDC_LIST1)->ShowWindow(SW_SHOW); }


	char buf[500], ss[10], buf2[500];
	struct sockaddr_in sin2;//структура используется Гнездами Окон, чтобы определить
	                       //местный или отдаленный конец, пункт(точка)
	                      //адресует,  чтобы соединить гнездо. 
	CString comp;
    CString mes;
    CString mes00;


	BYTE b;  //восьми-битовое число "b" без знака
	CSocket cs;
	CString sss="";
	CString ww;
	CString www;

	int port1=2000;
	struct hostent *hp; 
	//Получить имя компьютера
	
	m_mk.GetWindowText(mes);
	m_combo.GetWindowText(comp);
	m_combo.AddString(comp);
		//попробовать обнаружить адрес компьютера
	hp=gethostbyname(comp);
	if (hp==NULL)
	{
		m_list.AddString("Компьютер "+comp+" не обнаружен");
			
		return;
	}
	
	//	else m_list.AddString("Это ваш компьютер");

	//представление адреса в стандарте 255.233.44.4
	for(int i=0; i<4; i++)
	{
		b=BYTE(*(hp->h_addr+i));
		itoa(b,ss,10);
		sss=sss+ss;
		if(i!=3) sss=sss+".";
	}
	sss=":"+sss;
	www=" IP"+sss;

	sss=comp+sss;
	ww=comp;
	ww=ww+www;
	sss="Адрес "+sss;
	m_list.AddString(sss);
	//работа со структурой sin2
	memset ((char*)&sin2,'\0',sizeof(sin2));
	sin2.sin_family=AF_INET;
	sin2.sin_port=port1;
	memcpy((char*)&sin2.sin_addr,hp->h_addr,hp->h_length);
	//создать сокет
	if(cs.Create()==0)
	{
		int i=GetLastError();
		itoa(i,ss,10);
		sss=ss;
		sss="Ошибка"+sss;
		m_list.AddString(sss);
		cs.Close();
		return;
	};
	//Попытка соединения с сервером
	if (cs.Connect((struct sockaddr*)&sin2, sizeof(sin2))==0)
	{
		int i=GetLastError();
		itoa(i,ss,10);
		sss=ss;
		sss="Ошибка"+sss;
		m_list.AddString(sss);
		cs.Close();
		return;
	}
	//Получение информации от сервера
	int l=cs.Receive(buf,40);
	if (l>0&&1<100);
	{
		buf[l]='\0';
		strcat(buf," ");
		m_list.AddString(buf);
	};
	//mes="Вам пришло сообщение от адресата: "+ww+"\n"+"----------------"+"\n"+mes; 
	mes00="Вам пришло сообщение от адресата: "+ww+"\n"+"----------------"+"\n"; 
	//Отправка информации сереверу

	strcpy(buf2,mes00);
    strcpy(buf,mes);

    strcat(buf2,buf);


	cs.Send(buf2,strlen(buf2));


	cs.Close();
	// TODO: Add your control notification handler code here
}

void CMessagerDlg::OnBnClickedButton4()
{

	 //активизация окна служебной информации по нажатию
 //кнопки "Send"
	{if (m_but==TRUE)

GetDlgItem(IDC_LIST1)->ShowWindow( SW_HIDE);
else
GetDlgItem(IDC_LIST1)->ShowWindow(SW_SHOW); }


	char buf[500], ss[10], buf2[500];
	struct sockaddr_in sin2;//структура используется Гнездами Окон, чтобы определить
	                       //местный или отдаленный конец, пункт(точка)
	                      //адресует,  чтобы соединить гнездо. 
	CString comp;
    CString mes;
    CString mes00;


	BYTE b;  //восьми-битовое число "b" без знака
	CSocket cs;
	CString sss="";
	CString ww;
	CString www;

	int port1=2000;
	struct hostent *hp; 
	//Получить имя компьютера
	
	m_mk.GetWindowText(mes);
	m_combo.GetWindowText(comp);
	m_combo.AddString(comp);
		//попробовать обнаружить адрес компьютера
	hp=gethostbyname(comp);
	if (hp==NULL)
	{
		m_list.AddString("Компьютер "+comp+" не обнаружен");
			
		return;
	}
	
	//	else m_list.AddString("Это ваш компьютер");

	//представление адреса в стандарте 255.233.44.4
	for(int i=0; i<4; i++)
	{
		b=BYTE(*(hp->h_addr+i));
		itoa(b,ss,10);
		sss=sss+ss;
		if(i!=3) sss=sss+".";
	}
	sss=":"+sss;
	www=" IP"+sss;

	sss=comp+sss;
	ww=comp;
	ww=ww+www;
	sss="Адрес "+sss;
	m_list.AddString(sss);
	//работа со структурой sin2
	memset ((char*)&sin2,'\0',sizeof(sin2));
	sin2.sin_family=AF_INET;
	sin2.sin_port=port1;
	memcpy((char*)&sin2.sin_addr,hp->h_addr,hp->h_length);
	//создать сокет
	if(cs.Create()==0)
	{
		int i=GetLastError();
		itoa(i,ss,10);
		sss=ss;
		sss="Ошибка"+sss;
		m_list.AddString(sss);
		cs.Close();
		return;
	};
	//Попытка соединения с сервером
	if (cs.Connect((struct sockaddr*)&sin2, sizeof(sin2))==0)
	{
		int i=GetLastError();
		itoa(i,ss,10);
		sss=ss;
		sss="Ошибка"+sss;
		m_list.AddString(sss);
		cs.Close();
		return;
	}
	//Получение информации от сервера
	int l=cs.Receive(buf,40);
	if (l>0&&1<100);
	{
		buf[l]='\0';
		strcat(buf," ");
		m_list.AddString(buf);
	};
	//mes="Вам пришло сообщение от адресата: "+ww+"\n"+"----------------"+"\n"+mes; 
	mes00="Вам пришло сообщение от адресата: "+ww+"\n"+"----------------"+"\n"; 
	//Отправка информации сереверу







	strcpy(buf2,mes00);
    strcpy(buf,mes);

     
/*for (int i=0;i<500;i++) {
	switch (buf[i]) {
		case ' ': buf[i]='~'; break;
        case '.': buf[i]='!'; break;
		case ',': buf[i]='@'; break;
		case '-': buf[i]='#'; break;
		case '0': buf[i]='$'; break;
        case '1': buf[i]='%'; break;
	    case '2': buf[i]='^'; break;
		case '3': buf[i]='&'; break;
		case '4': buf[i]='*'; break;
		case '5': buf[i]='q'; break;
        case '6': buf[i]='w'; break;
	    case '7': buf[i]='e'; break;
		case '8': buf[i]='r'; break;
		case '9': buf[i]='t'; break;
		case 'й': buf[i]='y'; break;
        case 'ц': buf[i]='u'; break;
	    case 'у': buf[i]='i'; break;
		case 'к': buf[i]='o'; break;
		case 'е': buf[i]='p'; break;
        case 'н': buf[i]='a'; break;
	    case 'г': buf[i]='s'; break;
		case 'ш': buf[i]='d'; break;
		case 'щ': buf[i]='f'; break;
		case 'з': buf[i]='g'; break;
        case 'х': buf[i]='h'; break;
	    case 'ъ': buf[i]='j'; break;
		case 'ё': buf[i]='k'; break;
		case 'ф': buf[i]='l'; break;
		case 'ы': buf[i]='z'; break;
        case 'в': buf[i]='x'; break;
	    case 'а': buf[i]='c'; break;
		case 'п': buf[i]='v'; break;
		case 'р': buf[i]='b'; break;
        case 'о': buf[i]='n'; break;
	    case 'л': buf[i]='m'; break;
		case 'д': buf[i]=':'; break;
		case 'ж': buf[i]=';'; break;
		case 'э': buf[i]='й'; break;
        case 'я': buf[i]='ц'; break;
	    case 'ч': buf[i]='у'; break;
		case 'с': buf[i]='к'; break;
		case 'м': buf[i]='е'; break;
		case 'и': buf[i]='н'; break;
        case 'т': buf[i]='г'; break;
	    case 'ь': buf[i]='ш'; break;
		case 'б': buf[i]='щ'; break;
		case 'ю': buf[i]='з'; break;
        case 'q': buf[i]='д'; break;
	    case 'w': buf[i]='л'; break;
		case 'e': buf[i]='о'; break;
		case 'r': buf[i]='р'; break;
		case 't': buf[i]='п'; break;
        case 'y': buf[i]='а'; break;
	    case 'u': buf[i]='в'; break;
		case 'i': buf[i]='ы'; break;
		case 'o': buf[i]='ф'; break;
		case 'p': buf[i]='я'; break;
	    case 'a': buf[i]='ч'; break;
		case 's': buf[i]='с'; break;
		case 'd': buf[i]='м'; break;
		case 'f': buf[i]='и'; break;
        case 'g': buf[i]='т'; break;
	    case 'h': buf[i]='ь'; break;
		case 'j': buf[i]='<'; break;
		case 'k': buf[i]='>'; break;
        case 'l': buf[i]='"'; break;
	    case 'z': buf[i]='`'; break;
		case 'x': buf[i]='1'; break;
		case 'c': buf[i]='2'; break;
		case 'v': buf[i]='3'; break;
        case 'b': buf[i]='4'; break;
	    case 'n': buf[i]='5'; break;
		case 'm': buf[i]='6'; break;
		case '!': buf[i]='7'; break;
		case '@': buf[i]='8'; break;
	    case '(': buf[i]='9'; break;
		case ')': buf[i]='0'; break;
		case '"': buf[i]='+'; break;


		

	}
                   }*/

    strcat(buf2,buf);

for (int i=0;i<500;i++) {
	switch (buf2[i]) {
		case ' ': buf2[i]='~'; break;
        case '.': buf2[i]='!'; break;
		case ',': buf2[i]='@'; break;
		case '-': buf2[i]='#'; break;
		case '0': buf2[i]='$'; break;
        case '1': buf2[i]='%'; break;
	    case '2': buf2[i]='^'; break;
		case '3': buf2[i]='&'; break;
		case '4': buf2[i]='*'; break;
		case '5': buf2[i]='q'; break;
        case '6': buf2[i]='w'; break;
	    case '7': buf2[i]='e'; break;
		case '8': buf2[i]='r'; break;
		case '9': buf2[i]='t'; break;
		case 'й': buf2[i]='y'; break;
        case 'ц': buf2[i]='u'; break;
	    case 'у': buf2[i]='i'; break;
		case 'к': buf2[i]='o'; break;
		case 'е': buf2[i]='p'; break;
        case 'н': buf2[i]='a'; break;
	    case 'г': buf2[i]='s'; break;
		case 'ш': buf2[i]='d'; break;
		case 'щ': buf2[i]='f'; break;
		case 'з': buf2[i]='g'; break;
        case 'х': buf2[i]='h'; break;
	    case 'ъ': buf2[i]='j'; break;
		case 'ё': buf2[i]='k'; break;
		case 'ф': buf2[i]='l'; break;
		case 'ы': buf2[i]='z'; break;
        case 'в': buf2[i]='x'; break;
	    case 'а': buf2[i]='c'; break;
		case 'п': buf2[i]='v'; break;
		case 'р': buf2[i]='b'; break;
        case 'о': buf2[i]='n'; break;
	    case 'л': buf2[i]='m'; break;
		case 'д': buf2[i]=':'; break;
		case 'ж': buf2[i]=';'; break;
		case 'э': buf2[i]='й'; break;
        case 'я': buf2[i]='ц'; break;
	    case 'ч': buf2[i]='у'; break;
		case 'с': buf2[i]='к'; break;
		case 'м': buf2[i]='е'; break;
		case 'и': buf2[i]='н'; break;
        case 'т': buf2[i]='г'; break;
	    case 'ь': buf2[i]='ш'; break;
		case 'б': buf2[i]='щ'; break;
		case 'ю': buf2[i]='з'; break;
        case 'q': buf2[i]='д'; break;
	    case 'w': buf2[i]='л'; break;
		case 'e': buf2[i]='о'; break;
		case 'r': buf2[i]='р'; break;
		case 't': buf2[i]='п'; break;
        case 'y': buf2[i]='а'; break;
	    case 'u': buf2[i]='в'; break;
		case 'i': buf2[i]='ы'; break;
		case 'o': buf2[i]='ф'; break;
		case 'p': buf2[i]='я'; break;
	    case 'a': buf2[i]='ч'; break;
		case 's': buf2[i]='с'; break;
		case 'd': buf2[i]='м'; break;
		case 'f': buf2[i]='и'; break;
        case 'g': buf2[i]='т'; break;
	    case 'h': buf2[i]='ь'; break;
		case 'j': buf2[i]='<'; break;
		case 'k': buf2[i]='>'; break;
        case 'l': buf2[i]='"'; break;
	    case 'z': buf2[i]='`'; break;
		case 'x': buf2[i]='1'; break;
		case 'c': buf2[i]='2'; break;
		case 'v': buf2[i]='3'; break;
        case 'b': buf2[i]='4'; break;
	    case 'n': buf2[i]='5'; break;
		case 'm': buf2[i]='6'; break;
		case '!': buf2[i]='7'; break;
		case '@': buf2[i]='8'; break;
	    case '(': buf2[i]='9'; break;
		case ')': buf2[i]='0'; break;
		case '"': buf2[i]='+'; break;
		case ':': buf2[i]='?'; break;


		

	}
                   }
	cs.Send(buf2,strlen(buf2));


	cs.Close();
	// TODO: Add your control notification handler code here
}

void CMessagerDlg::OnBnClickedOk()
{
	// TODO: Add your control notification handler code here
	OnOK();
}

void CMessagerDlg::OnBnClickedButton5()
{
	WinExec("C:\\Program Files\\servercode.exe",SW_SHOW );
	// TODO: Add your control notification handler code here
}
Соседние файлы в папке Messager