Commit b60544b9 by PotatoGim

First Commit

parents
// AboutDlg.cpp : 구현 파일입니다.
//
#include "stdafx.h"
#include "PuppyOnC.h"
#include "AboutDlg.h"
// CAboutDlg 대화 상자입니다.
IMPLEMENT_DYNAMIC(CAboutDlg, CDialog)
CAboutDlg::CAboutDlg(CWnd* pParent /*=NULL*/)
: CDialog(CAboutDlg::IDD, pParent)
{
}
CAboutDlg::~CAboutDlg()
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
// CAboutDlg 메시지 처리기입니다.
#pragma once
// CAboutDlg 대화 상자입니다.
class CAboutDlg : public CDialog
{
DECLARE_DYNAMIC(CAboutDlg)
public:
CAboutDlg(CWnd* pParent = NULL); // 표준 생성자입니다.
virtual ~CAboutDlg();
// 대화 상자 데이터입니다.
enum { IDD = ID_APP_ABOUT };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
DECLARE_MESSAGE_MAP()
};
// AddMylistDlg.cpp : 구현 파일입니다.
//
#include "stdafx.h"
#include "PuppyOnC.h"
#include "AddMylistDlg.h"
// CAddMylistDlg 대화 상자입니다.
IMPLEMENT_DYNAMIC(CAddMylistDlg, CDialog)
CAddMylistDlg::CAddMylistDlg(CWnd* pParent /*=NULL*/)
: CDialog(CAddMylistDlg::IDD, pParent)
, m_strId(_T(""))
{
}
CAddMylistDlg::~CAddMylistDlg()
{
}
void CAddMylistDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_strId);
}
BEGIN_MESSAGE_MAP(CAddMylistDlg, CDialog)
ON_BN_CLICKED(IDOK, OnBnClickedOk)
END_MESSAGE_MAP()
// CAddMylistDlg 메시지 처리기입니다.
void CAddMylistDlg::OnBnClickedOk()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
UpdateData(TRUE);
if(strlen(m_strId) < 3)
{
AfxMessageBox(_T("필요한 정보를 입력하지 않았습니다."));
return;
}
OnOK();
}
#pragma once
// CAddMylistDlg 대화 상자입니다.
class CAddMylistDlg : public CDialog
{
DECLARE_DYNAMIC(CAddMylistDlg)
public:
CAddMylistDlg(CWnd* pParent = NULL); // 표준 생성자입니다.
virtual ~CAddMylistDlg();
// 대화 상자 데이터입니다.
enum { IDD = IDD_ADDMYLISTDLG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
DECLARE_MESSAGE_MAP()
public:
CString m_strId;
afx_msg void OnBnClickedOk();
};
#if !defined(AFX_BITMAPDIALOG_H__A76F9E74_DF43_11D4_AE27_4854E828E6FD__INCLUDED_)
#define AFX_BITMAPDIALOG_H__A76F9E74_DF43_11D4_AE27_4854E828E6FD__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
// BitmapDialog.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CBitmapDialog dialog
class CBitmapDialog : public CDialog
{
// Construction
public:
// Common constructor
void Constructor (LPCTSTR lpszResourceName, UINT nIDResource,
LPCTSTR lpszFilename, CBitmap *pBitmap);
CBitmapDialog (LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL,
LPCTSTR lpszResourceName = NULL, UINT nIDResource = 0,
LPCTSTR lpszFilename = NULL, CBitmap *pBitmap = NULL);
CBitmapDialog (UINT nIDTemplate, CWnd* pParentWnd = NULL,
LPCTSTR lpszResourceName = NULL, UINT nIDResource = 0,
LPCTSTR lpszFilename = NULL, CBitmap *pBitmap = NULL);
CBitmapDialog (LPCTSTR lpszResourceName = NULL, UINT nIDResource = 0,
LPCTSTR lpszFilename = NULL, CBitmap *pBitmap = NULL);
// Destructor (just release the bitmap)
~CBitmapDialog () { ReleaseBitmap (); }
// Bitmap
BOOL LoadBitmap (LPCTSTR lpszResourceName,
LPCTSTR lpszFilename); // Load from resource or file
BOOL LoadBitmap (UINT nIDResource); // Load from resource
BOOL CopyBitmapFrom (CBitmap *pBitmap); // Copy of user defined
void SetBitmap (CBitmap *pBitmap); // User defined
void ReleaseBitmap ();
CBitmap *GetBitmap () { return m_bmBitmap; }
// Transparency
void SetTransparent (BOOL bTransparent);
BOOL GetTransparent () { return m_bTransparent; }
void SetTransColor (COLORREF col);
COLORREF GetTransColor () { return m_colTrans; }
// Static control transparency
void SetStaticTransparent (BOOL bTransparent) { m_bStaticTransparent = bTransparent; }
BOOL GetStaticTransparent () { return m_bStaticTransparent; }
// Clicking anywhere moves
void SetClickAnywhereMove (BOOL bMove) { m_bClickAnywhereMove = bMove; }
BOOL GetClickAnywhereMove () { return m_bClickAnywhereMove; }
// Dialog Data
//{{AFX_DATA(CBitmapDialog)
// NOTE: the ClassWizard will add data members here
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CBitmapDialog)
protected:
//}}AFX_VIRTUAL
// Implementation
protected:
void MakeWindowRgn ();
// Transparency
BOOL m_bTransparent;
BOOL m_bStaticTransparent;
HBRUSH m_brushHollow;
COLORREF m_colTrans;
// Clicking anywhere moves
BOOL m_bClickAnywhereMove;
// Bitmap and its DC
BOOL m_bBitmapCreated, m_bBitmapExists;
CBitmap *m_bmBitmap;
// Generated message map functions
//{{AFX_MSG(CBitmapDialog)
afx_msg BOOL OnEraseBkgnd (CDC *pDC);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_BITMAPDIALOG_H__A76F9E74_DF43_11D4_AE27_4854E828E6FD__INCLUDED_)
// ChangeNameDlg.cpp : 구현 파일입니다.
//
#include "stdafx.h"
#include "PuppyOnC.h"
#include "ChangeNameDlg.h"
// CChangeNameDlg 대화 상자입니다.
IMPLEMENT_DYNAMIC(CChangeNameDlg, CDialog)
CChangeNameDlg::CChangeNameDlg(CWnd* pParent /*=NULL*/)
: CDialog(CChangeNameDlg::IDD, pParent)
, m_strName(_T(""))
{
}
CChangeNameDlg::~CChangeNameDlg()
{
}
void CChangeNameDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_strName);
}
BEGIN_MESSAGE_MAP(CChangeNameDlg, CDialog)
ON_BN_CLICKED(IDOK, &CChangeNameDlg::OnBnClickedOk)
END_MESSAGE_MAP()
// CChangeNameDlg 메시지 처리기입니다.
void CChangeNameDlg::OnBnClickedOk()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
OnOK();
}
#pragma once
// CChangeNameDlg 대화 상자입니다.
class CChangeNameDlg : public CDialog
{
DECLARE_DYNAMIC(CChangeNameDlg)
public:
CChangeNameDlg(CWnd* pParent = NULL); // 표준 생성자입니다.
virtual ~CChangeNameDlg();
// 대화 상자 데이터입니다.
enum { IDD = IDD_CHANGENAME };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
DECLARE_MESSAGE_MAP()
public:
CString m_strName;
afx_msg void OnBnClickedOk();
};
// ConnectDlg.cpp : 구현 파일입니다.
//
#include "stdafx.h"
#include "PuppyOnC.h"
#include "ConnectDlg.h"
// CConnectDlg 대화 상자입니다.
IMPLEMENT_DYNAMIC(CConnectDlg, CDialog)
CConnectDlg::CConnectDlg(CWnd* pParent /*=NULL*/)
: CDialog(CConnectDlg::IDD, pParent)
, m_strId(_T(""))
, m_strPass(_T(""))
, m_strServerIP(_T(""))
{
CFile file;
if(file.Open(_T("serverip.conf"), CFile::modeRead))
{
CArchive ar(&file, CArchive::load);
ar >> m_strServerIP;
ar.Close();
}
else
{
m_strServerIP = "127.0.0.1";
}
}
CConnectDlg::~CConnectDlg()
{
CFile file;
if(file.Open(_T("serverip.dat"), CFile::modeCreate | CFile::modeWrite))
{
CArchive ar(&file, CArchive::store);
ar << m_strServerIP;
ar.Close();
}
}
void CConnectDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_strServerIP);
DDX_Text(pDX, IDC_EDIT2, m_strId);
DDX_Text(pDX, IDC_EDIT3, m_strPass);
}
BEGIN_MESSAGE_MAP(CConnectDlg, CDialog)
ON_BN_CLICKED(IDOK, OnBnClickedOk)
END_MESSAGE_MAP()
// CConnectDlg 메시지 처리기입니다.
void CConnectDlg::OnBnClickedOk()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
UpdateData(TRUE);
if(strlen(m_strId) < 3 || strlen(m_strId) > 20 || strlen(m_strPass) < 3 || m_strServerIP == "")
{
AfxMessageBox(_T("다시 입력해 주십시오"));
return;
}
OnOK();
}
#pragma once
// CConnectDlg 대화 상자입니다.
class CConnectDlg : public CDialog
{
DECLARE_DYNAMIC(CConnectDlg)
public:
CConnectDlg(CWnd* pParent = NULL); // 표준 생성자입니다.
virtual ~CConnectDlg();
// 대화 상자 데이터입니다.
enum { IDD = IDD_CONNECT };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 지원입니다.
DECLARE_MESSAGE_MAP()
public:
CString m_strServerIP;
CString m_strId;
CString m_strPass;
afx_msg void OnBnClickedOk();
};
// Data.cpp : 구현 파일입니다.
//
#include "stdafx.h"
#include "PuppyOnC.h"
#include "Data.h"
// CData
CData::CData()
: m_strData(_T("")),
m_strDestId(_T("")),
m_strId(_T("")),
m_strName(_T("")),
m_strPass(_T("")),
m_mylistnum(0)
{
}
CData::~CData()
{
}
// CData 멤버 함수입니다.
void CData::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{ // storing code 네트워크로 송신
ar << m_flag;
ar << m_result;
ar << m_strId;
ar << m_strPass;
ar << m_strName;
ar << m_strData;
ar << m_strDestId;
ar << m_mylistnum;
for(int i=0;i<m_mylistnum;i++){
ar << m_mylist[i];
}
}
else
{ // loading code 네트워크에서 수신
ar >> m_flag;
ar >> m_result;
ar >> m_strId;
ar >> m_strPass;
ar >> m_strName;
ar >> m_strData;
ar >> m_strDestId;
ar >> m_mylistnum;
for(int i=0;i<m_mylistnum;i++){
ar >> m_mylist[i];
}
}
}
void CData::Setdata(int flag, bool result, CString id, CString name, CString data, CString dest_id, CString pass)
{
m_flag=flag;
m_strId=id;
m_strName=name;
m_strData=data;
m_strDestId=dest_id;
m_strPass=pass;
m_result=result;
}
void CData::SetLogindata(int flag, CString id, CString pass)
{
m_flag=flag;
m_strId=id;
m_strName="";
m_strData="";
m_strDestId="";
m_strPass=pass;
m_result=true;
}
#pragma once
// CData Դϴ.
class CData : public CObject
{
public:
CData();
virtual ~CData();
virtual void Serialize(CArchive& ar);
int m_flag;
CString m_strId;
CString m_strPass;
CString m_strName;
CString m_strData;
CString m_strDestId;
CString m_mylist[100];
int m_mylistnum;
bool m_result;
void Setdata(int flag, bool result=true, CString id="", CString name="", CString data="", CString dest_id="", CString pass="");
void SetLogindata(int flag, CString id, CString pass);
};
// DataSocket.cpp : 구현 파일입니다.
//
#include "stdafx.h"
#include "PuppyOnC.h"
#include "DataSocket.h"
#include "Data.h"
#include "PuppyOnCDlg.h"
// CDataSocket
CDataSocket::CDataSocket()
{
}
CDataSocket::CDataSocket(CChatCDlg * dlg)
{
m_pDlg = dlg;
}
CDataSocket::~CDataSocket()
{
}
// CDataSocket 멤버 함수입니다.
void CDataSocket::Init(CChatCDlg * dlg)
{
m_pDlg = dlg;
m_pFile = new CSocketFile(this);
m_pArIn = new CArchive(m_pFile, CArchive::load);
m_pArOut = new CArchive(m_pFile, CArchive::store);
}
void CDataSocket::Send(CData * pData)
{
if(m_pArOut != NULL)
pData->Serialize(*m_pArOut);
}
void CDataSocket::Receive(CData * pData)
{
if(m_pArIn != NULL)
pData->Serialize(*m_pArIn);
}
void CDataSocket::operator <<(CData & data)
{
Send(&data);
Flush();
}
void CDataSocket::operator >>(CData & data)
{
Receive(&data);
}
void CDataSocket::Flush()
{
if(m_pArOut!=NULL)
m_pArOut->Flush();
}
void CDataSocket::OnReceive(int nErrorCode)
{
// TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
if(m_pArIn == NULL) return;
m_pDlg->OnReceive(this);
CSocket::OnReceive(nErrorCode);
}
void CDataSocket::OnClose(int nErrorCode)
{
// TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
if(m_pFile != NULL){
delete m_pFile;
m_pFile = NULL;
}
if(m_pArIn != NULL){
m_pArIn->Abort();
delete m_pArIn;
m_pArIn = NULL;
}
if(m_pArOut != NULL){
m_pArOut->Abort();
delete m_pArOut;
m_pArOut = NULL;
}
m_pDlg->OnDisconnectClient(this);
CSocket::OnClose(nErrorCode);
}
#pragma once
// CDataSocket Դϴ.
class CChatCDlg;
class CData;
class CDataSocket : public CSocket
{
public:
CDataSocket();
CDataSocket(CChatCDlg * dlg);
virtual ~CDataSocket();
void Init(CChatCDlg * dlg);
void Send(CData * pData);
void Receive(CData * pData);
void operator <<(CData & data);
void operator >>(CData & data);
void Flush();
CArchive *m_pArIn;
CArchive *m_pArOut;
virtual void OnReceive(int nErrorCode);
virtual void OnClose(int nErrorCode);
private:
CSocketFile *m_pFile;
CChatCDlg *m_pDlg;
};
// JoinDlg.cpp : 구현 파일입니다.
//
#include "stdafx.h"
#include "PuppyOnC.h"
#include "JoinDlg.h"
// CJoinDlg 대화 상자입니다.
IMPLEMENT_DYNAMIC(CJoinDlg, CDialog)
CJoinDlg::CJoinDlg(CWnd* pParent /*=NULL*/)
: CDialog(CJoinDlg::IDD, pParent)
, pass(_T(""))
, id(_T(""))
, name(_T(""))
, serverip(_T(""))
{
CFile file;
if(file.Open(_T("serverip.conf"), CFile::modeRead))
{
CArchive ar(&file, CArchive::load);
ar >> serverip;
ar.Close();
}
else
{
serverip = "127.0.0.1";
}
}
CJoinDlg::~CJoinDlg()
{
}
void CJoinDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, 1005, id);
DDX_Text(pDX, 1006, pass);
DDX_Text(pDX, 1007, name);
DDX_Text(pDX, IDC_EDIT1, serverip);
}
BEGIN_MESSAGE_MAP(CJoinDlg, CDialog)
ON_BN_CLICKED(IDOK, OnBnClickedOk)
END_MESSAGE_MAP()
// CJoinDlg 메시지 처리기입니다.
void CJoinDlg::OnBnClickedOk()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
UpdateData(TRUE);
if(id.IsEmpty() || pass.IsEmpty() || name.IsEmpty())
{
AfxMessageBox(_T("필요한 정보를 입력하지 않았습니다."));
}
else if(strlen(id)>20 || strlen(id)<3){
AfxMessageBox(_T("아이디는 3자 이상, 20자 이하로 입력해주십시오."));
}
else if(strlen(pass)>20 || strlen(pass)<3){
AfxMessageBox(_T("비밀번호는 3자 이상, 20자 이하로 입력해주십시오."));
}
else if(strlen(name)>100){
AfxMessageBox(_T("대화명은 100자 이하로 입력해주십시오."));
}
else{
CDialog::OnOK();
}
}
#pragma once
// CJoinDlg 대화 상자입니다.
class CJoinDlg : public CDialog
{
DECLARE_DYNAMIC(CJoinDlg)