CScrollView

คลาCScrollViewเป็นCViewกับความสามารถในการเลื่อน?

คุณสามารถจัดการมาตรฐานเลื่อนด้วยตัวคุณเองในชั้นใด ๆ มาจากCViewโดยแทนข้อความที่มีแมปOnHScroll OnVScrollสมาชิกฟังก์ชันและ แต่CScrollViewเพิ่มคุณลักษณะต่อไปนี้กับความสามารถของCView:

คุณสามารถจัดการเลื่อนด้วยตัวคุณเอง ด้วยการแทนข้อความที่มีแมปOnMouseWheel OnRegisteredMouseWheelสมาชิกฟังก์ชันและล้อเลื่อนของเมาส์ ฟังก์ชันเหล่านี้สมาชิกสนับสนุนพฤติกรรมแนะนำสำหรับเหมือนอยู่สำหรับCScrollView, WM_MOUSEWHEELข้อความหมุนล้อ?

การใช้ประโยชน์จากการเลื่อนโดยอัตโนมัติ คลาสของมุมมองที่สืบทอดมาจากCScrollViewแทนที่เป็นจากCView เมื่อมุมมองแรกสร้าง ถ้าคุณต้องการคำนวณขนาดของมุมมองเลื่อนตามขนาดของเอกสาร เรียกใช้ฟังก์ชันSetScrollSizesสมาชิกจากของคุณแทนที่CView::OnInitialUpdateหรือCView::OnUpdate (คุณต้องเขียนโค้ดของคุณเองเพื่อสอบถามขนาดของเอกสาร ดูตัวอย่างเช่น เพิ่มมุมมองในVisual c ++ Tutorials.)

การเรียกฟังก์ชันSetScrollSizesสมาชิกตั้งค่าโหมดการแมปของมุมมอง ขนาดรวมของมุมมองเลื่อน และจำนวนเงินที่ต้องเลื่อนตามแนวนอน และแนวตั้ง ขนาดทั้งหมดในหน่วยทางลอจิคัลได้ ขนาดทางตรรกะของมุมมองปกติถูกคำนวณจากข้อมูลที่เก็บอยู่ในเอกสาร แต่ในบางกรณี คุณอาจต้องการระบุขนาดแบบถาวร สำหรับตัวอย่างของทั้งสองวิธี ดูCScrollView::SetScrollSizes?

คุณระบุจำนวนเงินที่ต้องเลื่อนตามแนวนอน และแนวตั้งในหน่วยทางลอจิคัล โดยค่าเริ่มต้น หากผู้ใช้คลิกที่แถบเลื่อนไม้คานภายนอกของกล่องเลื่อนCScrollViewเลื่อน "หน้า หากผู้ใช้คลิกที่ลูกศรเลื่อนใดส่วนท้ายของแถบเลื่อนCScrollViewเลื่อน "บรรทัด" โดยค่าเริ่มต้น หน้าคือ 1/10 ของขนาดโดยรวมของมุมมอง เส้น 1/10 ของขนาดของหน้าได้ แทนที่ค่าเริ่มต้นเหล่านี้ ด้วยการส่งผ่านขนาดแบบกำหนดเองในฟังก์ชันสมาชิกSetScrollSizes ตัวอย่างเช่น คุณอาจตั้งค่าขนาดแนวนอนบางเศษส่วนของความกว้างของขนาดรวมและขนาดความสูงของบรรทัดแนวตั้งในแบบอักษรปัจจุบัน?

แทนที่เป็นของการเลื่อนCScrollViewสามารถโดยอัตโนมัติปรับมุมมองขนาดหน้าต่างปัจจุบัน ในโหมดนี้ มุมมองมีไม่มีแถบเลื่อน และมียืด หรือ shrunk ให้ตรงพอดีกับพื้นที่ของไคลเอ็นต์ของหน้าต่างมุมมองแบบลอจิคัล การใช้ความสามารถนี้มาตราส่วนพอดี โทรCScrollView::SetScaleToFitSize (เรียกแบบSetScaleToFitSizeหรือSetScrollSizesแต่ทั้งสองอย่างไม่)

ก่อน OnDraw เรียกฟังก์ชันสมาชิกของคลาสของมุมมองที่ได้รับCScrollViewต้นกำเนิด viewport สำหรับวัตถุอุปกรณ์บริบทCPaintDCที่ได้ผ่านการปรับปรุงโดยอัตโนมัติOnDraw?

การปรับต้นกำเนิด viewport สำหรับหน้าต่างเลื่อนCScrollViewแทนCView::OnPrepareDC การปรับปรุงนี้เป็นอัตโนมัติสำหรับบริบทอุปกรณ์CPaintDCที่CScrollViewส่งผ่านไปยัง OnDraw แต่คุณต้องเรียกCScrollView::OnPrepareDCตัวเองสำหรับใด ๆ อื่น ๆ อุปกรณ์บริบทคุณใช้ เช่นCClientDC คุณสามารถแทนที่การตั้งค่าปากกา สีพื้นหลัง และคุณลักษณะอื่น ๆ รูปวาด แต่เรียกคลาสพื้นฐานที่จะทำการปรับมาตราส่วนของCScrollView::OnPrepareDC?

แถบเลื่อนจะปรากฏขึ้นในสามสถานที่สัมพันธ์กับมุมมอง ดังที่แสดงในกรณีต่อไปนี้:

ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้CScrollView, หัวข้อสถาปัตยกรรม/มุมมองเอกสารและ มาเรียนดูในคู่มือ Visual c ++ Programmer ของ?

#รวม lt;afxwin.h>

สมาชิกของคลาส|nbsp คลาสพื้นฐาน| แผนภูมิของลำดับชั้น(&N)

ตัวอย่างnbsp MFC อย่าง DIBLOOK(&N)

ดูเพิ่มเติมnbspCView, CSplitterWnd(&N)

Index