CEdit::LineScrollについて

[戻る]
TERU 2008/04/29(火) 14:09:27
CEditのLineScrollを使用したいのですが、
簡単なテストプログラムを書いてみました。

CEidtのスタイルにWS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE | ES_READONLY
を指定し、複数行のテキストを表示させて二つのボタンを貼り付けました。

動作を確認すると下には正しくスクロールされるのですが
どうしても上には正しくスクロールされません。

LineScrollは上にはスクロールできないものなのでしょうか?
それとも何か設定か使い方が間違えているのでしょうか?
理由がわからないので教えてください。

// 1行下にさげる
void Ctest2Dlg::OnBnClickedDownButton()
{
    CEdit* edit = (CEdit*)GetDlgItem(IDC_EDIT1);
    edit->LineScroll(edit->GetFirstVisibleLine() + 1);
}

// 1行上にあげる
void Ctest2Dlg::OnBnClickedUpButton()
{
    CEdit* edit = (CEdit*)GetDlgItem(IDC_EDIT1);
    edit->LineScroll(edit->GetFirstVisibleLine() - 1);
}

TERU 2008/04/29(火) 18:28:09
同じ経験がある方いませんか??

2008/04/30(水) 10:55:17
void LineScroll(
   int nLines,
   int nChars = 0 
);
パラメータ
nLines 
垂直方向にスクロールする行数を指定します。 

なので、edit->GetFirstVisibleLine()はいらないのでは?

// 1行上にあげる
void Ctest2Dlg::OnBnClickedUpButton()
{
    CEdit* edit = (CEdit*)GetDlgItem(IDC_EDIT1);
    edit->LineScroll(-1);
}

#下にも正しくはスクロールされないと思います。(下のほうに行くほどスクロール行が大きくな
る)

TERU 2008/04/30(水) 13:47:24
[[解決]]
ありがとうございます!
勘違いしてました。
移動する行を指定するものだと思いこんでいました。
表示数が少なかったせいでうまく移動してるように見えたようです。

正常に動作いたしました。

古いスレッドには追加発言できません。