วิธีการใช้แป้นพิมพ์ลัดภายในกล่องโต้ตอบโมดอลใน c ++ Visual

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

สรุป

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

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

แป้นพิมพ์ส่วนช่วยดำเนินการประมวลผลการเรียกตัว ฟังก์ชัน TranslateAccelerator() ในการวนรอบข้อความหลักของโปรแกรมประยุกต์ อย่างไรก็ตาม สำหรับกล่องโต้ตอบโมดอล ตัวจัดการกล่องโต้ตอบความวนรอบที่มีอยู่แล้ว (ภาย ลงใน Windows) ถูกใช้ในการแปล และการจัดส่งข้อความ หลักสูตร เนื่องจาก วนรอบข้อความนี้ไม่ได้รับการออกแบบการประมวลผลส่วนช่วยดำเนินการ มันไม่เรียกตัว ฟังก์ชัน TranslateAccelerator()

การใช้แป้นพิมพ์ลัดของกระบวนการในการ กล่องโต้ตอบโมดอล คุณต้องยกเลิกกล่องโต้ตอบ PreTranslateMessage() ฟังก์ชันและลองการประมวลผลข้อความเป็นการเร่งการเรียก :: TranslateAccelerator() หากวิธีนี้ล้มเหลว การประมวลผลแล้ว ยังคงดำเนินต่อไปด้วย เรียกคลาสพื้นฐาน PreTranslateMessage()

สำหรับวัตถุประสงค์ของ บทความนี้ เราเพิ่มฟังก์ชันการทำงานการคีย์ลัดไปยังกล่องโต้ตอบ AboutBox ของโปรแกรมประยุกต์ MFC MDI:
  1. สร้างโปรแกรมประยุกต์ MFC MDI ใหม่ที่ชื่อว่าการทดสอบ
  2. เพิ่มปุ่ม มี ID ทรัพยากร "IDC_BUTTON1" ไป AboutBox ทรัพยากรในกล่องโต้ตอบ
  3. คลิกสองครั้งที่ปุ่มเพื่อเพิ่มตัวจัดการสำหรับปุ่มนี้ และแทรกโค้ดต่อไปนี้เป็นตัวบ่งชี้ที่คีย์ตัวเร่งความเร็วในการทำงาน:
    AfxMessageBox("Hello");
  4. แทรกตารางทรัพยากรตัวเร่งความเร็วใหม่
  5. เพิ่มคีย์การเร่งลงในตาราง ด้วยการทำการเชื่อมโยง F5 คีย์การ ID ทรัพยากร "IDC_BUTTON1"
  6. เพิ่มสมาชิกตัวแปร m_hAccelTable คลาส CAboutBox:
    HACCEL  m_hAccelTable;
  7. เตรียมใช้งาน m_hAccelTable ใน CAboutBox::CAboutBox:
    m_hAccelTable = LoadAccelerators(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_ACCELERATOR1));
  8. ใช้ตัวช่วยสร้างรหัส (ตัวช่วยสร้างคลาสใน Visual c ++ 6.0 และ ก่อนหน้านี้) เมื่อต้องการเพิ่มตัวแทนของ PreTranslateMessage สำหรับการ CAboutDlg
  9. ในวิธีการ CAboutBox::PreTranslateMessage() เพิ่มการ บรรทัดโค้ดต่อไปนี้:
    BOOL CAboutDlg::PreTranslateMessage(MSG* pMsg) {
       if (m_hAccelTable) {
          if (::TranslateAccelerator(m_hWnd, m_hAccelTable, pMsg)) {
             return(TRUE);
          }
       }
       return CDialog::PreTranslateMessage(pMsg);
    
    }
  10. คอมไพล์ และรัน CTestApp

ผลลัพธ์ตัวเร่งความเร็วแป้น F5 ทริกเกอร์จัดการ button1 ทันทีเมื่อเครื่อง CAboutBox ไม่ได้มีการใช้งาน

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับกระบวนการหลักเร่ง ภายในกล่องโต้ตอบโมดอล โปรดดูบทความต่อไปนี้ใน Microsoft Knowledge Base:
100770รายละเอียด: การใช้แป้นพิมพ์ลัดกับหน้าต่างหลักกล่องโต้ตอบโมดอล

คุณสมบัติ

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

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

 

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