MME에서 MIDI 포트 이름을 읽을 때, 이름은 ANSI Codepage를 사용하여 인코딩 된 멀티 바이트 문자열입니다.이 코드는 기본적으로 내 앱에서 사용합니다. DirectMusic 드라이버에서 해당 이름을받을 때 이름은 OEM 코드 페이지로 인코딩 된 넓은 문자열입니다. 코드 페이지에 대한 간략한 정보는 this article by Raymond Chen을 참조하십시오.MME 및 DirectMusic을 사용할 때 ANSI 또는 OEM 코드 페이지?
내 독일어 시스템에서, 이것은 ANSI 하나 밝혀 현재 코드 페이지를 사용할 때, 나는 후자는 잘못된 것으로, DirectMusic의에서 "ö톤 Audioger"을 "Audiogerät"를 얻을 MME에서하고 있음을 의미 . 이 성을 대신 OEM 인코딩으로 처리하면 해결됩니다.
그렇다면 해당 코드를 디코딩 할 코드 페이지를 어떻게 알 수 있습니까? 왜 DirectMusic에서 온 이름이 다른 방식으로 인코딩 되나요? 그것은 USB 드라이버에서 오는가요? COM 프레임 워크? DirectMusic? 내 MIDI 포트의 이름을 읽을 때 사용할 코드 페이지를 어떻게 알 수 있습니까? 정보에 대한
:
- 나는 코드 페이지를 사용하기위한 인수로
CP_ACP
및CP_OEMCP
로 변환을 수행 할 수MultiByteToWideChar()
및WideCharToMultiByte()
기능을 사용합니다.CP_ACP
(ANSI) 코드 페이지를 사용하여 나는 MME 하위 시스템에서 MIDI 포트 정보를 얻을 수midiInGetDeviceCaps()
를 사용 - ...
- ... 그리고 변환
MIDIINCAPS.szPname
. 나는 DirectMusic의에서 포트 정보를 얻을 수IID_IDirectMusic8::EnumPort()
를 사용 - ...
- ... 그리고
CP_OEMCP
코드 페이지를 사용하여DMUS_PORTCAPS.wszDescription
을 변환합니다.
코드 예제 나 최소한 사용하고있는 특정 Win32 함수의 이름을 알려주시겠습니까? – user9876
일반적으로이 "OEM 코드 페이지"는 IBM CP437 (미국)입니다. 나머지 시간은 아마도 IBM CP850 (유럽) 일 것입니다. –