コンボボックスのロケール情報を取得          <TOP>


コンボボックスのロケール情報を取得します。リストボックスの場合は、LB_GETLOCALEを使います。

SendMessage ウィンドウにメッセージを送信

 

 

言語                   言語ID   言語グループ
--------------------------------------------------
英語(既定)             0409     西ヨーロッパと米国
フランス語             040c     西ヨーロッパと米国
スペイン語             0c0a     西ヨーロッパと米国
イタリア語             0410     西ヨーロッパと米国
スウェーデン語         041D     西ヨーロッパと米国
オランダ語             0413     西ヨーロッパと米国
ポルトガル語(ブラジル) 0416     西ヨーロッパと米国
フィンランド語         040b     西ヨーロッパと米国
ノルウェー語           0414     西ヨーロッパと米国
デンマーク語           0406     西ヨーロッパと米国
ハンガリー語           040e     中央ヨーロッパ
ポーランド語           0415     中央ヨーロッパ
ロシア語               0419     キリル言語
チェコ語               0405     中央ヨーロッパ
ギリシャ語             0408     ギリシャ語
ポルトガル語           0816     西ヨーロッパと米国
トルコ語               041f     トルコ語
日本語                 0411     日本語
韓国語                 0412     韓国語
ドイツ語               0407     西ヨーロッパと米国
簡体字中国語           0804     簡体字中国語
繁体字中国語           0404     繁体字中国語
アラビア語             0401     アラビア語
ヘブライ語             040d     ヘブライ語

 

'================================================================
'= コンボボックスのロケール情報を取得
'=    (CbGetLocale.bas)
'================================================================
#include "Windows.bi"

' ウィンドウにメッセージを送信
Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any)

#define CB_SHOWDROPDOWN &H14F           'コンボボックスのリストボックスの表示または非表示を切り替える
#define CB_GETLOCALE 346                '現在のコンボボックスのロケールを取得する(&H15A)
#define LB_GETLOCALE &H1A6              '現在のリストボックスのロケールを取得する

Var Shared Combo1 As Object
Var Shared Text1 As Object

Combo1.Attach GetDlgItem("Combo1") : Combo1.SetFontSize 14
Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Var i As Integer
    Var Ret As Long

    For i = 1 To 12
        Combo1.AddString Str$(i)
    Next i

    SetMousePointer 0
    Ret = Api_SendMessage(Combo1.GethWnd, CB_SHOWDROPDOWN, 1, ByVal 0)
End Sub

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var LocaleInfo As Long

    'ロケール情報を取得
    LocaleInfo = Api_SendMessage(Combo1.GethWnd, CB_GETLOCALE, 0, ByVal CLng(0))

    '取得したロケールIDから言語IDを取り出し表示
    Text1.SetWindowtext "言語ID:" & Hex$(LocaleInfo And &H7FFF)
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End