skinrichedit.h
来自「网狐棋牌(家园版)最新版本7.1.1源代码,共享组件源码」· C头文件 代码 · 共 164 行
H
164 行
#ifndef SKIN_RICH_EDIT_HEAD_FILE
#define SKIN_RICH_EDIT_HEAD_FILE
#pragma once
#include "Stdafx.h"
#include "SkinControls.h"
#include "SkinAttribute.h"
//////////////////////////////////////////////////////////////////////////
//图像 OLE 类
class CImageDataObject : IDataObject
{
//变量定义
private:
ULONG m_ulRef; //引用计数
FORMATETC m_Format; //结构信息
STGMEDIUM m_Stgmed; //结构信息
//函数定义
public:
//构造函数
CImageDataObject();
//析构函数
~CImageDataObject();
//功能函数
public:
//设置图片
void SetBitmap(HBITMAP hBitmap);
//获取对象
IOleObject * GetOleObject(IOleClientSite * pOleClientSite, IStorage * pStorage);
//接口函数
public:
//查询接口
STDMETHOD(QueryInterface)(REFIID iid, void * * ppvObject)
{
if ((iid==IID_IUnknown)||(iid==IID_IDataObject))
{
*ppvObject=this;
AddRef();
return S_OK;
}
return E_NOINTERFACE;
}
//增加引用
STDMETHOD_(ULONG, AddRef)(void)
{
m_ulRef++;
return m_ulRef;
}
//释放对象
STDMETHOD_(ULONG, Release)(void)
{
if (--m_ulRef==0) delete this;
return m_ulRef;
}
//设置数据
STDMETHOD(SetData)(FORMATETC * pformatetc, STGMEDIUM * pmedium, BOOL fRelease)
{
m_Format=*pformatetc;
m_Stgmed=*pmedium;
return S_OK;
}
//获取数据
STDMETHOD(GetData)(FORMATETC * pformatetcIn, STGMEDIUM * pmedium)
{
HANDLE hDst =OleDuplicateData(m_Stgmed.hBitmap,CF_BITMAP,NULL);
if (hDst==NULL) return E_HANDLE;
pmedium->tymed=TYMED_GDI;
pmedium->hBitmap=(HBITMAP)hDst;
pmedium->pUnkForRelease=NULL;
return S_OK;
}
STDMETHOD(EnumFormatEtc)(DWORD dwDirection, IEnumFORMATETC * * ppenumFormatEtc ) { return E_NOTIMPL; }
STDMETHOD(DAdvise)(FORMATETC * pformatetc, DWORD advf, IAdviseSink * pAdvSink,DWORD * pdwConnection) { return E_NOTIMPL; }
STDMETHOD(DUnadvise)(DWORD dwConnection) { return E_NOTIMPL; }
STDMETHOD(EnumDAdvise)(IEnumSTATDATA * * ppenumAdvise) { return E_NOTIMPL; }
STDMETHOD(GetDataHere)(FORMATETC * pformatetc, STGMEDIUM * pmedium ) { return E_NOTIMPL; }
STDMETHOD(QueryGetData)(FORMATETC * pformatetc) { return E_NOTIMPL; }
STDMETHOD(GetCanonicalFormatEtc)(FORMATETC * pformatectIn, FORMATETC * pformatetcOut) { return E_NOTIMPL; }
};
//////////////////////////////////////////////////////////////////////////
//消息框类
class SKIN_CONTROL_CLASS CSkinRichEdit : public CRichEditCtrl
{
//变量定义
protected:
bool m_bScroll; //是否滚动
CString m_strFontName; //字体名字
IRichEditOle * m_pIRichEditOle; //OLE 指针
//函数定义
public:
//构造函数
CSkinRichEdit();
//析构函数
virtual ~CSkinRichEdit();
//重载函数
protected:
//控件绑定
virtual void PreSubclassWindow();
//功能函数
public:
//清除屏幕
void CleanScreen();
//是否滚动
bool IsAutoScroll() { return m_bScroll; }
//设置滚动
void SetAutoScroll(bool bScroll) { m_bScroll=bScroll; }
//加载消息
bool LoadMessage(LPCTSTR pszFileName);
//保存信息
bool SaveMessage(LPCTSTR pszFileName);
//信息插入
public:
//插入图片
bool InsertImage(CBitmap * pBitmap);
//插入字符
bool InsertString(LPCTSTR pszString, COLORREF crColor, bool bLink=false, WORD wSize=0, LPCTSTR pszFont=NULL);
//内部函数
public:
//加载回调
static DWORD CALLBACK LoadCallBack(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG * pcb);
//保存回调
static DWORD CALLBACK SaveCallBack(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG * pcb);
//消息映射
public:
//创建消息
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
//销毁消息
afx_msg void OnDestroy();
//按下连接
afx_msg void OnEnLink(NMHDR * pNMHDR, LRESULT * pResult);
//设置光标
afx_msg BOOL OnSetCursor(CWnd * pWnd, UINT nHitTest, UINT message);
//右键消息
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
//复制
afx_msg void OnCopy() { Copy(); }
//全部选择
afx_msg void OnSelectAll() { SetSel(0, -1); }
//清除
afx_msg void OnClear() { ReplaceSel(TEXT("")); }
//清除屏幕
afx_msg void OnClearAll() { SetSel(0,GetWindowTextLength()); ReplaceSel(NULL); }
//保存
afx_msg void OnSave();
DECLARE_MESSAGE_MAP()
};
//////////////////////////////////////////////////////////////////////////
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?