资源简介
由服务器源码和客户端源码组成,基于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++源码)
相关资源
- C++网络聊天室程序
- VS2012 MFC小程序 简易网络聊天室
- 简单多线程socket聊天室程序(c语言)
- 基于C/C++的局域网聊天室源码
- C语言编写简单聊天室
- 基于QT的网络聊天室和服务器
- TCP/IP聊天室群聊MFC版
- Linux GTK 聊天室 MySql C语言聊天室
- C++聊天室客户端+服务端
- udp 聊天室 基于linux c语言实现
- 基于qt的聊天室软件.rar
- vc网络聊天室源代码mfc聊天器VC网络编
- 广播通信设计
- 计算机网络课程设计多人聊天室
- MFC网络编程源代码vc网络编程mfc sock
- 初学者学习C++ Builder第一个程序(模拟
- 多人聊天室c++源码(附服务器端以及
- Qt聊天室项目(包括服务端和客户端)
- VC++基于SOCKET的简易网络聊天室
- TCP/UDP网络调试助手含源码
- qt简易基于socket的聊天室系统(源码
- c++ 聊天室(含server+client)
- tcp SOCKET 聊天室(含服务端源码、客户
- QT tcp/udp调试助手(源码)
- 初学者学习C++ Builder第一个程序模拟聊
- TCP/IP网络协议程序设计-聊天室(c++)
- SOCKET网络编程:Linux下实现聊天室
- C语言基于socket多人聊天(包含注册登
- 完成端口 IOCP聊天室程序
- 基于WINSOCKET局域网聊天程序
评论
共有 条评论