www.gusucode.com > 一个比较完整的VC++仿QQ聊天源码源码程序 > 一个比较完整的VC++仿QQ聊天源码/fakeQQ/fakeQQ/SendMsgDlg.cpp
// SendMsgDlg.cpp : implementation file // #include "stdafx.h" #include "FakeQQ.h" #include "MsgInfo.h" #include "SendMsgDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CSendMsgDlg dialog CSendMsgDlg::CSendMsgDlg(CUserInfo * pToUser, CWnd* pParent /*=NULL*/) : CDialog(CSendMsgDlg::IDD, pParent) { //{{AFX_DATA_INIT(CSendMsgDlg) m_Msg = _T(""); //}}AFX_DATA_INIT m_pToUser = pToUser; m_LocalIp = ::MyInfo.m_Ip; m_LoginName = ::MyInfo.m_UserName; m_UdpPort.Format("%d", ::MyInfo.m_Port); } void CSendMsgDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CSendMsgDlg) DDX_Control(pDX, IDC_TO_PORT, m_ToPort); DDX_Control(pDX, IDC_TO_IP, m_ToIp); DDX_Text(pDX, IDC_CHAT_MSG, m_Msg); DDV_MaxChars(pDX, m_Msg, 250); DDX_Text(pDX, IDC_LOCAL_IP, m_LocalIp); DDX_Text(pDX, IDC_LOGIN_NAME, m_LoginName); DDX_Text(pDX, IDC_TO_USER, m_ToUser); DDX_Text(pDX, IDC_UDP_PORT, m_UdpPort); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CSendMsgDlg, CDialog) //{{AFX_MSG_MAP(CSendMsgDlg) ON_BN_CLICKED(ID_SEND_MSG, OnSendMsg) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CSendMsgDlg message handlers void CSendMsgDlg::OnSendMsg() { UpdateData(true); CMsgInfo Msg; Msg.m_FromUser = ::MyInfo; strcpy(Msg.m_Msg, m_Msg); Msg.m_Time = time(NULL); CString ToIp; CString ToPort; m_ToIp.GetWindowText(ToIp); m_ToPort.GetWindowText(ToPort); if(::ChatSocket.SendTo(&Msg, sizeof(CMsgInfo), atoi(ToPort), ToIp) != SOCKET_ERROR) OnCancel(); else { MessageBox("发送讯息失败!"); } } BOOL CSendMsgDlg::OnInitDialog() { CDialog::OnInitDialog(); if(!m_pToUser) { m_ToUser = _T(":)"); m_ToPort.SetWindowText("40000"); m_ToIp.SetWindowText(::MyInfo.m_Ip); } else { m_ToUser = m_pToUser->m_UserName; m_ToIp.SetWindowText(m_pToUser->m_Ip); CString ToPort; ToPort.Format("%d", m_pToUser->m_Port); m_ToPort.SetWindowText(ToPort); m_ToIp.SetReadOnly(); m_ToPort.SetReadOnly(); } UpdateData(false); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }