Tôi có một CListCtrl (kiểu báo cáo), trong đó tôi xóa danh sách và lặp lại nó vào những thời điểm nhất định. Tôi muốn duy trì vị trí cuộn dọc khi thực hiện việc này. Tôi thấy có một vài phương pháp mà trông đầy hứa hẹn:CListCtrl: Cách duy trì vị trí cuộn?
EnsureVisible()
GetScrollPos()
SetScrollPos()
GetScrollInfo()
GetTopIndex()
Scroll()
Tôi đang cố gắng GetScrollPos() và sau đó SetScrollPos() nhưng nó không có vẻ hoạt. Cách chính xác đơn giản để lưu vị trí cuộn và sau đó khôi phục nó là gì?
CẬP NHẬT
Trên thực tế có vẻ như tôi có thể nhận được để lưu các GetScrollPos vị trí cuộn() và sau đó SetScrollPos() để khôi phục lại nó, tuy nhiên nó theo nghĩa đen chỉ có vẻ để thiết lập vị trí thanh cuộn và không thực sự di chuyển các mục của CListCtrl của tôi.
UPDATE 2
Phương pháp Scroll() dường như di chuyển một cách chính xác các thanh cuộn và nội dung. Tuy nhiên phải mất một đối tượng CSize làm đối số của nó. Vì vậy, câu hỏi sẽ là làm thế nào để dịch giữa CSize và đầu ra của GetTopIndex hoặc GetScrollInfo/Pos.
Tuyệt vời hoạt động này. Tôi thích một giải pháp bằng cách sử dụng Scroll() nhưng điều này không công việc. Bạn có biết điều gì sẽ xảy ra nếu sau khi bạn gia hạn nội dung của danh sách bạn có ít mục hơn nTopIndex? – User
Tôi đoán EnsureVisible (nTopIndex) sẽ không có hiệu lực. Bạn sẽ kết thúc với danh sách được cuộn xuống dưới cùng. –
Và tại sao M $ không bận tâm để cung cấp một phương pháp SetTopIndex? :-( –