TN020: ID การตั้งชื่อ และหมายเลขข้อตกลง

หมายเหตุนี้อธิบายถึงการตั้งชื่อ 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)

Index