2025-04-27 07:49:33 -04:00

131 lines
3.8 KiB
C++

// =================================================================================
// MultLang.cpp
// Multilanguage support for OE.
// Created at 10/12/98 by YST
// Copyright (c)1993-1998 Microsoft Corporation, All Rights Reserved
// =================================================================================
#include "pch.hxx"
#include "multlang.h"
#include "fonts.h"
#include "shared.h"
#include "mimeutil.h"
void GetMimeCharsetForTitle(HCHARSET hCharset, LPINT pnIdm, LPTSTR lpszString, int nSize, BOOL fReadNote)
{
UINT uiCodePage = 0 ;
INETCSETINFO CsetInfo ;
int i =0;
if (lpszString)
lpszString[0] = '\0';
if ( hCharset == NULL )
return ;
// get CodePage from HCHARSET
MimeOleGetCharsetInfo(hCharset,&CsetInfo);
uiCodePage = CsetInfo.cpiInternet ;
// bug # 45377 - message language title
for(i = 0; OENonStdCPs[i].Codepage != 0; i++)
{
if(OENonStdCPs[i].Codepage == uiCodePage)
{
if(OENonStdCPs[i].cpReadTitle)
uiCodePage = OENonStdCPs[i].cpReadTitle;
break;
}
}
_GetMimeCharsetLangString(FALSE, GetMapCP(uiCodePage, fReadNote), pnIdm, lpszString, nSize);
return ;
}
BOOL fCheckEncodeMenu(UINT uiCodePage, BOOL fReadNote)
{
BOOL fReturn = TRUE;
int i =0;
BOOL fUseSIO = SUCCEEDED(g_lpIFontCache->GetJP_ISOControl(&fUseSIO));
for(i = 0; OENonStdCPs[i].Codepage != 0; i++)
{
if(OENonStdCPs[i].Codepage == uiCodePage)
{
if(fReadNote)
{
if(!OENonStdCPs[i].cpReadMenu)
return(FALSE);
else if(OENonStdCPs[i].UseSIO)
{
if((OENonStdCPs[i].UseSIO == 1) && fUseSIO)
return(FALSE);
if((OENonStdCPs[i].UseSIO == 2) && !fUseSIO)
return(FALSE);
}
}
else // Send note
{
if(!OENonStdCPs[i].cpSendMenu)
return(FALSE);
}
}
}
return(fReturn);
}
// Map one code page to another
UINT GetMapCP(UINT uiCodePage, BOOL fReadNote)
{
int i =0;
INETCSETINFO CsetInfo ;
for(i = 0; OENonStdCPs[i].Codepage != 0; i++)
{
if(OENonStdCPs[i].Codepage == uiCodePage)
{
if(fReadNote)
{
if(OENonStdCPs[i].cpRead)
return(OENonStdCPs[i].cpRead);
else
{
HCHARSET hCharset = NULL;
if(SUCCEEDED(HGetDefaultCharset(&hCharset)) && SUCCEEDED(MimeOleGetCharsetInfo(hCharset, &CsetInfo)))
return(CsetInfo.cpiInternet);
}
}
else // Send note
{
if(OENonStdCPs[i].cpSend)
return(OENonStdCPs[i].cpSend);
else
{
if(SUCCEEDED(MimeOleGetCharsetInfo(g_hDefaultCharsetForMail,&CsetInfo)))
return(CsetInfo.cpiInternet);
}
}
}
}
return(uiCodePage);
}
// depending on registry setting, return correct hCharset for iso-2022-jp encoding
HCHARSET GetJP_ISOControlCharset(void)
{
BOOL fUseSIO;
Assert(g_lpIFontCache);
HRESULT hr = g_lpIFontCache->GetJP_ISOControl(&fUseSIO);
if (FAILED(hr))
fUseSIO = FALSE;
if (fUseSIO)
return GetMimeCharsetFromCodePage(50222); // _iso-2022-jp$SIO
else
return GetMimeCharsetFromCodePage(50221); // _iso-2022-jp$ESC
}