www.pudn.com > 智能内码识别,支持屏幕取词翻译的程序.zip > INPUTBAR.H


// InputBar.h : header file 
// 
#ifndef	WM_USER_INPUT_CHAR 
//输入板上的字符操作 
#define	WM_USER_INPUT_CHAR	(WM_USER+2) 
#endif 
#ifndef	WM_USER_CHANGE_BUTTON_STATUS 
//改变输入板上三个按钮的状态 
#define	WM_USER_CHANGE_BUTTON_STATUS	(WM_USER+3) 
#endif 
#ifndef	WM_USER_SCROLL_PAGE 
//进行翻页 
#define	WM_USER_SCROLL_PAGE	(WM_USER+4) 
#endif 
 
#include	"inbutton.h" 
 
//输入板窗口 
 
///////////////////////////////////////////////////////////////////////////// 
// CInputBar window 
 
#define	MAX_BUTTON	7			//输入板上最多按钮 
#define	MAX_INPUT_LEN	100			//输入英文最大长度 
#define	MAX_HZ_ITEM	10			//汉字最多项数 
#define	MAX_HZ_LEN	20			//每项汉字最多长度 
#define	MAX_HZ_BUFF_LEN		34 
class CInputBar : public CBasicWin 
{ 
public: 
	// Operations 
	void	InitInputBar( void ) ;	//初始化输入主窗口 
	~CInputBar() ; 
protected: 
	// Generated message map functions 
	//{{AFX_MSG(CInputBar) 
	afx_msg	LONG OnInputChar(WPARAM wParam=0 , LPARAM lParam=0 ) ; 
	afx_msg	LONG OnChangeButtonStatus(WPARAM wParam , LPARAM lParam ) ; 
	afx_msg	LONG OnScrollPage(WPARAM wParam , LPARAM lParam ) ; 
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point); 
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point); 
	afx_msg void OnMouseMove(UINT nFlags, CPoint point); 
	afx_msg void OnPaint(); 
	afx_msg void OnTimer(UINT nIDEvent); 
	//}}AFX_MSG 
	DECLARE_MESSAGE_MAP() 
 
	//窗口的位置与大小属性 
	private: 
		CPoint	m_OLeftTopPos ;		//左上角的位置 
		int			m_nMainWidth ;				//宽度 
		int			m_nMainHeight ;				//高度 
		//鼠标按钮状态属性 
		BOOL	m_bIsDown ;		//0,表示鼠标没有按下,1表示已经按下 
		CPoint	m_OOldMousePos ;	//原来的鼠标位置 
 
		int			m_nScrollButtonStatus ;	//翻页按钮状态 
		//按钮子窗口 
		int					m_nButtonNum ;	//按钮数 
		CInButton	m_OButton[MAX_BUTTON] ; 
//------------------------------------------------------------------------//		 
		 
		//输入缓冲区 
		int		m_nInputLen ;	//已经输入的长度 
		int		m_nInputCursorPos ;	//输入光标的位置 
		char	m_sInputBuff[MAX_INPUT_LEN+1] ;	//接受输入的缓 冲区 
		//光标状态,0隐藏,1显示 
		BOOL	m_bCursorStatus ; 
		UINT	m_uTimerID ;	//时间器ID 
		 
		int		m_nHzItemNum ;	//返回的汉字数,每项以\0结尾	 
		char	m_sHzBuff[MAX_HZ_ITEM][MAX_HZ_LEN] ; //汉字缓冲区 
 
		//汉字显示缓冲区 
		int			m_nShowHzLen ; 
		char	m_sShowHzBuff[MAX_HZ_BUFF_LEN+1] ; 
 
	private:		 
		BOOL CreateInputBar( void ) ;		//创建主输入窗口 
		void	JudgeInitStatus( void ) ;	//判断输入板初始状态 
 
		void	SendOutHz( int	n ) ;	//向当前窗口输送汉字 
		//改变翻页按钮 
		void	ShowScrollPage( int nStatus ) ; 
 
//--------------------------------------------------------------------// 
//输入板上输入字符的操作 
		BOOL AddOneChar( char c ) ;		//增加一个字符 
		BOOL DelOneChar( BOOL bFlag ) ;	//删除一个字符 
		BOOL ClearChars( void ) ;		//清空字符 
		BOOL CursorLeft( void ) ;		//光标左移 
		BOOL CursorRight( void ) ;	//光标右移		 
		BOOL CursorHome( void ) ;	//光标到行首 
		BOOL CursorEnd( void ) ;	//光标到行尾		 
 
		//显示光标 
		void 	ShowInputCursor( void ) ; 
		//隐藏光标 
		void 	HideInputCursor( void ) ; 
	public:		 
		BOOL	GetHz( int nFlag ) ;		//根据输入的英文串,得到汉字 
		void	ShowInput( void ) ;	//处理输入结果								 
}; 
 
///////////////////////////////////////////////////////////////////////////// 
//#define	VK_ESCAPE	0x1b 
#define	VK_F1	0x70 
#define	VK_F2	0x71 
#define	VK_F3	0x72 
#define	VK_F4	0x73 
#define	VK_F5	0x74 
#define	VK_F6	0x75 
#define	VK_F7	0x76 
#define	VK_F8	0x77 
#define	VK_F9	0x78 
#define	VK_F10	0x79 
//#define	VK_F11	0x7a 
//#define	VK_F12	0x7b 
//#define	VK_SNAPSHOT	0x2c 
#define	VK_PAUSE	0x13 
#define	VK_BACK		0x08 
#define	VK_TAB	0x09 
//#define	VK_RETURN	0x0d 
#define	VK_SPACE	0x20 
//#define	VK_INSERT	0x2d 
//#define	VK_DELETE	0x2e 
#define	VK_HOME		0x24 
#define	VK_END			0x23 
#define	VK_PRIOR	0x21 
#define	VK_NEXT		0x22 
#define	VK_LEFT		0x25 
#define	VK_UP			0x26 
#define	VK_RIGHT	0x27 
#define	VK_DOWN		0x28 
 
#define	VK_0	'0' 
#define	VK_1	'1' 
#define	VK_2	'2' 
#define	VK_3	'3' 
#define	VK_4	'4' 
#define	VK_5	'5' 
#define	VK_6	'6' 
#define	VK_7	'7' 
#define	VK_8	'8' 
#define	VK_9	'9' 
 
#define	VK_A	'A' 
#define	VK_B	'B' 
#define	VK_C	'C' 
#define	VK_D	'D' 
#define	VK_E	'E' 
#define	VK_F	'F' 
#define	VK_G	'G' 
#define	VK_H	'H' 
#define	VK_I	'I' 
#define	VK_J	'J' 
#define	VK_K	'K' 
#define	VK_L	'L' 
#define	VK_M	'M' 
#define VK_N	'N' 
#define	VK_O	'O' 
#define	VK_P	'P' 
#define	VK_Q	'Q' 
#define	VK_R	'R' 
#define	VK_S	'S' 
#define	VK_T	'T' 
#define	VK_U	'U' 
#define	VK_V	'V' 
#define	VK_W	'W' 
#define	VK_X	'X' 
#define	VK_Y	'Y' 
#define	VK_Z	'Z'