0

我有

DWORD dwThreadID = GetCurrentThreadId();
HKL hCurKeyboard = GetKeyboardLayout(dwThreadID);

返回HKL当前键盘我需要将它与一些字符进行比较

char defaultLanguage[64]="0x04090409";

我如何将 HKLhCurKeyboarddefaultLanguage

或者我怎样才能用这个值创建一些 HKL"0x04090409"

        char defaultLanguageLayout[64] = "0x04090409";
        DWORD dwThreadID = GetCurrentThreadId();
        HKL hCurKeyboard = GetKeyboardLayout(dwThreadID);
//->>       if(hCurKeyboard!=defaultLanguageLayout) 
        {

            UINT i;
            HKL hklCurrent;
            UINT uLayouts;
            HKL * lpList;

            uLayouts = GetKeyboardLayoutList(0, NULL);
            lpList = (HKL*) malloc(uLayouts * sizeof(HKL));
            uLayouts = GetKeyboardLayoutList(uLayouts, lpList);

            for(i=0; i<uLayouts; i++)
            {
                hklCurrent = *(lpList + i);

//->>               if(hklCurrent == defaultLanguageLayout){
                    ActivateKeyboardLayout(hklCurrent, 0);
                }
            }

提前致谢。

4

1 回答 1

1

根据http://msdn.microsoft.com/en-us/library/windows/desktop/ms646305(v=vs.85).aspx,最好的做法是:

    HKL defaultLanguageLayout = LoadKeyboardLayout("0x04090409", KLF_SUBSTITUTE_OK);
    DWORD dwThreadID = GetCurrentThreadId();
    HKL hCurKeyboard = GetKeyboardLayout(dwThreadID);
    if(hCurKeyboard!=defaultLanguageLayout) {

但是我对键盘布局的了解还不够,无法知道第二个参数是否正确。

于 2012-06-08T17:12:57.727 回答