หมายเหตุนี้อธิบายถึงการตั้งชื่อ ID และแบบแผนการลำดับเลขใช้ MFC 2.0 สำหรับทรัพยากร คำสั่ง สาย ควบคุม และ windows เด็ก?
ปัญหา
MFC ID การตั้งชื่อและหมายเลขข้อตกลงมีวัตถุประสงค์เพื่อตอบสนองความต้องการดังต่อไปนี้:
ภาพรวมของรหัสนำหน้าชื่อ
มีหลายประเภทหรือชนิดของรหัสในโปรแกรมประยุกต์ แบบแผนการตั้งชื่อ MFC ID กำหนดเลขนำหน้าที่แตกต่างกันสำหรับชนิดทรัพยากรต่าง ๆ?
MFC ใช้คำนำหน้า "IDR_" การอ้างถึงเป็น ID ทรัพยากรที่ใช้กับชนิดทรัพยากรหลายชนิด ตัวอย่างเช่น หน้าต่างเฟรมที่กำหนด "IDR_" ค่าเดียวกันใช้เพื่ออ้างอิงถึงทรัพยากรที่เมนู เร่งความเร็ว สายอักขระ และไอคอนทั้งหมดในครั้งเดียว?
IDR_ | ชนิดของทรัพยากรหลายชนิด (ใช้สำหรับเมนู Accelerators เป็นหลัก)? |
IDD_ | สำหรับแหล่งข้อมูลของแม่แบบโต้ตอบ (ตัวอย่างเช่นIDD_DIALOG1)? |
IDC_ | สำหรับทรัพยากรของเคอร์เซอร์? |
IDI_ | สำหรับทรัพยากรไอคอน? |
IDB_ | สำหรับทรัพยากรบิตแมป? |
IDS_ | สำหรับสายทรัพยากร? |
หมายเหตุค่า IDS_ สำหรับทรัพยากรสตริงที่มี ID ส่งผ่านไปยังLoadString ใช้งานจริงของสายอักขระตารางสตริ 16 ร่วมกันของกลุ่มทรัพยากรเป็นส่วนหนึ่ง?
ภายในทรัพยากรการโต้ตอบ เราทำตามแบบแผนการของ:
IDOK,IDCANCEL | สำหรับปุ่มกดมาตรฐานรหัส? |
IDC_ | สำหรับตัวควบคุมในการโต้ตอบอื่น? |
ยังมีใช้คำนำหน้า "IDC_" สำหรับเคอร์เซอร์ ความขัดแย้งนี้ตั้งชื่อมักไม่มีปัญหาเนื่องจากโปรแกรมประยุกต์แบบทั่วไปจะมีเพียงไม่กี่เคอร์เซอร์และควบคุมการโต้ตอบเป็นจำนวนมาก?
ภายในทรัพยากรเมนู เราทำตามแบบแผนการของ:
IDM_ | สำหรับรายการเมนูที่ไม่ได้ใช้คำสั่งสถาปัตยกรรม MFC? |
ID_ | สำหรับคำสั่งเมนูสินค้าที่ใช้สถาปัตยกรรมสั่ง MFC? |
คำสั่งที่ทำตามคำสั่ง MFC สถาปัตยกรรมต้องมีการจัดการการสั่งON_COMMANDและอาจมีการจัดการON_UPDATE_COMMAND_UI ถ้าตัวจัดการคำสั่งเหล่านี้ทำตามคำสั่งสถาปัตยกรรม MFC พวกเขาจะทำงานได้อย่างถูกต้องว่าเขาเหล่านั้นถูกผูกไว้กับรายการเมนู ปุ่มแถบเครื่องมือหรือแถบปุ่มโต้ตอบ ID_ เดียวกันถูกใช้สำหรับสายพร้อมท์เมนูแสดงบนแถบข้อความของโปรแกรม ส่วนใหญ่ของรายการเมนูในโปรแกรมประยุกต์ของคุณควรทำตามแบบแผนการสั่ง MFC ทั้งหมดของรหัสคำสั่งมาตรฐาน (ตัวอย่างเช่นID_FILE_NEW) ตามแบบแผนนี้?
MFC ยังใช้ "IDP_" เป็นรูปแบบเฉพาะของสายอักขระ (นั่นคือ แทนที่เป็นของ "IDS_") สายอักขระที่ มีคำนำหน้า "IDP_" "พร้อมท์ นั่นคือ สายอักขระที่ใช้ในกล่องข้อความได้ ประกอบด้วยสายอักขระ "IDP_" "% 1" และ "% 2" เป็นผู้ถือตำแหน่งของสายอักขระที่ถูกกำหนด โดยโปรแกรมนั้น สายอักขระ "IDP_" มักจะมีหัวข้อวิธีใช้ ในขณะที่สายอักขระ "IDS_" ไม่ สายอักขระ "IDP_" อยู่เสมอถิ่น ในขณะที่สายอักขระ "IDS_" อาจ หรือไม่อาจเป็นถิ่น?
ไลบรารี MFC ยังใช้คำนำหน้า "IDW_" เป็นรูปแบบเฉพาะของตัวควบคุมรหัส (นั่นคือ แทนที่เป็นของ "IDC_") รหัสเหล่านี้ถูกกำหนดให้กับเด็ก windows เช่นมุมมองและ splitters โดยคลาสที่กรอบ MFC Id ที่ใช้งานอยู่หน้าด้วย "AFX_"?
ภาพรวมของแบบแผนการลำดับเลข ID
ต่อไปนี้แสดงช่วงถูกต้องสำหรับรหัสของชนิดระบุ บางส่วนของข้อจำกัดมีข้อจำกัดทางเทคนิคในการใช้งานในขณะที่ผู้อื่นเป็นเพียงข้อตกลงเพื่อป้องกันไม่ให้รหัสของคุณ colliding with Windows รหัสที่กำหนดไว้ล่วงหน้าหรือ MFC เริ่มต้นใช้งาน?
นอกจากนี้เราขอแนะนำคุณไม่ได้กำหนดรหัสภายนอกช่วงที่จะแนะนำ แม้ว่าขีดจำกัดล่างของจำนวนมากในช่วงนี้คือ 1 (0 คือไม่ใช้), แบบแผนโดยทั่วไปเริ่มปฏิบัติใช้รหัส 100 หรือ 101?
คำนำหน้า | ชนิดของทรัพยากร | ช่วงที่ถูกต้อง |
IDR_ | หลาย | 1 - gt 0x6FFF(&G) |
IDD_ | ต้นแบบการโต้ตอบ | 1 - gt 0x6FFF(&G) |
IDC_, IDI_, IDB_ | เคอร์เซอร์ ไอคอน บิตแมป | 1 - gt 0x6FFF(&G) |
IDS_, IDP_ | สายทั่วไป | 1 - gt 0x7FFF(&G) |
ID_ | คำสั่ง | 0x8000 - gt 0xDFFF(&G) |
IDC_ | ตัวควบคุม | 8 - gt 0xDFFF(&G) |
เหตุผลข้อจำกัดเหล่านี้ช่วง:
หมายเหตุด้านเทคนิคตามหมายเลข|nbsp หมายเหตุด้านเทคนิคตามประเภท(&N)