From: Tietew Date: 2008-06-24T11:59:55+09:00 Subject: [ruby-dev:35212] Re: Win32 Unicode console output On Mon, 23 Jun 2008 15:02:21 +0900 In article <20080623145742.1A66.KIMURA.KOICHI@canon.co.jp> [[ruby-dev:35203] Re: Win32 Unicode console output] KIMURA Koichi wrote: > #あーWriteConsoleWって 9xは使えない? リンクだけはできた気がします。 呼ぶと、GetLastError() が ERROR_CALL_NOT_IMPLEMENTED を返します。 少なくとも Win98 SE の KERNEL32.DLL がエクスポートしていることは確認。 --- MSVCR90 の実装: /*** *_putwch_nolock() - _putwch() core routine (locked version) * *Purpose: * Core _putwch() routine; assumes stream is already locked. * * [See _putwch() above for more info.] * *Entry: [See _putwch()] * *Exit: [See _putwch()] * *Exceptions: * *******************************************************************************/ wint_t __cdecl _putwch_nolock ( wchar_t ch ) { int size, num_written; static int use_w = 2; char mbc[MB_LEN_MAX +1]; if ( use_w) { if (_confh == -2) __initconout(); /* write character to console file handle */ if (_confh == -1) return WEOF; else if ( !WriteConsoleW( (HANDLE)_confh, (LPVOID)&ch, 1, &num_written, NULL ) ) { if ( use_w == 2 && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED) use_w = 0; else return WEOF; } else use_w = 1; } if ( use_w == 0) { size = WideCharToMultiByte( GetConsoleOutputCP(), 0, (LPWSTR)&ch, 1, mbc, MB_LEN_MAX, NULL, NULL ); if ( (_confh == -1) || !WriteConsole( (HANDLE)_confh, (LPVOID)mbc, size, &num_written, NULL ) ) /* return error indicator */ return WEOF; } return ch; } -- Tietew Blog: http://www.tietew.jp/ PGP: 26CB 71BB B595 09C4 0153 81C4 773C 963A D51B 8CAA