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

📄 gime.cpp

📁 一个简单而又高效的嵌入式操作系统.包括GUI及文件系统.仿Windows设计,类似于MFC风格
💻 CPP
字号:
// GIME.cpp: implementation of the GIME class.
//
//////////////////////////////////////////////////////////////////////

#include "..\stdafx.h"
#include "GIME.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

GIME::GIME()
{
	m_nMode=0;
}

GIME::~GIME()
{

}

//消息处理函数
void GIME::WndProc(int nMessage, int wParam, int lParam)
{
	switch(nMessage)
	{
	case WM_PAINT:
		if(wParam & ~ODA_CLIENT)OnNcPaint();
		if(wParam & ODA_CLIENT){OnPaint();DrawControls();}
		break;
	case WM_COMMAND:
		OnClick(wParam);
		break;
	case WM_LBUTTONUP:
		if(wParam!=POINT_INVALID && lParam!=POINT_INVALID 
			&& !PtInRect(wParam,lParam,m_rectWnd))
		{
			m_nDlgResult=-1;
		}
		GDialog::WndProc(nMessage, wParam, lParam);
		break;
	case WM_CREATE:
		OnCreate();
		break;
	default:
		GDialog::WndProc(nMessage, wParam,lParam);
		break;
	}
}

void GIME::OnCreate()
{
	int x,y,i;
	m_strText="输入法 - 选择";
	m_nStyle|=DS_CENTER;
	m_rectWnd=MakeRect(0,0,200,200);
	GDialog::OnCreate();

	AddControl(&m_btn[0],NULL,WS_CLIENT|BS_FLAT);
	m_btn[0].MoveWindow(10,10,176,30);
	m_btn[0].m_nBackColor=RGB(255,255,255)|EdgeRGB(255,255,255);
	m_btn[0].m_nForeColor=RGB(0,0,0);
	for(y=0;y<4;y++)
	{
		for(x=0;x<3;x++)
		{
			i=y*3+x+1;
			AddControl(&m_btn[i],"1234",0);
			m_btn[i].MoveWindow(10+x*61,50+y*30,55,28);
		}
	}
	m_btn[11].m_strText="IME";
	m_btn[12].m_strText="清除";
	if(m_nMode<1)SetMode(IME_NUMBER);
	m_pPreBtn=this;
}

void GIME::OnClick(int wParam)
{
	GWnd* pWnd=(GWnd*)wParam;
	if(pWnd==&m_btn[0])
	{
		;
	}
	else if(pWnd==&m_btn[11])
	{
		SetMode(m_nMode+1);
		PostMessage(WM_PAINT,ODA_ALL,-1);
	}
	else if(pWnd==&m_btn[12])
	{
		if(m_pPreBtn==pWnd)
		{
			KString str=m_btn[0].m_strText;
			int i=str.GetLength();
			if(i>0)
			{
				if(GUI_CHARCODE(str.Right(2))>0xff)str=str.Left(i-2);
				else str=str.Left(i-1);
			}
			m_btn[0].m_strText=str;
		}
		else m_btn[0].m_strText+=" ";
		m_btn[0].PostMessage(WM_PAINT,ODA_CLIENT,-1);
	}
	else
	{
		switch(m_nMode)
		{
		case IME_LETTER_UPPER:
		case IME_LETTER_LOWER:
		case IME_SYMBOL_ASC:
		{
			int i,nAT;
			KString str=m_btn[0].m_strText;
			i=str.GetLength();
			if(i>0)
			{
				nAT=pWnd->m_strText.Find(str.Right(1),0);
				if(nAT<0)m_btn[0].m_strText+=pWnd->m_strText.Left(1);
				else
				{
					if(m_pPreBtn==pWnd)
					{
						if(nAT<pWnd->m_strText.GetLength()-1)nAT++;
						else nAT=0;
						m_btn[0].m_strText=str.Left(i-1)+pWnd->m_strText.Mid(nAT,1);
					}
					else m_btn[0].m_strText+=pWnd->m_strText.Mid(nAT,1);
				}
			}
			else m_btn[0].m_strText=pWnd->m_strText.Left(1);
			break;
		}
		case IME_NUMBER:
			m_btn[0].m_strText+=pWnd->m_strText;
			break;
		}
		m_btn[0].PostMessage(WM_PAINT,ODA_CLIENT,-1);
	}
	m_pPreBtn=pWnd;
}

void GIME::SetMode(int nMode)
{
	
	if(nMode>IME_SYMBOL_ASC)
	{
		nMode=IME_LETTER_UPPER;
	}
	m_nMode=nMode;
	m_strText="输入法 - ";
	switch(nMode)
	{
	case IME_LETTER_UPPER:
		m_strText+="ABC";
		m_btn[1].m_strText="AB";
		m_btn[2].m_strText="CD";
		m_btn[3].m_strText="EFG";
		m_btn[4].m_strText="HI";
		m_btn[5].m_strText="JK";
		m_btn[6].m_strText="LMN";
		m_btn[7].m_strText="OPQ";
		m_btn[8].m_strText="RST";
		m_btn[9].m_strText="UVW";
		m_btn[10].m_strText="XYZ";
		break;
	case IME_LETTER_LOWER:
		m_strText+="abc";
		m_btn[1].m_strText="ab";
		m_btn[2].m_strText="cd";
		m_btn[3].m_strText="efg";
		m_btn[4].m_strText="hi";
		m_btn[5].m_strText="jk";
		m_btn[6].m_strText="lmn";
		m_btn[7].m_strText="opq";
		m_btn[8].m_strText="rst";
		m_btn[9].m_strText="uvw";
		m_btn[10].m_strText="xyz";
		break;
	case IME_NUMBER:
		m_strText+="数字";
		m_btn[1].m_strText="1";
		m_btn[2].m_strText="2";
		m_btn[3].m_strText="3";
		m_btn[4].m_strText="4";
		m_btn[5].m_strText="5";
		m_btn[6].m_strText="6";
		m_btn[7].m_strText="7";
		m_btn[8].m_strText="8";
		m_btn[9].m_strText="9";
		m_btn[10].m_strText="0";
		break;
	case IME_SYMBOL_ASC:
		m_strText+="字符";
		m_btn[1].m_strText=".=";
		m_btn[2].m_strText="+-";
		m_btn[3].m_strText="*/";
		m_btn[4].m_strText=",.;:";
		m_btn[5].m_strText="!'\"";
		m_btn[6].m_strText="([{";
		m_btn[7].m_strText=")]}";
		m_btn[8].m_strText="~@#$";
		m_btn[9].m_strText="%^&*";
		m_btn[10].m_strText="?_|\\";
		break;
	}
}

⌨️ 快捷键说明

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