0
我有一個邏輯順序問題。滾動rect(和點)到視圖
可以說我有三點意義。編輯欄左側,編輯欄右側,光標在編輯欄中的位置。
我想顯示具有焦點的控件,並顯示它是插入符號。
要顯示有焦點的字段,我通常會按照此順序嘗試確保以下內容。 1.確保右側可見。 2.確保左側可見。 3.確保可見的插入符號(加上最大寬度字符)。
問題是如果該字段對於父項太寬。控制器總是試圖顯示正確的,然後離開,然後脫字符。如果插入符號接近結尾(並且當前滾動確保右側可見),並且用戶鍵入,則父母將在插入符號後滾動到右側,即使它已經可見。 這實際上會將父級滾動到左側,如果光標<位於右側。 我不想那樣做。
僞代碼:
if (cFocusRect.right > cClientRect.right)
{
cFinalPoint.x += cClientRect.right - cFocusRect.right;
cFocusRect.OffsetRect(cClientRect.right - cFocusRect.right, 0);
fBoundRight = TRUE;
}
if (cFocusRect.left < 0)
{
cFinalPoint.x -= cFocusRect.left;
cFocusRect.OffsetRect(cFocusRect.left, 0);
}
nCaretRight = min(cFocusRect.right, pChild->GetCaretPos().x + nMaxCharWidth);
if (nCaretRight > cClientRect.right)
{
cFinalPoint.x += cClientRect.right - nCaretRight;
cFocusRect.OffsetRect(cClientRect.right - nCaretRight, 0);
fBoundRight = TRUE;
}
嗯..你可以顯示一些問題行爲的截圖,並注意哪裏有問題? – 2011-04-27 23:46:08
我想通了。我需要選擇是否要關注光標。移到字段左側總是會滾動到插入符號的右側。但是如果我知道我要滾動到插入符,我只是不滾動到該字段的左側。 – 2011-05-13 15:18:39