หน้าต่างกระบวนงาน Superclassing

Superclassingเป็นเทคนิคที่ทำให้โปรแกรมประยุกต์การสร้างคลาสหน้าต่างแบบใหม่ ด้วยการทำงานขั้นพื้นฐานของคลาสที่มีอยู่ บวกเพิ่มประสิทธิภาพโดยแอพลิเคชัน ซุปเปอร์คลาสที่ขึ้นกับคลาสที่หน้าต่างการมีอยู่เรียกว่าคลาสพื้นฐาน บ่อย คลาสพื้นฐานมีระบบส่วนกลางหน้าต่างชั้นเช่นตัวควบคุมการแก้ไข แต่อาจมีคลาสหน้าต่างใด ๆ.

ซุปเปอร์คลาสที่มีกระบวนงานตัวเองหน้าต่าง เรียกกระบวนงานซุปเปอร์คลาส กระบวนงานซุปเปอร์คลาสสามารถทำการกระทำที่สามเมื่อได้รับข้อความ: จะสามารถส่งผ่านข้อความลงในกระบวนงานต้นฉบับของหน้าต่าง การปรับเปลี่ยนข้อความ และผ่านไปยังกระบวนงานหน้าต่างเดิม หรือประมวลผลข้อความ และไม่ผ่านขั้นตอนหน้าต่างเดิมได้ ถ้ากระบวนการซุปเปอร์คลาสประมวลผลข้อความ นั้นสามารถทำได้ก่อน แล้ว หรือทั้งก่อน และหลัง จากนั้นส่งผ่านข้อความลงในกระบวนงานต้นฉบับของหน้าต่าง.

แตกต่างจากกระบวนการซับคลาส กระบวนงานซุปเปอร์คลาสสามารถประมวลผลข้อความหน้าต่างการสร้าง (WM_NCCREATE, WM_CREATEและอื่น ๆ), แต่มันยังผ่านเหล่านั้นลงในกระบวนงาน base-คลาสหน้าต่างต้นฉบับเพื่อให้กระบวนการหน้าต่าง base-คลาสสามารถทำขั้นตอนการเตรียมใช้งาน.

การซุปเปอร์คลาสคลาสหน้าต่าง แอปพลิเคชันแรกเรียกฟังก์ชันGetClassInfoเพื่อเรียกข้อมูลเกี่ยวกับคลาสพื้นฐาน GetClassInfoกรอกข้อมูลโครงสร้างWNDCLASSด้วยค่าจากโครงสร้างของคลาสพื้นฐานWNDCLASS ถัดไป โปรแกรมประยุกต์ที่คัดลอกหมายเลขอ้างอิงอินสแตนซ์ของตัวเองเป็นสมาชิกhInstanceของโครงสร้างWNDCLASSและคัดลอกชื่อของซุปเปอร์คลาสที่เป็นสมาชิกlpszClassName ถ้าคลาสพื้นฐานมีเมนู แอพลิเคชันต้องให้เมนูใหม่ ด้วยตัวบ่งชี้ที่เมนูเดียวกัน และคัดลอกชื่อเมนูเป็นสมาชิกlpszMenuName ถ้าซุปเปอร์คลาสกระบวนการประมวลผลข้อความWM_COMMANDและไม่ผ่านนั้นลงในกระบวนงานของหน้าต่างของฐานชั้น เมนูต้องไม่มีตัวระบุที่สัมพันธ์กัน GetClassInfoส่งกลับสมาชิกของโครงสร้างWNDCLASS lpszMenuName, lpszClassNameหรือhInstance.

โปรแกรมประยุกต์ยังต้องตั้งค่าสมาชิกlpfnWndProcของโครงสร้างWNDCLASS ฟังก์ชันGetClassInfoการกรอกข้อมูลสมาชิกนี้ ด้วยอยู่ของกระบวนงานหน้าต่างเดิมเรียน โปรแกรมประยุกต์ที่ต้องบันทึกที่อยู่นี้ การส่งข้อความไปยังกระบวนงานหน้าต่างเดิม แล้ว คัดลอกอยู่ของกระบวนการซุปเปอร์คลาสเป็นสมาชิกlpfnWndProc แอปพลิเคชันสามารถ ถ้าจำเป็น ปรับเปลี่ยนเพื่อให้สมาชิกอื่น ๆ ของโครงสร้างWNDCLASS หลังจากนั้นกรอกข้อมูลในโครงสร้างของWNDCLASSโปรแกรมประยุกต์ที่ลงทะเบียนที่ซุปเปอร์คลาส ด้วยการส่งอยู่ของโครงสร้างไปยังฟังก์ชันRegisterClass ซุปเปอร์คลาสที่สามารถนำไปใช้ในการสร้าง windows.

เนื่องจากที่ superclassing ลงทะเบียนคลาสหน้าต่างแบบใหม่ แอปพลิเคชันสามารถเพิ่มทั้งชั้นพิเศษไบต์และไบต์หน้าต่างเพิ่มเติม ซุปเปอร์คลาสตัวต้องไม่ใช้ต้นฉบับพิเศษไบต์สำหรับคลาสพื้นฐานหรือหน้าต่างเหตุผลเดียวกันว่า ระดับชั้นย่อยการอินสแตนซ์หรือระดับชั้นย่อยส่วนกลางที่ไม่ควรใช้เหล่านั้น ยัง ถ้าโปรแกรมประยุกต์เพิ่มพิเศษไบต์สำหรับการใช้คลาสหรืออินสแตนซ์ของหน้าต่าง มันต้องอ้างอิงไบต์พิเศษที่สัมพันธ์กับจำนวนไบต์ที่ใช้ โดยคลาสพื้นฐานต้นฉบับพิเศษ แตกต่างกันเนื่องจากจำนวนไบต์ที่ถูกใช้ โดยคลาสพื้นฐานอาจแตกต่างไปจากรุ่นหนึ่งของชั้นฐานไปยัง ออฟเซ็ตเริ่มต้นสำหรับซุปเปอร์ที่คลาสของคุณเอง เพิ่มไบต์อาจยังไปจากรุ่นหนึ่งของฐานชั้นถัดไป.

Index