📄 rcimeview.cpp
字号:
else
{
textoutpoint[index].x=myrc.left+i*hspan;
textoutpoint[index++].y=myrc.top+j*vspan+nhei;
}
};
}
void CRCIMEView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
int tempselected;
if(!m_IsShowHZ)
{
if(nChar==VK_ADD)
{
EnableHZ(TRUE);
prekeynum=VK_F9;
};
InvalidateRect(NULL,FALSE);
return;
};
if(m_IsShowHZ)
switch(isdrawing)
{
case DRAW_SHENGMU:
switch(nChar)
{
case VK_ESCAPE:
isdrawing=isdrawshengmu;
prekeynum=VK_F9;
m_selected=0;
//prekeynum=nChar;
InvalidateRect(NULL,FALSE);
break;
//case VK_NUMPAD0:
//case VK_0:
case VK_F9:
prekeynum=VK_F9;
InvalidateRect(NULL,FALSE);
break;
//case VK_ADD:
case VK_F11:
prekeynum=VK_F11;
InvalidateRect(NULL,FALSE);
break;
case VK_F12:
prekeynum=VK_F12;
InvalidateRect(NULL,FALSE);
break;
case VK_1:
case VK_2:
case VK_3:
case VK_4:
case VK_5:
case VK_6:
case VK_7:
case VK_8:
case VK_9:
tempselected=m_selected;
if(prekeynum==VK_F11) m_selected=nChar-VK_0+9;
else
if(prekeynum==VK_F12) m_selected=nChar-VK_0+18;
else
if(prekeynum==VK_F9)
m_selected=nChar-VK_0;
if((m_selected==2)||(m_selected>m_showstrsum+2))
{
m_selected=tempselected;
//prekeynum=nChar;
//InvalidateRect(NULL,FALSE);
break;
};
if(m_selected==1)
{
EnableHZ(FALSE);
InvalidateRect(NULL,FALSE);
break;
};
isdrawing=isdrawyunmu;
prekeynum=VK_F9;
InvalidateRect(NULL,FALSE);
break;
case VK_NUMPAD1:
case VK_NUMPAD2:
case VK_NUMPAD3:
case VK_NUMPAD4:
case VK_NUMPAD5:
case VK_NUMPAD6:
case VK_NUMPAD7:
case VK_NUMPAD8:
case VK_NUMPAD9:
tempselected=m_selected;
if(prekeynum==VK_F11) m_selected=nChar-VK_NUMPAD0+9;
else
if(prekeynum==VK_F12) m_selected=nChar-VK_NUMPAD0+18;
else
if(prekeynum==VK_F9)
m_selected=nChar-VK_NUMPAD0;
if((m_selected==2)||(m_selected>m_showstrsum+2))
{
m_selected=tempselected;
//prekeynum=nChar;
//InvalidateRect(NULL,FALSE);
break;
};
if(m_selected==1)
{
EnableHZ(FALSE);
InvalidateRect(NULL,FALSE);
break;
};
isdrawing=isdrawyunmu;
prekeynum=VK_F9;
InvalidateRect(NULL,FALSE);
break;
};
//DrawBtnDown(m_selected);
//Sleep(1000);
break;
case DRAW_YUNMU:
switch(nChar)
{
case VK_ESCAPE:
isdrawing=isdrawshengmu;
prekeynum=VK_F9;
m_selected=0;
//prekeynum=nChar;
InvalidateRect(NULL,FALSE);
break;
case VK_F9:
prekeynum=VK_F9;
InvalidateRect(NULL,FALSE);
break;
//case VK_ADD:
case VK_F11:
prekeynum=VK_F11;
InvalidateRect(NULL,FALSE);
break;
case VK_F12:
prekeynum=VK_F12;
InvalidateRect(NULL,FALSE);
break;
case VK_1:
case VK_2:
case VK_3:
case VK_4:
case VK_5:
case VK_6:
case VK_7:
case VK_8:
case VK_9:
tempselected=m_selected;
if(prekeynum==VK_F11) m_selected=nChar-VK_0+9;
else
if(prekeynum==VK_F12) m_selected=nChar-VK_0+18;
else
if(prekeynum==VK_F9)
m_selected=nChar-VK_0;
if(m_selected>m_showstrsum)
{
m_selected=tempselected;
//prekeynum=nChar;
//InvalidateRect(NULL,FALSE);
break;
};
isdrawing=isdrawhanzi;
prekeynum=VK_F9;
InvalidateRect(NULL,FALSE);
break;
case VK_NUMPAD1:
case VK_NUMPAD2:
case VK_NUMPAD3:
case VK_NUMPAD4:
case VK_NUMPAD5:
case VK_NUMPAD6:
case VK_NUMPAD7:
case VK_NUMPAD8:
case VK_NUMPAD9:
tempselected=m_selected;
if(prekeynum==VK_F11) m_selected=nChar-VK_NUMPAD0+9;
else
if(prekeynum==VK_F12) m_selected=nChar-VK_NUMPAD0+18;
else
if(prekeynum==VK_F9)
m_selected=nChar-VK_NUMPAD0;
if(m_selected>m_showstrsum)
{
m_selected=tempselected;
//prekeynum=nChar;
//InvalidateRect(NULL,FALSE);
break;
};
isdrawing=isdrawhanzi;
prekeynum=VK_F9;
InvalidateRect(NULL,FALSE);
break;
};
//DrawBtnDown(m_selected);
//Sleep(1000);
break;
case DRAW_HANZI:
switch(nChar)
{
case VK_ESCAPE:
isdrawing=isdrawshengmu;
prekeynum=VK_F9;
m_selected=0;
m_PageNo=1;
m_multipages=FALSE;
//prekeynum=nChar;
InvalidateRect(NULL,FALSE);
break;
case VK_F9:
prekeynum=VK_F9;
InvalidateRect(NULL,FALSE);
break;
//case VK_ADD:
case VK_F11:
prekeynum=VK_F11;
InvalidateRect(NULL,FALSE);
break;
case VK_F12:
prekeynum=VK_F12;
InvalidateRect(NULL,FALSE);
break;
case VK_1:
case VK_2:
case VK_3:
case VK_4:
case VK_5:
case VK_6:
case VK_7:
case VK_8:
case VK_9:
tempselected=m_selected;
if(prekeynum==VK_F11) m_selected=nChar-VK_0+9;
else
if(prekeynum==VK_F12) m_selected=nChar-VK_0+18;
else
if(prekeynum==VK_F9)
m_selected=nChar-VK_0;
if(!m_multipages)
if(m_selected>m_showstrsum)
{
m_selected=tempselected;
//prekeynum=nChar;
//InvalidateRect(NULL,FALSE);
break;
};
if(m_multipages)
{
if((m_PageNo==1)&&(m_selected==27))
{
m_PageNo++;
prekeynum=VK_F9;
InvalidateRect(NULL,FALSE);
break;
};
if((m_hanzisum-(m_PageNo-1)*25-1)<=26)
{
if((m_selected>m_showstrsum)&&(m_selected!=27))
{
m_selected=tempselected;
//prekeynum=nChar;
//InvalidateRect(NULL,FALSE);
break;
};
if(m_selected==27)
{
m_PageNo--;
prekeynum=VK_F9;
InvalidateRect(NULL,FALSE);
break;
}
};
if((m_selected==26)&&(m_PageNo!=1)&&(!((m_hanzisum-(m_PageNo-1)*25-1)<=26)))
{
m_PageNo--;
prekeynum=VK_F9;
InvalidateRect(NULL,FALSE);
break;
};
if(m_selected==27)
{
m_PageNo++;
prekeynum=VK_F9;
InvalidateRect(NULL,FALSE);
break;
}
};
isdrawing=isgottenhanzi;
prekeynum=VK_F9;
InvalidateRect(NULL,FALSE);
break;
case VK_NUMPAD1:
case VK_NUMPAD2:
case VK_NUMPAD3:
case VK_NUMPAD4:
case VK_NUMPAD5:
case VK_NUMPAD6:
case VK_NUMPAD7:
case VK_NUMPAD8:
case VK_NUMPAD9:
tempselected=m_selected;
if(prekeynum==VK_F11) m_selected=nChar-VK_NUMPAD0+9;
else
if(prekeynum==VK_F12) m_selected=nChar-VK_NUMPAD0+18;
else
if(prekeynum==VK_F9)
m_selected=nChar-VK_NUMPAD0;
if(!m_multipages)
if(m_selected>m_showstrsum)
{
m_selected=tempselected;
//prekeynum=nChar;
//InvalidateRect(NULL,FALSE);
break;
};
if(m_multipages)
{
if((m_PageNo==1)&&(m_selected==27))
{
m_PageNo++;
prekeynum=VK_F9;
InvalidateRect(NULL,FALSE);
break;
};
if((m_hanzisum-(m_PageNo-1)*25-1)<=26)
{
if((m_selected>m_showstrsum)&&(m_selected!=27))
{
m_selected=tempselected;
//prekeynum=nChar;
//InvalidateRect(NULL,FALSE);
break;
};
if(m_selected==27)
{
m_PageNo--;
prekeynum=VK_F9;
InvalidateRect(NULL,FALSE);
break;
}
};
if((m_selected==26)&&(m_PageNo!=1)&&(!((m_hanzisum-(m_PageNo-1)*25-1)<=26)))
{
m_PageNo--;
prekeynum=VK_F9;
InvalidateRect(NULL,FALSE);
break;
};
if(m_selected==27)
{
m_PageNo++;
prekeynum=VK_F9;
InvalidateRect(NULL,FALSE);
break;
}
};
isdrawing=isgottenhanzi;
prekeynum=VK_F9;
InvalidateRect(NULL,FALSE);
break;
}
//DrawBtnDown(m_selected);
//Sleep(1000);
};
CView::OnKeyDown(nChar, nRepCnt, nFlags);
}
void CRCIMEView::DrawShengMu(CDC *pDC, CPoint textoutpoint[],WCHAR shengmudesc[],int shengsum)
{
int i,j,keynum,wid=0;
int shenglen;
WCHAR shengmu[5];
int tempi;
WCHAR pch,lch;
CString str=_T("");
keynum=3;
//shengsum=m_combination[0][0];
m_showstrsum=shengsum;
CRect myrc;
CSize textsize;
GetClientRect(&myrc);
int hspan=(myrc.right-myrc.left )/9-2;
//pDC->SetTextColor(m_clrstr);
pDC->SetTextColor(m_clrBand[0]);
switch(IsEnableHZ())
{
case TRUE:
str=_T("数字1");
textsize=pDC->GetTextExtent(str);
wid=textsize.cx;
if((hspan-wid)>0)
wid=(hspan-wid)/2;
else wid=0;
TextOut(pDC, CPoint(textoutpoint[0].x+wid,textoutpoint[0].y),str);
break;
case FALSE:
str=_T("汉字+");
textsize=pDC->GetTextExtent(str);
wid=textsize.cx;
if((hspan-wid)>0)
wid=(hspan-wid)/2;
else wid=0;
TextOut(pDC, CPoint(textoutpoint[0].x+wid,textoutpoint[0].y),str);
};
str=_T("");
for(i=1;i<=shengsum;i++)
{
wid=0;
shenglen=shengmudesc[(i-1)*SHENGMULEN+0];
for(tempi=1;tempi<5;tempi++)
shengmu[tempi-1]=shengmudesc[(i-1)*SHENGMULEN+tempi];
for(j=0;j<shenglen;j++)
str.Insert(j+4,shengmu[j]);
if(!IsEnableHZ())
pDC->SetTextColor(m_clrdisable);
//else
// pDC->SetTextColor(m_clrstr);
textsize=pDC->GetTextExtent(str);
wid=textsize.cx;
if((hspan-wid)>0)
wid=(hspan-wid)/2;
else wid=0;
if(IsEnableHZ())
pDC->SetTextColor(m_clrBand[(i+1)%9]);
TextOut(pDC, CPoint(textoutpoint[i+1].x+wid,textoutpoint[i+1].y),str);
str.Empty();
/*
wid=0;
if(!IsEnableHZ())
pDC->SetTextColor(m_clrdisable);
else
pDC->SetTextColor(m_clrnum);
if((keynum % 10)==0) keynum++;
lch=( (keynum) % 10)+0x30;
switch((keynum++)/10)
{
case 0:
pch=' ';break;
case 1:
pch='0';break;
case 2:
pch='+';
};
str.Insert(100,pch);
str.Insert(100,lch);
//if((hspan/2-m_lf.lfWidth*str.GetLength())>0)
// wid=(hspan/2-m_lf.lfWidth*str.GetLength())/2;
textsize=pDC->GetTextExtent(str);
wid=textsize.cx;
TextOut(pDC, CPoint(textoutpoint[i+1].x+1+hspan-wid,textoutpoint[i+1].y),str);
str.Empty();*/
};
}
void CRCIMEView::DrawYunMu(CDC *pDC, CPoint textoutpoint[],WCHAR yunmudesc[],int yunsum)
{
int i,j,keynum,wid;
CSize textsize;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -