ページ

2007-06-30

極東フラグ

WM6 SDKでToday画面用プログラムのサンプルを眺めていると、WM_PAINTメッセージの処理中に BOOL bIsFarEastという変数が使用されていました。
 
極東フラグ?
何に使われているのでしょう?
 
セットされている場所は次のようになっていました。
システムのロケールが中国語、韓国語、日本語の場合は極東フラグをセットしているようです。
switch (PRIMARYLANGID(LANGIDFROMLCID(GetSystemDefaultLCID())))
{
case LANG_CHINESE:
case LANG_KOREAN:
case LANG_JAPANESE:
    bIsFarEast = TRUE;
    break;
    
default:
    bIsFarEast = FALSE;
    break;
}
 
ここでセットされた極東フラグはすぐ下で使われていました。
hSysFont = (HFONT) GetStockObject(SYSTEM_FONT);
GetObject(hSysFont, sizeof(LOGFONT), &lf);
// If it is far east, use a normal font at 9 points,
//  otherwise use a bold font as 8 points
if (bIsFarEast)
{
    lf.lfWeight = FW_NORMAL;
    // Calculate the font size, making sure to round the result to the nearest integer
    lf.lfHeight = (long) -((9.0 * (double)GetDeviceCaps(hDC, LOGPIXELSY) / 72.0)+.5);
}
else
{
    lf.lfWeight = FW_BOLD;
    // Calculate the font size, making sure to round the result to the nearest integer
    lf.lfHeight = (long) -((8.0 * (double)GetDeviceCaps(hDC, LOGPIXELSY) / 72.0)+.5);
}
 
極東の場合は9ポイント、極東以外の場合は太字の8ポイントが標準フォントになっているようです。
Today画面用のプログラムを書くときには憶えておきましょう。
国際化されたプログラムなんて書くことはないでしょうけど...。
 

0 件のコメント: