键盘按键的处理和单字节的判断,不允许输入汉字
BOOL CWndWtrite::PreTranslateMessage(MSG* pMsg)
{ 
	if(pMsg->message==WM_KEYDOWN)  //判断是否有按键按下  
	{     
		switch(pMsg->wParam)    
		{         
		case VK_DOWN: //表示是方向键中的向下的键      
			{	
				int i=m_pProgData->GetCurRow();
				i++;
				if(i >= m_pProgData->GetRowCnt() )
					m_pProgData->SetCurRow(0);
				else
					m_pProgData->SetCurRow(i);
				Invalidate();
				break;  	
			}
		case VK_UP:  //表示是方向键中的向上的键 
			{	  
				int i=m_pProgData->GetCurRow();
				i--;
				if (i < 0)
					m_pProgData->SetCurRow(m_pProgData->GetRowCnt()-1);
				else
					m_pProgData->SetCurRow(i);
				Invalidate();
				break; 
			}
		case VK_RIGHT:
			{	
				if((m_pProgData->GetCurRow())*(m_pProgData->GetColCnt())+m_pProgData->GetCurCol() >= (m_pProgData->GetColCnt())*(m_pProgData->GetRowCnt())-1)
				{
					m_pProgData->SetCurRow(0);
					m_pProgData->SetCurCol(0);
				}
				else
				{	
					int i=m_pProgData->GetCurCol();
					i++;
					if(i >=m_pProgData->GetColCnt())
					{		
						m_pProgData->SetCurCol(0);
						int j=m_pProgData->GetCurRow();
						j++;
						if (j >=m_pProgData->GetRowCnt())
							m_pProgData->SetCurRow(0);
						else
							m_pProgData->SetCurRow(j);
					}
					else
						m_pProgData->SetCurCol(i);
				}
				Invalidate();
				break;
			}
		case VK_LEFT:
			{   
				int i=m_pProgData->GetCurCol();
				i--;
				if (i<0)
				{	
					m_pProgData->SetCurCol(m_pProgData->GetColCnt()-1);
					int j=m_pProgData->GetCurRow();
					j--;
					if (j <0)
					{	
						m_pProgData->SetCurRow(m_pProgData->GetRowCnt()-1);
					}
					else m_pProgData->SetCurRow(j);
				}
				else
					m_pProgData->SetCurCol(i);
				Invalidate();
				break;
			}
		case VK_RETURN:
			{
				m_pProgData->SetCurCol(0);
				m_pProgData->SetCurRow( (m_pProgData->GetCurRow()+1) % m_pProgData->GetRowCnt() );
				Invalidate();
				break;
			}
		case VK_DELETE:
			{
				m_pProgData->SetWordItems( m_pProgData->GetCurFrame(), m_pProgData->GetCurRow(), m_pProgData->GetCurCol(), ' ' );
				((CInfoStationDlg *)GetParent())->UpdateCurFrameWord();
				Invalidate();
			}
		default:
			break;
		}
	}
	else if(pMsg->message == WM_CHAR)
	{
		if ( pMsg->wParam == VK_BACK )
		{
			m_pProgData->BackDown();
		}
		else
		{
			unsigned char chWord = pMsg->wParam;
			if(chWord < 0x80)//只需要输入单字节的字符
			{
				m_pProgData->CharDown( chWord );
			}
		}
		((CInfoStationDlg *)GetParent())->UpdateCurFrameWord();
		Invalidate();
	}
	SetFocus();
	return CWnd::PreTranslateMessage(pMsg);
}
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号