资源简介
由服务器源码和客户端源码组成,基于TCP/UDP的网络通讯,实现了用户上线下线管理,好友管理,基于HTML的聊天室,基本功能和2000年代的OICQ类似,是学习C++网络编程极好的示例代码。

代码片段和文件信息
// Copyright (c) Iuri Apollonio 1998
// Use & modify as you want & need and leave those 4 lines.
// Strongly based on article “Inplace edit control“ of Mario Contestabile and “Editable subitems“ of Zafir
// http://www.codeguru.com
// GfxGroupEdit.cpp : implementation file
//
#include “stdafx.h“
#include “GfxGroupEdit.h“
#include “GfxOutBarCtrl.h“
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CGfxGroupEdit
CGfxGroupEdit::CGfxGroupEdit()
{
bEscapeKey = FALSE;
iIndex = -1;
msgSend = NM_OB_ONGROUPENDEDIT;
bNoDown = false;
}
CGfxGroupEdit::~CGfxGroupEdit()
{
}
BEGIN_MESSAGE_MAP(CGfxGroupEdit CEdit)
//{{AFX_MSG_MAP(CGfxGroupEdit)
ON_WM_KILLFOCUS()
ON_WM_CREATE()
ON_WM_CHAR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CGfxGroupEdit message handlers
void CGfxGroupEdit::OnKillFocus(CWnd* pNewWnd)
{
PostMessage(WM_CLOSE 0 0);
if (!bEscapeKey)
{
GetWindowText(text);
if (text != ““) GetOwner()->SendMessage(WM_OUTBAR_NOTIFY msgSend (LPARAM) this);
}
}
BOOL CGfxGroupEdit::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->wParam == VK_RETURN)
{
PostMessage(WM_CLOSE 0 0);
return TRUE;
}
else if (pMsg->wParam == VK_ESCAPE)
{
PostMessage(WM_CLOSE 0 0);
return bEscapeKey = TRUE;
}
return CEdit::PreTranslateMessage(pMsg);
}
void CGfxGroupEdit::PostNcDestroy()
{
CEdit::PostNcDestroy();
delete this;
}
int CGfxGroupEdit::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CEdit::OnCreate(lpCreateStruct) == -1)
return -1;
SendMessage(WM_SETFONT(WPARAM) GetStockobject(DEFAULT_GUI_FONT)MAKELPARAM(TRUE0));
return 0;
}
void CGfxGroupEdit::OnChar(UINT nChar UINT nRepCnt UINT nFlags)
{
if (msgSend == NM_OB_ONGROUPENDEDIT)
{
CEdit::OnChar(nChar nRepCnt nFlags);
return;
}
if (nChar == VK_ESCAPE || nChar == VK_RETURN)
{
if (nChar == VK_ESCAPE) bEscapeKey = TRUE;
GetParent()->SetFocus();
return;
}
CEdit::OnChar(nChar nRepCnt nFlags);
CString str;
CRect rect parentrect;
GetClientRect(&rect);
GetParent()->GetClientRect(&parentrect);
ClientToScreen(&rect);
GetParent()->ScreenToClient(&rect);
GetWindowText(str);
CWindowDC dc(this);
CFont *pFont = GetParent()->GetFont();
CFont *pFontDC = dc.Selectobject(pFont);
CRect szrc(rect);
szrc.bottom = szrc.top;
if (bNoDown == true)
{
dc.DrawText(str szrc DT_CALCRECT);
if (szrc.right >= parentrect.right - 1) rect.right = parentrect.right - 1;
else rect.right = szrc.right;
MoveWindow(&rect);
return;
}
dc.DrawText(str szrc DT_WORDBREAK|DT_CENTER|DT_CALCRECT);
dc.Selectobject(pFontDC);
CSize size = szrc.Size();
if (size.cx > rect.Width())
{
if (size.cx + rect.left < parentrect.right) rect.right =
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 25353 2000-04-05 09:08 QICQ\Img_ListView1\10000.DAT
文件 25353 2014-01-02 18:48 QICQ\Img_ListView1\10001.DAT
文件 25353 2000-04-26 08:40 QICQ\Img_ListView1\10002.DAT
文件 25353 2000-04-26 08:41 QICQ\Img_ListView1\10003.DAT
文件 25353 2000-04-26 08:41 QICQ\Img_ListView1\10004.DAT
文件 25353 2000-04-06 11:53 QICQ\Img_ListView1\10005.DAT
文件 25353 2000-04-05 10:39 QICQ\Img_ListView1\10006.DAT
文件 25353 2000-04-04 19:17 QICQ\Img_ListView1\10007.DAT
文件 25353 2000-04-04 16:19 QICQ\Img_ListView1\10008.DAT
文件 25353 2000-04-04 16:19 QICQ\Img_ListView1\34477.DAT
文件 126 1998-07-21 18:00 QICQ\Img_ListView1\AutoBuildCount.h
文件 2098 2000-04-05 08:16 QICQ\Img_ListView1\FONT.CPP
文件 1461 2000-04-05 08:16 QICQ\Img_ListView1\FONT.H
文件 3282 2000-04-03 08:09 QICQ\Img_ListView1\GfxGroupEdit.cpp
文件 1699 1998-07-05 20:06 QICQ\Img_ListView1\GfxGroupEdit.h
文件 61666 2003-05-14 19:45 QICQ\Img_ListView1\GfxOutBarCtrl.cpp
文件 7548 2000-04-04 20:39 QICQ\Img_ListView1\GfxOutBarCtrl.h
文件 15292 2000-04-03 08:09 QICQ\Img_ListView1\GfxPopupMenu.cpp
文件 1750 1998-07-03 22:28 QICQ\Img_ListView1\GfxPopupMenu.h
文件 10782 2000-04-03 08:09 QICQ\Img_ListView1\GfxSplitterWnd.cpp
文件 1115 1998-07-06 12:02 QICQ\Img_ListView1\GfxSplitterWnd.h
文件 68196 2010-11-09 20:28 QICQ\Img_ListView1\Img_ListView1.aps
文件 5657 2014-01-02 20:12 QICQ\Img_ListView1\Img_ListView1.clw
文件 5818 2003-05-16 10:23 QICQ\Img_ListView1\Img_ListView1.cpp
文件 9240 2000-05-09 16:36 QICQ\Img_ListView1\Img_ListView1.dsp
文件 651 2001-10-07 10:03 QICQ\Img_ListView1\Img_ListView1.dsw
文件 1433 2000-04-03 08:26 QICQ\Img_ListView1\Img_ListView1.h
文件 443392 2014-01-02 20:12 QICQ\Img_ListView1\Img_ListView1.ncb
文件 82944 2014-01-02 20:12 QICQ\Img_ListView1\Img_ListView1.opt
文件 5572 2014-01-02 18:47 QICQ\Img_ListView1\Img_ListView1.plg
............此处省略110个文件信息
- 上一篇:用C语言编写的井字棋小游戏
- 下一篇:获取系统安装软件(vc++源码)
相关资源
- Qt TCP聊天室demo
- MFC多人聊天室
- Windows+C语言构建网络聊天室内含源程
- MFC聊天室含源代码.rar
- P2P 聊天室 c++ 版本 附详细文档
- vc++课程设计——聊天室
- C++做的一个聊天室程序
- vc-基于MFC编程,使用TCP/IP模型编写
- c++实现语音聊天室
- 计算机网络实验设计---基于TCP的网络
- VC+++聊天室程序设计
- TCP/IP实现 简易聊天室 C++
- VC++局域网聊天室完整版
- VC++ socket 聊天室客户端
- C++ MFC 编写的聊天室软件源码
- VC++多人聊天室
- 计算机网络实验-----基于TCP的网络聊天
- socket编程聊天室C++
- MFC 聊天室 高级
- 基于TCP的网络聊天室的设计一步一步
- vc6.0实现的局域网聊天室MFC+SOCKRT
- MFC TCP/IP 网络 多人聊天室
- 多人聊天室 C++
- MFC局域网聊天室C++
- 基于TCP的网络聊天室的设计
- 网络调试助手---开发环境:VC++6.0 基于
- 基于MFC的聊天室网络socket
- 基于MFC基本对话框的CSocket局域网通信
- 基于MFC的简单网络聊天室
- C++ CAsyncSocket类聊天室程序
评论
共有 条评论