📄 gime.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 + -