⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 faceedit.h

📁 类似QQ,MSN表情的richedit,用来测试表情控件的
💻 H
字号:

/*--------------------------------------
* Copyright (c) 2004
* All rights reserved.
*
* 文件名称: FaceEdit.h
* 摘 要: 类 CFaceEdit 声明部分
*
* 当前版本: 1.01 VC6版
* 作 者: Flanker(刘翔)
* 完成日期: 2004年10月26日
* 修改日期: 2004年11月12日
*
* 使用:

	在CxxxApp::::InitInstance()中添加:
	AfxInitRichEdit();

	以使用EditCtrl 1.0(VC6),注意,要使用EditCtrl 2.0(VC7以上),请使用本类的 VC7 版本。

	使用CFaceEdit:
	//将对话框类成员变量由CRichEditCtrl改为CFaceEdit
	CFaceEdit m_FaceEdit;
	CString pSymbol[] = {":)", ":(", ";)", ":0", ";-)"};
	UINT nIDBmp[] =  {	IDB_BITMAP1, IDB_BITMAP2, IDB_BITMAP3, IDB_BITMAP4, IDB_BITMAP5};
	m_FaceEdit.Init(5, pSymbol, nIDBmp);

	m_FaceEdit.SetText("ha:(ha:0!");

	或:
	CFaceEdit m_FaceEdit;
	CString pSymbol[] = {":)", ":(", ";)", ":0", ";-)"};
	CString sBmpFile[] =  {	"res\\kid.bmp", "res\\sad.bmp", "res\\showoff.bmp", "res\\quip.bmp", "res\\maze.bmp"};
	m_FaceEdit.Init(5, pSymbol, sBmpFile);

	m_FaceEdit.SetText("ha:(ha:0!");

--------------------------------------*/

#pragma once

struct stFace;
#include "StdAfx.h"
#include "Picture.h"
#include <vector>
using namespace  std;
class CFaceEdit : public CRichEditCtrl
{
public:
	//构造函数
	CFaceEdit() : m_nfaceCount(0), m_pSymbol(NULL), m_pIDBmp(NULL), m_pBmpFile(NULL), m_bEnableFace(TRUE)
	{
	}

	//析构函数
	~CFaceEdit()
	{
		delete []m_pSymbol;

		if(m_pIDBmp != NULL)
			delete []m_pIDBmp;

		if(m_pBmpFile != NULL)
			delete []m_pBmpFile;
	}

	//用户自定义表情,“输入”
	void Init(int nfaceCount, CString *pSymbol, UINT *pIDBmp);
	void Init(int nfaceCount, CString *pSymbol, CString *pBmpFile);

	//工作函数,“输出”
	bool SetText(CString str, BOOL bEnableFace = TRUE);
	bool SetText();
	void ClearFace();
	void SetFaceToText();
	void InsertFace(CString strPicPath);
	void InsertBitmap(CString szFileName);
	void InsertGif(CString filename);

private:
	void SetTextWithFace(CString str);
	
	inline void InsertBitmap(stFace &face);	//应用层的InsertBitmap
	
	
	int			m_nfaceCount;	//表情的数目
	CString	*	m_pSymbol;		//表情符号
	UINT	*	m_pIDBmp;		//指定图象,通过图象的ID
	CString *	m_pBmpFile;		//指定图象的另一种形式,通过文件形式
	BOOL		m_bEnableFace;	//显示到RichEdit中的文字是否要显示表情
public:
	CPicture picture;
	vector <stFace> vecFace;	//vecFace[0]表示第一个表情的位置和型号、vecFace[1]表示第二个表情的位置和型号…
};

struct stFace
{
	int nPos;			//要插入的位置
	int nFaceIndex;		//要插入的图象的在上面数组中IDBmp的index
	int nLength;		//字符表情的长度
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -