วิธีการใช้คลาส CFormView ในอินเทอร์เฟซสำหรับเอกสารเดี่ยว (SDI) และโปรแกรมประยุกต์อินเทอร์เฟซ (MDI) หลายเอกสาร

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 98598 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

หมายเหตุMicrosoft Visual c ++สุทธิ (2002) สนับสนุนทั้งสองได้รับการจัดการรหัส รูปแบบที่ให้ไว้ โดย MicrosoftNET Framework และชุดเริ่มต้นไม่มีการจัดการ รูปแบบรหัสของ Microsoft Windows ข้อมูลในบทความนี้ใช้เฉพาะกับ รูปแบบรหัส c ++ที่มองเห็น

หมายเหตุMicrosoft Visual c ++ 2005 สนับสนุนทั้งสองได้รับการจัดการรหัส รูปแบบที่ให้ไว้ โดย MicrosoftNET Framework และชุดเริ่มต้นไม่มีการจัดการ รูปแบบรหัสของ Microsoft Windows

สรุป

คลา CFormView ให้วิธีที่สะดวกในการทำ ตัวควบคุมลงในมุมมองที่ยึดตามแม่แบบของกล่องโต้ตอบ ทั่วไป ขั้นตอนการใช้ CFormView อธิบายไว้ในเอกสารประกอบสำหรับชั้น และมีภาพประกอบในประยุกต์ตัวอย่างที่ VIEWEX และ CHKBOOK ที่ให้มาพร้อมกับ Microsoft พื้นฐานระดับชั้น (MFC) รุ่น 2.x และข้างต้น อย่างไรก็ตาม เหล่านี้ โปรแกรมประยุกต์สาธิตการทำให้ขนาดของหน้าต่างเฟรมเพื่อเริ่มต้น จะเหมือนกับขนาดเริ่มต้นของแบบฟอร์ม

ส่วนต่อไปนี้ แสดงขั้นตอนที่จำเป็นในการสนับสนุนการสร้างอินเทอร์เฟซการเอกสารเดี่ยว (SDI) หรือโปรแกรมประยุกต์อินเทอร์เฟซ (MDI) เอกสารหลายที่ขึ้นอยู่กับการ CFormView ปรับขนาด หน้าต่างเฟรมที่เริ่มต้นรอบแบบฟอร์ม การเปลี่ยนแปลงลักษณะของเฟรม และ ปิดเอกสาร MDI ที่ใช้ปุ่มในแบบฟอร์ม

ข้อมูลเพิ่มเติม

ขั้นตอนต่อไปนี้อธิบายวิธีการสร้างภาพ AppWizard MFC โปรแกรมประยุกต์ที่ใช้ CFormView ที่เป็นมุมมองเริ่มต้น:
  1. ใช้ AppWizard ที่สร้างข้อ SDI หรือ MDI แอพลิเคชัน ซึ่งแทรกแม่แบบของกล่องโต้ตอบกับลักษณะที่ถูกต้องที่กำหนดไว้สำหรับ แฟ้มทรัพยากรของโครงการของคุณ

    Visual Studio 6.0:

    ในขั้นตอนที่ 6 ของ AppWizard เลือกคลามุมมอง ในการคลาสพื้นฐานกล่องคำสั่งผสม เลือกCFormViewเมื่อต้องการระบุCFormViewเป็นคลาสพื้นฐาน

    Visual Studioสุทธิหรือ Visual Studio 2005:

    ในขั้นตอนที่ 1 ของการ AppWizard เลือกคลาสที่สร้างขึ้น. ในการคลาสพื้นฐานกล่องคำสั่งผสม เลือกCFormViewเมื่อต้องการระบุCFormViewเป็นคลาสพื้นฐาน
  2. แทนที่ฟังก์ชันสมาชิก OnUpdate() และการโทร UpdateData() ตามรายละเอียดในเอกสารประกอบของ CFormView ในการปรับปรุงสมาชิก ตัวแปร ด้วยข้อมูลปัจจุบันของเอกสาร และ การดำเนินการโต้ตอบการแลกเปลี่ยนข้อมูล (DDX)

    หมายเหตุ: UpdateData ไม่ใช่เสมือน และเรียกคลาสพื้นฐานที่ทำให้แน่ใจ เรียกว่า คลาสที่ได้รับมา DoDataExchange ว่าผ่าน polymorphism มาตรฐาน นอกจากนี้สถานะเอกสาร CFormView โทร ไม่แทน UpdateData
  3. ถ้าคุณต้องการตั้งค่าขนาดเริ่มต้นของมุมมองฟอร์ม แทนฟังก์ชัน OnInitialUpdate() ข้อความด้านล่างแสดงเพิ่มเติม ข้อมูลเกี่ยวกับขั้นตอนนี้ ซึ่งจะแตกต่างกันเล็กน้อยใน SDI หรือ MDI แอพลิเคชัน

การเปลี่ยนแปลงขนาดเฟรมหลัก SDI รอบ ๆ ตัว CFormView

เมื่อต้องการเปลี่ยนขนาดของเฟรมหลักของโปรแกรมประยุกต์ SDI (ที่ ใช้ CFormView เป็นคลาสนี้ view) เป็น ที่เหมาะสมขนาดสำหรับฟอร์มคุณ ได้รับการออกแบบใน App Studio แทนที่ฟังก์ชัน OnInitialUpdate() ในระดับชั้นของคุณ ได้รับมาจาก CFormView ดังต่อไปนี้:
      void CMyFormView::OnInitialUpdate()
      {
         CFormView::OnInitialUpdate();
         GetParentFrame()->RecalcLayout();
         ResizeParentToFit(); // default argument is TRUE
      }
				
ฟังก์ชัน ResizeParentToFit() ไม่มีป้องกันแบบฟอร์มจาก การเปลี่ยนแปลงขนาดเมื่อผู้ใช้เปลี่ยนแปลงขนาดของเฟรมหลักของแอพลิเคชัน (แถบเลื่อนถูกเพิ่มโดยอัตโนมัติถ้าจำเป็น) เมื่อต้องการปรับเปลี่ยนลักษณะของการ หน้าต่างเฟรมที่เป็นแม่แบบฟอร์มมุมมอง คุณสามารถแทน ฟังก์ชัน PreCreateWindow() ในคลา CMainFrame ที่สร้างขึ้น โดย AppWizard สำหรับ ตัวอย่าง การลบลักษณะ WS_THICKFRAME และป้องกันไม่ให้ผู้ใช้เปลี่ยนแปลง ขนาดของหน้าต่าง ประกาศ PreCreateWindow() ใน MAINFRMH และเพิ่มการ รหัสต่อไปนี้เพื่อ MAINFRMCPP:
      BOOL CMainFrame::PreCreateWindow(CREATESTRUCT &cs)
      {
         cs.style &= ~WS_THICKFRAME;
         return CFrameWnd::PreCreateWindow(cs);
      }
				

การเปลี่ยนแปลงขนาดเฟรมลูก MDI รอบ ๆ ตัว CFormView

กระบวนการของการเปลี่ยนแปลงขนาดเฟรมลูก MDI จะคล้ายคลึงกัน เมื่อต้องการเปลี่ยนแปลงขนาดของเฟรมหลักสำหรับโปรแกรมประยุกต์ SDI ดังที่ได้อธิบายไว้ ข้างต้น อย่างไรก็ตาม เรียก RecalcLayout() ไม่จำเป็น

เมื่อต้องการเปลี่ยนแปลง ขนาดเฟรมลูก MDI รอบมุมมองฟอร์ม แทน ฟังก์ชัน OnInitialUpdate() ในระดับชั้นของคุณมาจาก CFormView เป็นดังนี้:
      void CMDIFormView::OnInitialUpdate()
      {
         CFormView::OnInitialUpdate();
         ResizeParentToFit(); // Default argument is TRUE.
      }
				
ถ้าแอพลิเคชันอาร์กิวเมนต์เป็นค่าเริ่มต้นเพื่อที่แทน ฟังก์ชัน ResizeParentToFit() โค้เดียวและจำเป็นอย่างยิ่งเกิดขึ้นสำหรับการ แอพพลิเคชัน SDI ดังที่ได้อธิบายไว้ข้างต้น นอกจากนี้ หน้าต่างลูกอาจจะมากเกินไป ขนาดใหญ่ สำหรับเฟรมหลัก MDI ล้อม หรือ สำหรับหน้าจอทั้งหมด

เมื่อต้องการ เปลี่ยนลักษณะของเฟรมลูก MDI (ตัวอย่างเช่น การเอาออก WS_THICKFRAME ลักษณะเพื่อให้ผู้ใช้ไม่สามารถเปลี่ยนขนาดของหน้าต่าง), สืบทอดมา คลาสหน้าต่างของลูก MDI และการแทน PreCreateWindow ทำงานเป็น แสดงในตัวอย่าง SDI ข้างต้น

ปิดแบบฟอร์ม MDI กับปุ่ม

เมื่อต้องการสร้าง ปุ่มบนฟอร์มที่ปิดเอกสารเพิ่มเป็น จัดการข้อความสำหรับข้อความ BN_CLICKED คลา CFormView ตรวจสอบให้แน่ใจว่า ว่า ปุ่มใน CFormView ไม่ได้เริ่มต้นที่ IDOK หรือ IDCANCEL ตัวบ่งชี้ ถ้าทำ รายการนั้นไม่ถูกต้องในการแมปข้อความ และ จะสร้างฟังก์ชันที่ไม่ถูกต้องสำหรับปุ่ม

ครั้ง ตัวจัดการข้อความที่อยู่ในตำแหน่ง คุณสามารถจำลองการสั่งปิดแฟ้ม เมนู ด้วยรหัสต่อไปนี้:
      void CMyForm::OnClickedButton1()
      {
         PostMessage(WM_COMMAND, ID_FILE_CLOSE);
      }
				
วิธีการนี้เพื่อปิดแบบฟอร์มพร้อมท์ให้ผู้ใช้บันทึกแฟ้มได้หากการ ฟังก์ชันสมาชิก IsModified() ที่เกี่ยวข้องกับเอกสารส่งกลับค่า TRUE

คุณสมบัติ

หมายเลขบทความ (Article ID): 98598 - รีวิวครั้งสุดท้าย: 28 มกราคม 2554 - Revision: 2.0
ใช้กับ
  • Microsoft Foundation Class Library 4.2 เมื่อใช้กับ:
    • Microsoft Visual C++ 1.0 Professional Edition
    • Microsoft Visual C++ 1.52 Professional Edition
    • Microsoft Visual C++ 2.1
    • Microsoft Visual C++ .NET 2003 Standard Edition
    • Microsoft Visual C++ 2002 Standard Edition
    • Microsoft Visual C++ 2005 Express Edition
Keywords: 
kbdocview kbhowto kbmdi kbuidesign kbmt KB98598 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:98598

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com