こんにちは,森川です
以下のようなコードを書きましたが
下キーを押すとカレットが下に下に延びていきます
なぜなんでしょうか?
関係ありそうなコード↓
void CEditHTMLView::OnKillFocus(CWnd* pNewWnd)
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加してください
DestroyCaret();
CScrollView::OnKillFocus(pNewWnd);
}

void CEditHTMLView::OnSetFocus(CWnd* pOldWnd) 
{
CScrollView::OnSetFocus(pOldWnd);
// TODO: この位置にメッセージ ハンドラ用のコードを追加してください
CreateSolidCaret(2,m_TextHeight);
SetCaretPos(m_CaretPos);
ShowCaret();
}
void CEditHTMLView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
CPoint ptTop=GetScrollPosition();
switch(nChar)
{
case VK_UP:
if (m_CaretPos.y>0)
m_CaretPos.y-=m_TextHeight;
else if (ptTop.y>0)
{
ptTop.y-=m_TextHeight;
ScrollToPosition(ptTop);
}
break;
case VK_DOWN:
if (m_CaretPos.y<(m_sizeWnd.cy-m_TextHeight))
m_CaretPos.y+=m_TextHeight;
else if (ptTop.y<(m_sizeTotal.cy-m_sizeWnd.cy-m_TextHeight))
{
ptTop.y+=m_TextHeight;
ScrollToPosition(ptTop);
}
break;
case VK_LEFT:
if (m_CaretPos.x>0)
m_CaretPos.x-=m_TextWidth;
else if (ptTop.x>0)
{
ptTop.x-=m_TextWidth;
ScrollToPosition(ptTop);
}
break;
case VK_RIGHT:
if (m_CaretPos.x<m_sizeWnd.cx)
m_CaretPos.x+=m_TextWidth;
else if (ptTop.x<(m_sizeTotal.cx-m_sizeWnd.cx))
{
ptTop.x+=m_TextWidth;
ScrollToPosition(ptTop);
}
break;
}
SetCaretPos(m_CaretPos);
CScrollView::OnKeyDown(nChar, nRepCnt, nFlags);
}