为了让MSFlexGrid支持编辑功能而动态创建的Cedit控件,可是用到cedit控件时不能用左右键来控制光标在字符间的移动,请问有什么方法可以解决?
解决方法:
BOOL CMyMSFlexGrid::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_KEYDOWN)
{
if ( FALSE == m_isEditable)//非编辑状态则返回
return CMSFlexGrid::PreTranslateMessage(pMsg);
DWORD dwSel=0;
int nS,nE;
nS = nE = 0;
switch(pMsg->wParam)
{
case VK_LEFT:
{
m_Change.GetSel(nS,nE);
m_Change.SetSel(nS-1, nS-1);
return TRUE;
}
case VK_RIGHT:
{
int nStmp=0,nEtmp=0;
m_Change.GetSel(nS,nE);
m_Change.SetSel(nS+1, nS+1);//如果当前光标的移动要经过一个汉字,那么SetSel(nS+1, nS+1)之后得到 //的位置不变;如果光标的移动是经过一个英文字符,那么SetSel后位置加1
m_Change.GetSel(nStmp,nEtmp);
if (nStmp==nS)
m_Change.SetSel(nS+2, nS+2);
return TRUE;
}
}
}
}