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

📄 ppeditbox.h

📁 基于ARM平台的控制系统,自己带有MINIGUI,可以直接在VC下运行界面演示程序
💻 H
字号:
#ifndef __GUIPP_EDITBOX_H__
#define __GUIPP_EDITBOX_H__

#include "GUIpp.h"

//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// 输入框
#define EDIT_MAX_TEXT_LEN		40

//////////   输入框风格,默认为0
#define EDIT_STYLE_NO_FRAME			0x00000001			//	无边框
#define EDIT_STYLE_NEG				0x00000002			//	文字反显
#define EDIT_STYLE_WITH_ICON		0x00000004			//  在最右侧显示一个图标
#define EDIT_STYLE_ALIGN_MID		0x00000008			//  文字居中,否则为左对齐
//////////////////////////////////////////////////////////////////////////
//@ltq001.2005-8-4 添加下滑线属性
#define EDIT_STYLE_UNDERLINE		0x00000010			//  下滑线
///////////////////////////////////////////
// @ltq001.2005-8-1.start
//
// 添加输入法(IME)相关常量定义
//


//IME序号
#define IME_ID_digit		0	//数字输入法
#define IME_ID_EN			1	//英文字母输入法
#define IME_ID_CH			2	//中文输入法

//IME内部状态
#define IME_ST_digit			1	//数字输入状态
#define IME_ST_EN_IDLE			2	//英文输入状态:空闲
#define IME_ST_EN_CHOOSE		3	//英文输入状态:刚刚按下某键之后的1秒钟内,此状态下按下相同键起到选择重码英文字母作用
#define IME_ST_punc				4	//标点输入状态:显示全部可选标点,等待用户选择确定
#define IME_ST_CH_IDLE			5	//中文输入状态:无候选汉字,无输入拼音数字码
#define IME_ST_CH_CHOOSE		6	//中文输入状态:有候选汉字,有输入拼音数字码,可以选择,也可修改拼音或退出
#define IME_ST_punc_CHOOSE		7	//中文或者英文输入状态下,按下0键切换标点输入
//IME相关按键
#define IME_KEY_NUM0			0
#define IME_KEY_NUM1			1
#define IME_KEY_NUM2			2
#define IME_KEY_NUM3			3
#define IME_KEY_NUM4			4
#define IME_KEY_NUM5			5
#define IME_KEY_NUM6			6
#define IME_KEY_NUM7			7
#define IME_KEY_NUM8			8
#define IME_KEY_NUM9			9

#define IME_KEY_SELUP			10				//选择候选符号,向前(上)
#define IME_KEY_SELDOWN			11				//选择候选符号,向后(下)
#define IME_KEY_OK				12				//选定
#define IME_KEY_ESC				13				//删除拼音,退出子状态,取消输入
#define IME_KEY_SELSPELL		IME_KEY_NUM1	//选择候选拼音,这里我们复用1键(在IME_ST_CH_CHOOSE状态下)
#define IME_KEY_PUNC			IME_KEY_NUM1	//标点输入键,这里我们复用1键(在IME_ST_EN_IDLE或IME_ST_CH_IDLE状态下)
#define IME_KEY_SWITCH_IME		14				//输入方法切换键

#if _USE_GUI == 1
class CCandidateBar;
class CEditBox : public CWnd
{
private:

	CTimer	w_EditBoxTimer;	

	int w_nTextLimint;
	
	int w_nStyle;				// 风格
	int w_bHaveFocus;			// 是否具有输入焦点
	char w_strText[EDIT_MAX_TEXT_LEN];			// 文本,注意不要溢出

	int w_nCursorIndex;		// 光标位置
	int w_nTextCounter;		// 文字统计,中文和英文都是一个字符
	int	w_bShowCursor;		// 显示光标旗标  0 不显示   1 显示
	enum enFontType w_fontType;
	
	int w_nIME_Index;	//当前输入框的输入法(数字,英文,中文)
	int w_nIME_State;	//当前输入框的输入法状态(数字,英文,标点,中文,有汉字待选)
	
	int w_nEN_KeyNumber;			//前1秒内最后一次按键的数字值
	int w_nEN_CurCandidate;		//1秒内重复按键的当前候选
	int w_nEN_TicksRemained;		//从上次按键到1秒尚剩余的tick个数
	
	int	w_nCH_PY_DCODE;			//用户输入的拼音数字码
	int	w_nCH_PY_CurPYIndex;		//当前用户选择的重码拼音序号

	CCandidateBar* w_pCandidateBar;
public:
	CEditBox();
	virtual ~CEditBox();

	virtual int CreateWindow(
				CWnd * pParentWnd,
				int nX1,
				int nY1,
				int nWidth,
				int nHeight,
				int nTextLimit);

protected:
	virtual void OnPaint();
	virtual void OnTimer(CTimer *pTimer);
	virtual void OnKey(int nKeyCode, int bKeyDown);

public:
	void Clear();

	void CursorMove(int nStep);

	void SetCurChar(char c);

	void Insert(char * strChar);

	void Delete();

	void Backspace();
			

	int GetTextCounter();

	void SetFont(enum enFontType font);

	void SetStyle(int nStyle);

	void SetIME(int nIME_Index);

	void SetFocus(int bHaveFocus);

	int HaveFocus();

	int HandleKey(int nKeyCode, int flag);

};


// 输入法的候选栏
class CCandidateBar : public CWnd
{
private:
	char* w_strCodeString;					//编码字符串
	
	char* w_strCandidateString;				//候选字串
	
	int w_nCandidateCnt;					//候选字个数
	
	int w_nCurrentCandidate;				//当前候选字的起始索引
	
	int w_nCandidatePerScreen;			//每屏能够显示的候选字个数
	int w_nFirstCandidateOnScreen;		//当前屏显示的第一个候选汉字索引
	int w_nCandidateScreenWidth;
	
	int w_nMaxCodeStringWidth;			//编码字符串显示所占宽度
	int w_nCodeStringStartPosX;			//编码字符串显示起始位置
	int w_nCandidateStringStartPosX;		//候选字符串显示起始位置
	
	enum enFontType w_fontType;					//用于显示的字体

public:
	
	static CCandidateBar* Instance();

	virtual int CreateWindow(
				CWnd * pParentWnd,
				int nX1,
				int nY1,
				int nWidth,
				int nHeight,
				enum enFontType fontType);

protected:
	virtual void OnPaint();
	virtual void OnTimer(CTimer *pTimer);

private:

	static CCandidateBar s_CandidateBar;
	
	CCandidateBar();
	virtual ~CCandidateBar();

public:	
	//寻找一个可以附着的位置
	void Pop(CRect * prc);

	void SetCandidate(char *strCodeString, char *strCandidateString);

	void MoveCandidate(int nStep);

	void GetSelectItem(char *strSel);

};

#endif	// end of _USE_GUI == 1
#endif	// __GUIPP_EDITBOX_H__

⌨️ 快捷键说明

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