나는 윈도우 모바일 MAPI를 통해 들어오는 전자 메일과 SMS를 처리하는 프로그램을 개발 중이다. 코드는 기본적으로 다음과 같이 표시됩니다.PR_BODY_A 태그 (Windows Mobile)로 MAPI 메시지에서 인코딩하는 방법은 무엇입니까?
ulBodyProp = PR_BODY_A;
hr = piMessage->OpenProperty(ulBodyProp, NULL, STGM_READ, 0, (LPUNKNOWN*)&piStream);
if (hr == S_OK)
{
// ... get body size in bytes ...
STATSTG statstg;
piStream->Stat(&statstg, 0);
ULONG cbBody = statstg.cbSize.LowPart;
// ... allocate memory for the buffer ...
BYTE* pszBodyInBytes = NULL;
boost::scoped_array<BYTE> szBodyInBytesPtr(pszBodyInBytes = new BYTE[cbBody+2]);
// ... read body into the pszBodyInBytes ...
}
작동하며 메시지 본문이 있습니다. 문제는이 본문이 멀티 바이트 인코딩이며 유니 코드 문자열을 반환해야한다는 것입니다. 아마도 MultiByteToWideChar() 함수를 사용해야합니다. 그러나 어떻게 적용해야합니까? 단순히 UTF8이 아니기 때문에 CP_UTF8을 사용하는 것은 순진합니다. CP_ACP를 사용하면 가끔은 좋지만 때때로 그렇지 않습니다. 그래서, 내 질문은 : 어떻게 메시지 코드 페이지에 대한 정보를 검색 할 수 있습니다. MAPI는 어떤 기능을 제공합니까? 또는 MultiByteToWideChar() 이외의 멀티 바이트 문자열을 디코딩 할 수있는 방법이 있습니까?
감사합니다.
PR_BODY_W는 나에게 직접 유니 코드를 제공하며 사용할 수있을 때 아무런 문제가 없습니다. 나는 PR_BODY_A를 사용할 때 문제가있다. PR_RTF_COMPRESSED에 대해서는 조사해 보겠습니다. – SadSido