我正在尝试在编辑控件中设置滚动位置,我想将其从顶部设置为20%到底部。如何通过百分比来做到这一点?
答案 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);