ฟังก์ชันToAsciiแปลรหัสเสมือนของคีย์ที่ระบุและสถานะแป้นพิมพ์ไปอักขระหรือตัวอักษรที่สอดคล้องกัน ฟังก์ชันการแปลรหัสโดยใช้เค้าโครงแป้นพิมพ์ของจริงที่ระบุหมายเลขอ้างอิงการเค้าโครงแป้นพิมพ์ที่กำหนดและภาษาสำหรับการป้อนค่า.
int ToAscii ( UINT uVirtKey, / / เสมือนคีย์รหัสUINTuScanCode, / / สแกนโค้ดPBYTElpKeyState, / / คีย์สถานะอาร์เรย์LPWORDlpChar, / / บัฟเฟอร์สำหรับคีย์การแปลUINTuFlags / / ค่าสถานะใช้งานอยู่เมนู);
ต่ำบิต ถ้าตั้งค่า การบ่งชี้ว่า คีย์ toggled บน ในฟังก์ชันนี้ เท่าบิตสลับแป้น caps lock มีความเกี่ยวข้อง สลับสถานะของ num lock และเลื่อนล็อกคีย์จะถูกละเว้น.
ถ้าคีย์การระบุ คีย์การตาย ค่าส่งกลับเป็นค่าลบ มิฉะนั้น เป็นหนึ่งในค่าต่อไปนี้.
| ค่า | ความหมาย |
|---|---|
| 0 | แป้นเสมือนที่ระบุได้ไม่มีการแปลสำหรับสถานะปัจจุบันของแป้นพิมพ์. |
| 1 | หนึ่งอักขระถูกคัดลอกไปยังบัฟเฟอร์. |
| 2 | บัฟเฟอร์ที่ถูกคัดลอกอักขระสองตัว มักนี้จะเกิดขึ้นเมื่อไม่สามารถประกอบตายแป้นอักขระ (เน้นหรืออักขระพิเศษ) เก็บในเค้าโครงแป้นพิมพ์คีย์ที่ระบุที่เสมือนการฟอร์มตัวอักขระหนึ่งตัว. |
พารามิเตอร์ให้มาไปยังฟังก์ชันToAsciiอาจไม่เพียงพอในการแปลรหัสคีย์เสมือน เนื่องจากคีย์ตายก่อนหน้านี้จะถูกเก็บในเค้าโครงแป้นพิมพ์.
โดยปกติToAsciiทำการแปลตามรหัสคีย์เสมือน ในบางกรณี อย่างไรก็ตาม บิต 15 ของพารามิเตอร์uScanCodeอาจใช้เพื่อแยกความแตกต่างระหว่างแป้นกดและปล่อยแป้น ใช้การสแกนรหัสสำหรับชุดหมายเลขคีย์ALT + แปล.
แม้ว่า num lock อยู่สลับคีย์ที่มีผลต่อลักษณะการทำงานของแป้นพิมพ์ToAsciiละเว้นการตั้งค่าในการสลับ (บิตต่ำ) ของlpKeyState (VK_NUMLOCK เนื่องจากพารามิเตอร์uVirtKeyเพียงอย่างเดียวไม่เพียงพอสำหรับคีย์การเคลื่อนย้ายเคอร์เซอร์ (VK_HOME, VK_INSERT และอื่น ๆ) ที่แยกความแตกต่างจากปุ่มตัวเลข (VK_DECIMAL, VK_NUMPAD0 - VK_NUMPAD9).
nbsp Windows &NT:ต้องการเวอร์ชัน 3.1 หรือรุ่นที่ใหม่กว่า
Windows:ต้องใช้ Windows 95 หรือรุ่นที่ใหม่กว่า
Windows CE:ไม่สนับสนุน
หัวข้อ:ประกาศใน winuser.h
ไลบรารีที่นำเข้า:ใช้ user32.lib.
ภาพรวมการป้อนข้อมูลของแป้นพิมพ์แป้นพิมพ์ป้อนฟังก์ชัน OemKeyScan, ToUnicode, VkKeyScan