คลาCOleControlคลาสพื้นฐานที่มีประสิทธิภาพสำหรับการพัฒนาตัวควบคุม OLE ได้ มาจากCWndคลาสนี้สืบทำงานทั้งหมดของวัตถุหน้าต่าง Windows บวกเพิ่มเติมฟังก์ชันเฉพาะการ OLE เช่นเหตุการณ์ firing และความสามารถในการรองรับเมธอดและคุณสมบัติ?
OLE ควบคุมสามารถแทรกลงในโปรแกรมประยุกต์ของคอนเทนเนอร์ OLE และสื่อสารกับคอนเทนเนอร์ โดยใช้ระบบแบบสองทิศทางของเหตุการณ์เผา และการ exposing เมธอด และคุณสมบัติคอนเทนเนอร์ หมายเหตุว่า คอนเทนเนอร์ OLE มาตรฐานสนับสนุนหน้าที่การใช้งานเบื้องต้นของตัวควบคุม OLE เท่านั้น พวกเขาไม่สามารถสนับสนุนคุณลักษณะเพิ่มเติมของตัวควบคุม OLE เหตุการณ์เผาเกิดขึ้นเมื่อเหตุการณ์จะถูกส่งไปยังคอนเทนเนอร์ที่เป็นผลลัพธ์ของการดำเนินการบางอย่างเกิดขึ้นในตัวควบคุม สื่อตามลำดับ คอนเทนเนอร์สารกับตัวควบคุม โดยใช้ชุดการ exposed ของเมธอดและคุณสมบัติ analogous กับฟังก์ชันสมาชิกและข้อมูลสมาชิกของคลาส c ++ วิธีการนี้ช่วยให้นักพัฒนาเพื่อควบคุมลักษณะที่ปรากฏของตัวควบคุม และแจ้งในคอนเทนเนอร์เมื่อดำเนินการบางอย่างเกิดขึ้น?
OLE ควบคุมสามารถถูกใช้ในอยู่ โดยไม่มีหน้าต่าง ตัวควบคุมแบบไม่มีหน้าต่างมีข้อดีที่สำคัญ:
ตัวควบคุมไม่จำเป็นหน้าต่าง มีให้บริการที่มีหน้าต่างทางเดียวที่ใช้ร่วมกัน (โดยปกติในคอนเทนเนอร์) ของหน้าต่างและ bit dispatching รหัสได้อย่างง่ายดาย มีหน้าต่างมีภาวะแทรกส่วนใหญ่ที่ไม่จำเป็นซ้อนบนวัตถุ?
เมื่อเปิดใช้งานแบบไม่มีหน้าต่างใช้ คอนเทนเนอร์ (ซึ่งมีหน้าต่าง) เป็นผู้รับผิดชอบสำหรับการให้บริการที่มีจะไม่ได้ถูกให้หน้าต่างของตัวควบคุมของตัวเอง ตัวอย่างเช่น ถ้าตัวควบคุมของคุณจำเป็นต้องสอบถามโฟกัสของแป้นพิมพ์ แบบสอบถามการจับเมาส์ หรือขอรับอุปกรณ์บริบท การดำเนินการเหล่านี้จะถูกจัดการ โดยคอนเทนเนอร์ COleControl สมาชิกแบบไม่มีหน้าต่างการดำเนินการฟังก์ชันที่เรียกใช้การดำเนินการเหล่านี้บนคอนเทนเนอร์?
เมื่อเปิดใช้งานแบบไม่มีหน้าต่างถูกเปิดการใช้งาน ผู้รับมอบสิทธิ์คอนเทนเนอร์ที่ป้อนข้อความของตัวควบคุมIOleInPlaceObjectWindowlessอินเทอร์เฟซ (นามสกุล IOleInPlaceObjectสำหรับการสนับสนุนแบบไม่มีหน้าต่าง) การใช้งานCOleControlของอินเทอร์เฟซนี้จะส่งข้อความเหล่านี้ผ่านการแมปข้อความของตัวควบคุมของคุณ หลังจากปรับเมาส์ประสานความร่วมมืออย่างเหมาะสม คุณสามารถประมวลผลข้อความเหล่านี้เหมือนกับข้อความในหน้าต่างทั่วไป โดยการเพิ่มรายการสอดคล้องกันในการแมปข้อความ?
ในตัวควบคุมแบบไม่มีหน้าต่าง คุณควรใช้เสมอCOleControlสมาชิกฟังก์ชันแทนของฟังก์ชันสมาชิกCWndที่ตรงกันหรือการใช้งาน Windows API ที่เกี่ยวข้อง?
OLE ควบคุมวัตถุสามารถสร้างหน้าต่างเท่านั้นเมื่อพร้อมใช้งาน แต่จำนวนของงานที่จำเป็นสำหรับการใช้งานไม่ได้ใช้งานช่วงการเปลี่ยนภาพไปอัพ และความเร็วของช่วงการเปลี่ยนภาพไปลง มีอยู่หลายกรณีเมื่อเป็นปัญหา: เป็นตัวอย่าง พิจารณาตารางของกล่องข้อความ เมื่อ cursoring ขึ้นและลงผ่านคอลัมน์ ตัวควบคุมแต่ละต้องได้สถานที่เปิดใช้งาน และปิดการใช้งานแล้ว ความเร็วของช่วงการเปลี่ยนภาพไม่ทำงาน/ใช้งานอยู่โดยตรงจะมีผลต่อความเร็วในการเลื่อน?
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการพัฒนามีกรอบการควบคุม OLE ดูบทความ ตัวควบคุม ActiveXและ สร้างโปรแกรมที่มีการ ActiveX ControlWizardในVisual c ++ Programmer's Guide ดูข้อมูลเพิ่มเติมเกี่ยวกับการเพิ่มฟังก์ชันการทำงานเกินกรอบพื้นฐาน การสร้างตัวควบคุม ActiveX (ช่วยสอนวงกลม) ในVisual c ++ Tutorials ดูข้อมูลบนตัวควบคุม OLE รวมทั้งตัวควบคุมแบบไม่มีหน้าต่าง และกะพริบ-ฟรี การปรับให้เหมาะสม ตัวควบคุม ActiveX: การเพิ่มประสิทธิภาพของในVisual c ++ Programmer ของคำแนะนำ?
#รวม lt;afxctl.h>
สมาชิกของคลาส|nbsp คลาสพื้นฐาน| แผนภูมิของลำดับชั้น(&N)
ตัวอย่างnbsp CIRC3 อย่าง MFC | อย่าง MFC DRAWPIC | MFC อย่าง TESTHELP(&N)
ดูเพิ่มเติมnbspCOlePropertyPage, CFontHolder, CPictureHolder(&N)