📄 editin.h
字号:
/***************************************************************************
Copyright (C) 2002 SHENZHEN MEIJIN CO.LTD
FILE NAME: EditIn.h
MODULE NAME: GUI控件 - 编辑器
DESCRIPTION: 编辑器内部头文件
**************************************************************************
DTAE AUTHOR VERSION REMARKS
=========== ========== ========= ======================================
2005.12.31 gaolinhui v1.00 create
***************************************************************************/
/* 防止被重复引用的预处理 */
#ifndef __EDITIN_H__
#define __EDITIN_H__
/*-----内部编辑消息定义,由系统统一规划------*/
#ifndef CM_EDITOR
#define CM_EDITOR CM_KNLEDT_BASE
#endif
//支持笔点操作
//定义光标ID时的掩码
#define EDIT_CURID_MASK 0X7000 /*编辑器光标ID号MASK*/
#define EDIT_TIMER_ID(pEdit) ((UINT16)(EDIT_CURID_MASK | ((UINT32)pEdit & 0XFFF)))
/*定义光标闪动的时间间隔*/
#define EDIT_CURTMR_SET 0X200
//下面的宏可能要作一些修改
/*-------wState--------*/
#define SF_EDITOR_NONE 0X0000
#define SF_EDITOR_INIT 0x0001 /*编辑器已初始化*/
#define SF_EDITOR_MODIFIED 0x0002 /*数据被更改状态标志*/
#define OF_EDITOR_MULTILINE 0X0010 /*多行编辑器*/
#define OF_EDITOR_READONLY 0X0020 /*只读状态*/
#define OF_EDITOR_PASSWORD 0X0040 /*密码显示状态*/
#define OF_EDITOR_INSERSECAP 0X0080 /*标题反显状态*/
#define OF_EDITOR_LINETHREAD 0X0100 /*显示分割线*/
#define OF_EDITOR_NOBACKGRND 0X0200 /*不画背景*/
#define OF_EDITOR_NOMARK 0X0400 /*没有mark功能*/
#define SF_EDITOR_HAVEKBD 0x1000 /*当前编辑控件中已经设置了输入法键盘*/
#define SF_EDITOR_CURSHOW 0x2000 /* 当前编辑器光标在显示*/
/*---编辑控件内部标志定义----*/
#define EDITOR_BUFFERFULL 0X01
#define EDITOR_DISPFULL 0X02
#define EDITOR_DATACHANGE 0X04
#define EDITOR_BLOCKCANCEL 0X08
/*内部消息定义*/
#define CM_EDITINNER_LINECHANGE (CM_EDITOR+20) /*当编辑数据的总行数或开始显示行号改变时应该发送的消息*/
#define CM_EDITINNER_ROWCHANGED (CM_EDITOR+21) /*当编辑数据的总列数或开始显示列号改变时应该发送的消息*/
#define CM_EDITINNER_KEY_DEL (CM_EDITOR+23) /*删除键*/
#define CM_EDITINNER_KEY_BKSPACE (CM_EDITOR+24) /*退格键*/
#define CM_EDITINNER_CURSORBLINK (CM_EDITOR+25) /*闪烁光标*/
#define CM_EDITINNER_MEMLENCHANGED (CM_EDITOR+26) /*内存数据已改变*/
#define CM_EDITINNER_FIRSTINTO (CM_EDITOR+27) /*第一次进入编辑器*/
/* 函数声明 */
/*----------EditLib.c 中的内部接口函数------------*/
//根据显示位置得到内存位置
UINT __EditDspPosToMem(UINT16 wFontID, UINT8 *pStr, UINT *pDspLen);
//由显示长度得到内存长度(遇回车符不返回)
UINT __EditDspLenToMem(UINT16 wFontID, UINT8 *pStr, UINT *pDspLen);
//由内存长度得到显示长度(遇回车符不返回)
UINT __EditMemLenToDsp(UINT16 wFontID, UINT8 *pStr, UINT *pMemLen);
//由内存位置到显示位置,并调整内存位置(遇回车符则返回)
UINT __EditMemPosToDsp(UINT16 wFontID, UINT8 *pStr, UINT *pMemLen);
//得到ASCII字符的显示长度
UINT __EditGetAsciiFontWidth(UINT16 wFontID);
//得到指定高度能显示字符串的行数
UINT __EditGetRectLineNum(UINT16 wFontID,UINT uHeight, UINT uRowSpace);
//得到指定宽度能显示的ASCII字符个数
UINT __EditGetRectRowNum(UINT16 wFontID, UINT uWidth);
//得到一个字符的显示长度或内存长度
VOID __EditGetCharLength(UINT16 wFontID, UINT8 *pStr, UINT *pMemLen, UINT *pDspLen);
//根据内存位置得到前一字符的内存长度
UINT __EditGetPreCharMemLen(UINT16 wFontID, UINT8 *pData, UINT uMem);
//根据显示位置得到前一字符的显示长度
UINT __EditGetPreCharDspLen(UINT16 wFontID, UINT8 *pStr, UINT uStartPos);
//计算标题的显示长度(资源或字符串)
UINT __EditGetCaptionLen(UINT8 *pCaption);
//得到字符串中的字符长度(显示长度或内存长度)
UINT __EditGetStrLength( UINT16 wFontID, UINT8 *pData, BOOL bRetDspLen );
//得到字符串所需的显示行数
UINT __EditGetStrLineNum(UINT16 wFontID, UINT uWidth, UINT8 *pCaption, UINT8 *pData, UINT uIndent, BOOL bScrnStartPtr);
//重新计算编辑器buffer中开始显示的内存位置
VOID __EditGetScrnStart(MEdit* hEditWin, UINT uOldStart);
//判断合法数据的长度
BOOL __EditStrValidLenCheck(UINT16 wFontID, UINT uAllowChar, UINT8 *pData, UINT uDataLen, UINT *pDspLen, UINT *pMemLen);
//根据内存位置低到光标位置
VOID __EditMemColToCursor(MEdit *hEditWin,UINT uMemCol, INT *pCurLine, INT *pCurCol, BOOL bChangeCursor,BOOL bScrnStart);
//根据光标位置得到内存位置
UINT __EditCursorToMemCol(MEdit *hEditWin, INT *pCurLine, INT *pCurCol, UINT uDspCols);
//返回当前块首和块尾的位置
BOOL __EditGetSel(MEdit *hEditor, UINT *pStartChar, UINT *pEndChar);
//取消块
void __EditFlushSelBlock(MEdit *hEditWin);
//更新行总数和屏幕其实行的内存位置
VOID __EditLineRowChange(MEdit *hEditWin,UINT uOldDspLen,BOOL bScrnStart,BOOL bReDraw);
//编辑器增加字符(字符串)操作
VOID __EditAddStringProc(MEdit *hEditWin, UINT8* pData, UINT uDataLen);
//光标闪动显示
VOID __EditInvertCursor(MEdit* pEdit);
//隐藏光标
VOID __EditCursorHide(MEdit* pEdit);
//显示打开光标显示
void __EditShowCursor(MEdit *hEdWin);
/***************************内部接口函数*****************************/
/*-----------EditDsp.c 中的内部接口函数-----------*/
UINT __EditDispLimitLenStr(MEdit *pEdit, UINT x, UINT y, UINT8 *pStr, UINT uMaxLen, BOOL bIsRev);
//显示BLOCK
void __EditDispBlockStr(MEdit *pEdit,UINT uHead, UINT uTail, BOOL bIsRev);
void __EditDispLineSpace(MEdit *pEdit, UINT uWidth, UINT uHeight, UINT16 wStateOption, UINT uSpace);
UINT __EditDispOneLineText(MEdit* pEdit, UINT8 *pData, UINT uMem, UINT x0, UINT y0, UINT uWidth, UINT uBlockHead, UINT uBlockTail);
void __EditDispScrText(MEdit* pEdit, UINT8 *pCaption, UINT8 *pData, UINT8 *pScrnStart, UINT y0, UINT uStartLine, UINT uLines, UINT uCols, UINT uSpace, UINT uIndent, UINT uBlockHead, UINT uBlockTail);
/*-----------Edit.c 中的内部接口函数--------------*/
//设置编辑器得默认参数
BOOL __EditSetDefaultParam(MEdit* pEdit);
/*----------EdWinProc.c 中的内部接口函数------------*/
//处理按键消息
BOOL __EditKeyProcess(MEdit* pEdit, UINT uKey, BOOL bCanEdit);
INT __EditWinProcKeyMark(MEdit *hEditWin, UINT uKey,BOOL bCanEdit);
//删除字符或块处理
VOID __EditDeleteProc(MEdit* hEditWin, BOOL bSendDataChange );
/*----------EditPen.c 中的内部接口函数------------*/
#ifdef EDIT_SUPPORT_PEN
//笔点的消息处理函数
INT __EditWinProcPen(MEdit* hEditWin, UINT uEvent,UINT uParam);
#endif
#endif /* #ifndef __EDITIN_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -