在编辑控件中设置滚动位置

时间:2011-01-17 15:39:01

标签: c windows winapi controls edit

我正在尝试在编辑控件中设置滚动位置,我想将其从顶部设置为20%到底部。如何通过百分比来做到这一点?

2 个答案:

答案 0 :(得分:2)

当窗口的标准垂直滚动条中出现滚动事件时,WM_VSCROLL消息将发送到窗口。当控件中发生滚动事件时,此消息也会发送给垂直滚动条控件的所有者。

http://msdn.microsoft.com/en-us/library/bb787577%28v=vs.85%29.aspx

您可以先GetScrollRange()(http://msdn.microsoft.com/en-us/library/bb787587%28v=vs.85%29.aspx),计算出有多少行,然后计算百分比。之后WindowProc()使用VM_SCROLL或更简单的解决方案,使用SetScrollPos()函数http://msdn.microsoft.com/en-us/library/bb787597%28v=vs.85%29.aspx

您可以在http://msdn.microsoft.com/en-us/library/ff486021%28v=VS.85%29.aspx

找到所有滚动功能

希望这会有所帮助。

答案 1 :(得分:0)

特别是对于编辑控件设置,滚动位置似乎并未实际将文本移动到预期位置。滚动条位置移动了,但文本保持在原来的位置。

要滚动编辑框,我发现以下内容可以按预期工作:

double desiredPercentage = 0.7;
CEdit* pEditBox = (CEdit*)GetDlgItem(IDC_CONTROLID)

int totalLines = pEditLog->GetLineCount();
// Truncatest to the nearest int, do different rounding method for round up/down.
int scrollLine = (int)(desiredPercentage * (double)totalLines));

pEditBox->LineScroll(scrollLine);