PRB:ReadConsoleInput() & PeekConsoleInput() Don't Receive DBCSID: Q146448
|
The Windows 95 console APIs ReadConsoleInput() and PeekConsoleInput() which
are used to read data from a console input buffer do not receive DBCS key
codes when the IME is activated.
This behavior is different from Windows NT console support in which the
ReadConsoleInput() and PeekConsoleInput() APIs are enabled to receive key
event records for converted the DBCS data from the keyboard buffer similar
to an IME-enabled Windows-based application. In a Windows NT console
application, once the DBCS character is determined, Windows NT posts the
converted character bytes to the console buffer.
The Window 95 console architecture is based upon the Windows 3.1 MS-DOS BOX
rather than console support in DBCS versions of Windows NT. In Windows 95,
the console is working on top of the MS-DOS BOX. This design is opposite to
DBCS versions of Windows NT where all console character i/o is directed to
the Win32 subsystem.
Specifically, the Windows 95 implementation of ReadConsoleInput() and
PeekConsoleInput() hook interrupt 0x09 and return keyboard events back
to the application. Because existing MS-DOS IMEs and the VIME VxD hook
interrupt 0x16 rather than interrupt 0x09, ReadConsoleInput() and
PeekConsoleInput() are unable to receive DBCS characters composed by IMEs.
This behavior is by design. This architectural difference between DBCS versions of Microsoft Windows 95 and Windows NT is confirmed. The Windows 95 console-IME functionality may change in future versions to become more compatible with Windows NT. We will post new information here in the Microsoft Knowledge Base as it becomes available.
Additional query words: FESDK Far East
Keywords :
Version : 4.00
Platform : WINDOWS
Issue type :
Last Reviewed: March 5, 1999