Esempio n. 1
0
void CIme::SetImeIcon()
{
	HICON hIcon = NULL;
	if( ImmIsIME( m_hCurKL ) )
	{
		char buf[256];
		ImmGetIMEFileName( m_hCurKL, buf, 256 );
		HMODULE hDll = LoadLibrary( buf );
		EnumResourceNames( hDll, RT_GROUP_ICON, (ENUMRESNAMEPROC)EnumResNameProc, (int32)(void*)&hIcon );
		FreeLibrary( hDll );
	}

	m_ImeImage.Release();
	if( hIcon )
	{
		IGraphic* pGraphic = CGraphic::GetInst();

		CFRect rt = CFRect( 0, 0, 16, 16 );
		m_ImeImage.AddImage( pGraphic, -1, NULL, &rt, CFPos(0.0f, 0.0f), 0xffffffff );
		pGraphic->CreateTexture( 16, 16, TF_UNKNOW, &m_ImeImage.GetImage(0).pTexture );

		ICONINFO Info; 
		GetIconInfo( hIcon, &Info );
		m_ImeImage.GetImage(0).pTexture->FillFromHBitmap( Info.hbmColor, Info.hbmMask );
		::DestroyIcon( hIcon );
	}

	OnImeChanged();
}
Esempio n. 2
0
HKL GetMyHKL()
{
    DWORD dwSize;
    DWORD dwi;
    HKL hKL = 0;
    HKL *lphkl;

    dwSize = GetKeyboardLayoutList(0, NULL);

    lphkl = (HKL *)GlobalAlloc(GPTR, dwSize * sizeof(DWORD));

    if (!lphkl)
        return NULL;

    GetKeyboardLayoutList(dwSize, lphkl);


    for (dwi = 0; dwi < dwSize; dwi++)
    {
        char szFile[32];
        HKL hKLTemp = *(lphkl + dwi);
        ImmGetIMEFileName(hKLTemp, szFile, sizeof(szFile));

        if (!_tcsicmp(szFile, FREEPYFILENAME))
        {
             hKL = hKLTemp;
             goto exit;
        }
    }
exit:

    GlobalFree((HANDLE)lphkl);
    return hKL;
}
Esempio n. 3
0
BOOL
GetIMEName(
    PCONSOLE_TABLE ConTbl
)
{
    WCHAR buf[MaxBufSize];
    WCHAR name[MaxBufSize];
    DWORD bufsize = MaxBufSize;
    LONG lResult;
    HKEY hkLayout;
    int i;

    ConTbl->LayoutName[0] = TEXT('\0');
    ConTbl->GuideLine[0] = TEXT('\0');

    if (ImmEscape(ConTbl->hklActive, ConTbl->hIMC_Current, IME_ESC_IME_NAME, (LPTSTR)&name) == 0)
    {
        if (!ImmGetIMEFileName(ConTbl->hklActive, (LPTSTR)&name, MaxBufSize ) )
        {
            if (GetKeyboardLayoutName((LPTSTR)&name) )
            {
                /*
                 * quick dirty ImmIsIME
                 */
                if (name[0] != TEXT('E') &&
                        name[0] != TEXT('e'))
                {
                    return FALSE;
                }

                lstrcpy( buf, KBDLAYOUT );
                lstrcat( buf, KBDSEPALATER );
                lstrcat( buf, name );
                lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
                                       (LPCTSTR)buf,
                                       0,
                                       KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS,
                                       &hkLayout );
                if ( lResult == ERROR_SUCCESS ) {
                    lResult = RegQueryValueEx( hkLayout,
                                               KBDLAYOUTTEXT,
                                               NULL,
                                               NULL,
                                               (LPBYTE)ConTbl->LayoutName,
                                               &bufsize );
                    RegCloseKey( hkLayout );
                    if (ConTbl->LayoutName[0] != TEXT('\0')) {
                        for (i = 0; i < 8; i ++) {
                            if ((ConTbl->LayoutName[0] == IMECGuide[i][0]) &&
                                    (ConTbl->LayoutName[1] == IMECGuide[i][1]) ) {
                                lstrcpyn(&(ConTbl->GuideLine[0]), &(IMECGuide[i][2]), IMECGuideLen+1);
                                break;
                            }
                        }
                    }
                }
                else {
                    return FALSE;
                }
            }
            else
            {
                return FALSE;
            }
        }
        else
        {
            lstrcpy( ConTbl->LayoutName, name );
        }
    }
    else
    {
        lstrcpy( ConTbl->LayoutName, name);
    }

    return TRUE;
}