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

📄 rcimeview.cpp

📁 这是一个提供给使用遥控器的嵌入式设备开发的一个中文拼音输入法
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			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 + -